• Keine Ergebnisse gefunden

VL-10: LOOP und WHILE Programme II (Berechenbarkeit und Komplexit¨at, WS 2018) Gerhard Woeginger

N/A
N/A
Protected

Academic year: 2022

Aktie "VL-10: LOOP und WHILE Programme II (Berechenbarkeit und Komplexit¨at, WS 2018) Gerhard Woeginger"

Copied!
97
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

VL-10: LOOP und WHILE Programme II

(Berechenbarkeit und Komplexit¨ at, WS 2018) Gerhard Woeginger

WS 2018, RWTH

(2)

Organisatorisches

N¨achste Vorlesung:

Donnerstag, Dezember 6, 12:30–14:00 Uhr, Aula

Freitag, Dezember 7: Tag der Informatik / Keine Vorlesung Webseite:

http://algo.rwth-aachen.de/Lehre/WS1819/BuK.php (−→ Arbeitsheft zur Berechenbarkeit)

(3)

Wiederholung

(4)

Wdg.: Programmiersprache LOOP

Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind:

Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind:

Variablen: x0 x1 x2 x3 . . . Konstanten: 0 und 1 Symbole: := + ;

Schl¨usselw¨orter: LOOP DO ENDLOOP

(5)

Wdg. LOOP / Semantik

Ein LOOP ProgrammP mitk Variablen

berechnet einek-stellige Funktion der Form[P] : Nk →Nk. IstP die Zuweisungxi :=xj+c,

so ist[P](r1, . . . ,rk) = (r1, . . . ,ri−1,rj+c,ri+1, . . . ,rk).

IstP=P1;P2 eine Hintereinanderausf¨uhrung, so ist[P](r1, . . . ,rk) = [P2]([P1](r1, . . . ,rk)).

IstP=LOOPxi DOQENDLOOPein LOOP-Konstrukt, so gilt[P](r1, . . . ,rk) = [Q]ri(r1, . . . ,rk).

(6)

Wdg.: WHILE / Semantik

Die Eingabe ist in den Variablen x1, . . . ,xm enthalten.

Alle anderen Variablen werden mit0initialisiert.

Das Resultat eines WHILE Programms ist die Zahl, die sich am Ende der Abbarbeitung in der Variablenx0 ergibt.

Das ProgrammWHILExi6=0 DOP ENDWHILEhat folgende Bedeutung:

P wird solange ausgef¨uhrt, bisxi den Wert0erreicht.

Ein WHILE ProgrammP mitk Variablen

berechnet einek-stellige Funktion der Form[P] : Nk →Nk. IstP=WHILExi6=0 DOQ ENDWHILE ein WHILE-Konstrukt,

so ist[P](r1, . . . ,rk) = [Q]`(r1, . . . ,rk)f¨ur die kleinste Zahl`, f¨ur die diei-te Komponente von[Q]`(r1, . . . ,rk)gleich0ist.

Falls solch ein `nicht existiert, so ist[P](r1, . . . ,rk)undefiniert.

(7)

Wdg.: WHILE versus LOOP

Es gibt WHILE Programme, die nicht terminieren.

LOOP Programme terminieren immer.

Jede LOOP-berechenbare Funktionf:Nk →Nist auch WHILE-berechenbar.

Satz

Die Programmiersprache WHILE ist Turing-m¨achtig.

(8)

Vorlesung VL-10

LOOP und WHILE Programme II

Die Ackermann Funktion

Eigenschaften der Ackermann Funktion Ackermann Funktion und LOOP Programme

(9)

M¨ achtigkeit von LOOP

Vermutung von David Hilbert (1926)

Die Menge der LOOP-berechenbaren FunktionenNk →N

stimmt mit der Menge der berechenbaren totalen Funktionen ¨uberein.

(Als Teil von Hilberts Programm, mit “finiten” Methoden die

Widerspruchsfreiheit der Axiomensysteme der Mathematik nachzuweisen.)

Satz (Ackermann, 1926/1928)

Es existieren berechenbare totale FunktionenNk →N, die nicht LOOP-berechenbar sind.

(10)

M¨ achtigkeit von LOOP

Vermutung von David Hilbert (1926)

Die Menge der LOOP-berechenbaren FunktionenNk →N

stimmt mit der Menge der berechenbaren totalen Funktionen ¨uberein.

(Als Teil von Hilberts Programm, mit “finiten” Methoden die

Widerspruchsfreiheit der Axiomensysteme der Mathematik nachzuweisen.)

Satz (Ackermann, 1926/1928)

Es existieren berechenbare totale FunktionenNk →N, die nicht LOOP-berechenbar sind.

(11)

Wilhelm Ackermann (1896–1962)

Wikipedia: Wilhelm Friedrich Ackermann war ein deutscher Mathematiker (und ein Sch¨uler von Hilbert).

1926 entdeckte er die nach ihm benannte Ackermann Funktion, die in der Bere- chenbarkeitstheorie eine wichtige Rolle spielt. Ackermann war Gymnasiallehrer an verschiedenen Schulen in M¨unster, Burgsteinfurt und L¨udenscheid; er hielt auch Vorlesungen an der Universit¨at M¨unster.

D. Hilbert und W. Ackermann (1928):

“Grundz¨uge der theoretischen Logik”

(12)

Die Ackermann Funktion

(13)

Ackermann Funktion: Definition

Definition

Die Ackermann FunktionA:N2→Nist folgendermassen definiert:

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Wilhelm Ackermann:

“Zum Hilbertschen Aufbau der reellen Zahlen”

Mathematische Annalen 99 (1928), pp. 118–133

ozsa P´eter:

“Konstruktion nichtrekursiver Funktionen”

Mathematische Annalen 111 (1935), pp. 42–60

(14)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1: A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5 Beobachtung

A(1,n) =n+2

(15)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5 Beobachtung

A(1,n) =n+2

(16)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5 Beobachtung

A(1,n) =n+2

(17)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2 A(1,1) =

A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5 Beobachtung

A(1,n) =n+2

(18)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3

A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5 Beobachtung

A(1,n) =n+2

(19)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5

Beobachtung A(1,n) =n+2

(20)

Ackermann Funktion: Beispiele (1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=1:

A(1,0) =A(0,1) =2

A(1,1) =A(0,A(1,0)) =A(1,0) +1=3 A(1,2) =A(0,A(1,1)) =A(1,1) +1=4 A(1,3) =A(0,A(1,2)) =A(1,2) +1=5

Beobachtung A(1,n) =n+2

(21)

Ackermann Funktion: Beispiele (2)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=2:

A(2,0) =A(1,1) =3

A(2,1) =A(1,A(2,0)) =A(2,0) +2=5

A(2,2) =A(1,A(2,1)) =A(2,1) +2=7

Beobachtung

A(2,n) =2n+3

(22)

Ackermann Funktion: Beispiele (2)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=2:

A(2,0) =A(1,1) =3

A(2,1) =A(1,A(2,0)) =A(2,0) +2=5 A(2,2) =A(1,A(2,1)) =A(2,1) +2=7

Beobachtung

A(2,n) =2n+3

(23)

Ackermann Funktion: Beispiele (2)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=2:

A(2,0) =A(1,1) =3

A(2,1) =A(1,A(2,0)) =A(2,0) +2=5 A(2,2) =A(1,A(2,1)) =A(2,1) +2=7

Beobachtung A(2,n) =

2n+3

(24)

Ackermann Funktion: Beispiele (2)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Ein paar Beispiele f¨urm=2:

A(2,0) =A(1,1) =3

A(2,1) =A(1,A(2,0)) =A(2,0) +2=5 A(2,2) =A(1,A(2,1)) =A(2,1) +2=7

Beobachtung

A(2,n) =2n+3

(25)

Ackermann Funktion: Beispiele (3)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Und ein paar Beispiele f¨urm=3:

A(3,0) =A(2,1) =5

A(3,1) =A(2,A(3,0)) =2·A(3,0) +3=13 A(3,2) =A(2,A(3,1)) =2·A(3,1) +3=29 A(3,3) =A(2,A(3,2)) =2·A(3,2) +3=61 Beobachtung

A(3,n) =2n+3−3

(26)

Ackermann Funktion: Beispiele (3)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Und ein paar Beispiele f¨urm=3:

A(3,0) =A(2,1) =5

A(3,1) =A(2,A(3,0)) =2·A(3,0) +3=13

A(3,2) =A(2,A(3,1)) =2·A(3,1) +3=29 A(3,3) =A(2,A(3,2)) =2·A(3,2) +3=61 Beobachtung

A(3,n) =2n+3−3

(27)

Ackermann Funktion: Beispiele (3)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Und ein paar Beispiele f¨urm=3:

A(3,0) =A(2,1) =5

A(3,1) =A(2,A(3,0)) =2·A(3,0) +3=13 A(3,2) =A(2,A(3,1)) =2·A(3,1) +3=29 A(3,3) =A(2,A(3,2)) =2·A(3,2) +3=61

Beobachtung

A(3,n) =2n+3−3

(28)

Ackermann Funktion: Beispiele (3)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Und ein paar Beispiele f¨urm=3:

A(3,0) =A(2,1) =5

A(3,1) =A(2,A(3,0)) =2·A(3,0) +3=13 A(3,2) =A(2,A(3,1)) =2·A(3,1) +3=29 A(3,3) =A(2,A(3,2)) =2·A(3,2) +3=61

Beobachtung A(3,n) =

2n+3−3

(29)

Ackermann Funktion: Beispiele (3)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Und ein paar Beispiele f¨urm=3:

A(3,0) =A(2,1) =5

A(3,1) =A(2,A(3,0)) =2·A(3,0) +3=13 A(3,2) =A(2,A(3,1)) =2·A(3,1) +3=29 A(3,3) =A(2,A(3,2)) =2·A(3,2) +3=61 Beobachtung

A(3,n) =2n+3−3

(30)

Ackermann Funktion: Beispiele (4)

Zusammenfassung der Beispiele

Wenn man den ersten Parameter fixiert ...

A(1,n) =n+2 A(2,n) =2n+3 A(3,n) =2n+3−3 A(4,n) = 22··

·2

| {z } n+3 viele

Zweien

−3

Bereits der Wert A(4,2) =265536−3

ist gr¨osser als die Anzahl aller Atome im Weltraum.

(31)

Exkurs: UpArrow-Notation (1)

Addition ist iterierte Nachfolgerbildung:

S(S(. . .(S(a). . .)

| {z }

bmal

= a+b

Multiplikation ist iterierte Addition: a+· · ·+a

| {z }

bmal

= a·b

Potenzierung ist iterierte Multiplikation: a× · · · ×a

| {z }

bmal

= ab =: a↑b

Der Potenzturm ist iterierte Potenzierung: aa. .

.a

| {z }

bmal

=: a↑↑b

Wiederholte Potenzturmbildung gibt a↑↑a↑↑. . .↑↑a

| {z }

bmal

=: a↑↑↑b

(32)

Exkurs: UpArrow-Notation (1)

Addition ist iterierte Nachfolgerbildung:

S(S(. . .(S(a). . .)

| {z }

bmal

= a+b

Multiplikation ist iterierte Addition:

a+· · ·+a

| {z }

bmal

= a·b

Potenzierung ist iterierte Multiplikation: a× · · · ×a

| {z }

bmal

= ab =: a↑b

Der Potenzturm ist iterierte Potenzierung: aa. .

.a

| {z }

bmal

=: a↑↑b

Wiederholte Potenzturmbildung gibt a↑↑a↑↑. . .↑↑a

| {z }

bmal

=: a↑↑↑b

(33)

Exkurs: UpArrow-Notation (1)

Addition ist iterierte Nachfolgerbildung:

S(S(. . .(S(a). . .)

| {z }

bmal

= a+b

Multiplikation ist iterierte Addition:

a+· · ·+a

| {z }

bmal

= a·b

Potenzierung ist iterierte Multiplikation:

a× · · · ×a

| {z }

bmal

= ab =: a↑b

Der Potenzturm ist iterierte Potenzierung: aa. .

.a

| {z }

bmal

=: a↑↑b

Wiederholte Potenzturmbildung gibt a↑↑a↑↑. . .↑↑a

| {z }

bmal

=: a↑↑↑b

(34)

Exkurs: UpArrow-Notation (1)

Addition ist iterierte Nachfolgerbildung:

S(S(. . .(S(a). . .)

| {z }

bmal

= a+b

Multiplikation ist iterierte Addition:

a+· · ·+a

| {z }

bmal

= a·b

Potenzierung ist iterierte Multiplikation:

a× · · · ×a

| {z }

bmal

= ab =: a↑b

Der Potenzturm ist iterierte Potenzierung:

aa. .

.a

| {z }

bmal

=: a↑↑b

Wiederholte Potenzturmbildung gibt a↑↑a↑↑. . .↑↑a

| {z }

bmal

=: a↑↑↑b

(35)

Exkurs: UpArrow-Notation (1)

Addition ist iterierte Nachfolgerbildung:

S(S(. . .(S(a). . .)

| {z }

bmal

= a+b

Multiplikation ist iterierte Addition:

a+· · ·+a

| {z }

bmal

= a·b

Potenzierung ist iterierte Multiplikation:

a× · · · ×a

| {z }

bmal

= ab =: a↑b

Der Potenzturm ist iterierte Potenzierung:

aa. .

.a

| {z }

bmal

=: a↑↑b

Wiederholte Potenzturmbildung gibt a↑↑a↑↑. . .↑↑a

| {z }

bmal

=: a↑↑↑b

(36)

Exkurs: UpArrow-Notation (2)

Definition (UpArrow-Notation von Donald Knuth)

a↑mb :=









1 wennb=0

a·b wennm=0

ab wennm=1

a↑m−1(a↑m(b−1)) sonst

Es gilt:

A(1,n) =2+ (n+3)−3 A(2,n) =2·(n+3)−3 A(3,n) =2↑(n+3)−3 A(4,n) =2↑↑(n+3)−3 A(5,n) =2↑↑↑(n+3)−3 ...

A(m,n) =2↑m−2(n+3)−3 f¨urm≥2

(37)

Exkurs: UpArrow-Notation (2)

Definition (UpArrow-Notation von Donald Knuth)

a↑mb :=









1 wennb=0

a·b wennm=0

ab wennm=1

a↑m−1(a↑m(b−1)) sonst Es gilt:

A(1,n) =2+ (n+3)−3 A(2,n) =2·(n+3)−3 A(3,n) =2↑(n+3)−3 A(4,n) =2↑↑(n+3)−3 A(5,n) =2↑↑↑(n+3)−3 ...

A(m,n) =2↑m−2(n+3)−3 f¨urm≥2

(38)

Donald Ervin Knuth (1938)

Wikipedia: Don Knuth is an American computer scientist, mathematician, and professor emeritus at Stanford University.

Knuth is the author of the multi-volume work“The Art of Computer

Programming”, he popularized the asymptotic notation (big-O) in algorithmics, he created theTeX computer typesetting system and the METAFONTfont definition language.

Knuth-Morris-Pratt algorithm Knuth-Bendix completion algorithm

(39)

Berechenbarkeit

der Ackermann Funktion

(40)

Die Ackermann Funktion ist berechenbar

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Satz

Die Ackermann Funktion ist Turing-berechenbar.

Beweis:

Wir zeigen mit Induktion ¨uberm≥0, dass jede Funktion fm:N→Nmit fm(x) =A(m,x)berechenbar ist.

F¨urm=0istf0 die Nachfolgerfunktionf0(x) =x+1.

F¨urm≥1berechnen wirfm(x), indem wir der Reihe nach induktiv alle Wertefm(0), fm(1),fm(2), . . . ,fm(x−1)bestimmen.

Zum Schluss berechnen wir:

fm(x) = A(m,x) = A(m−1,A(m,x−1)) = fm−1(fm(x−1))

(41)

Die Ackermann Funktion ist berechenbar

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Satz

Die Ackermann Funktion ist Turing-berechenbar.

Beweis:

Wir zeigen mit Induktion ¨uberm≥0, dass jede Funktion fm:N→Nmit fm(x) =A(m,x)berechenbar ist.

F¨urm=0istf0 die Nachfolgerfunktionf0(x) =x+1.

F¨urm≥1berechnen wirfm(x), indem wir der Reihe nach induktiv alle Wertefm(0), fm(1),fm(2), . . . ,fm(x−1)bestimmen.

Zum Schluss berechnen wir:

fm(x) = A(m,x) = A(m−1,A(m,x−1)) = fm−1(fm(x−1))

(42)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(43)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(44)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(45)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(46)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(47)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(48)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(49)

Induktion ¨ uber lexikographisch sortierte Paare (m, n)

m

0 n 0

(50)

Monotonie-Verhalten

der Ackermann Funktion

(51)

Monotonie-Verhalten

Monotonie

(M.1) A(m,n+1) > A(m,n) (M.2) A(m+1,n) > A(m,n) (M.3) A(m+1,n−1) ≥ A(m,n)

Einfache Folgerung aus (M.1) und (M.2) F¨urm≥m0 undn≥n0 gilt immer:

A(m,n) ≥ A(m0,n0)

(52)

Monotonie-Verhalten

Monotonie

(M.1) A(m,n+1) > A(m,n) (M.2) A(m+1,n) > A(m,n) (M.3) A(m+1,n−1) ≥ A(m,n)

Einfache Folgerung aus (M.1) und (M.2) F¨urm≥m0 undn≥n0 gilt immer:

A(m,n) ≥ A(m0,n0)

(53)

Monotonie-Beweis (M.1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Wir wollen nun Ungleichung (M.1) zeigen: A(m,n+1)>A(m,n)

Die Ackermann’sche Rekursionsgleichung liefert: A(m,n+1) = A(m−1,A(m,n))

A(m,n) = A(m−1,A(m,n−1))

Induktion liefert zuerstx :=A(m,n)>A(m,n−1)=:y und danachA(m−1,x)>A(m−1,y).

(54)

Monotonie-Beweis (M.1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Wir wollen nun Ungleichung (M.1) zeigen: A(m,n+1)>A(m,n) Die Ackermann’sche Rekursionsgleichung liefert:

A(m,n+1) = A(m−1,A(m,n)) A(m,n) = A(m−1,A(m,n−1))

Induktion liefert zuerstx :=A(m,n)>A(m,n−1)=:y und danachA(m−1,x)>A(m−1,y).

(55)

Monotonie-Beweis (M.1)

A(0,n) = n+1 f¨urn≥0 A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0

Wir wollen nun Ungleichung (M.1) zeigen: A(m,n+1)>A(m,n) Die Ackermann’sche Rekursionsgleichung liefert:

A(m,n+1) = A(m−1,A(m,n)) A(m,n) = A(m−1,A(m,n−1))

Induktion liefert zuerstx:=A(m,n)>A(m,n−1)=:y und danachA(m−1,x)>A(m−1,y).

(56)

Monotonie-Beweis (M.2)

Ein analoges induktives Argument beweist die Ungleichung (M.2).

Ubung¨

Beweisen Sie die Ungleichung (M.2) mit vollst¨andiger Induktion ¨uber die lexikographisch sortierten Paare(m,n).

A(m+1,n) > A(m,n) f¨ur allem,n≥0.

(57)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1)

= A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(58)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1)

= A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(59)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1)

= A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(60)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1) = A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(61)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1) = A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(62)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1) = A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(63)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1) = A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(64)

Monotonie-Beweis (M.3)

(M.3) A(m+1,n−1)≥A(m,n)

Induktionsanfang:Es giltA(1,n−1) =n+1=A(0,n)f¨ur allen≥1.

Es gilt A(m+1,0) =A(m,1)f¨ur allem≥0.

Induktionsschritt:Wir nehmen an, dass f¨ur(m0,n0)mit(m0<m)oder (m0=m)∧(n0<n)immerA(m0+1,n0−1)≥A(m0,n0)gilt.

A(m+1,n−1) = A(m,A(m+1,n−2)) (Def)

≥ A(m,A(m,n−1)) (Ind+Mono)

≥ A(m−1,A(m,n−1) +1) (Ind)

≥ A(m−1,A(m,n−1)) (Mono)

= A(m,n) (Def)

(65)

Das Wachstumslemma

(66)

Wachstumslemma: Vorbereitungen (1)

Wir werden in diesem Kapitel ausschliesslich LOOP Programme betrachten, die die folgende Annahme erf¨ullen:

Annahme:In LOOP-Konstrukten LOOPxi DOP ENDLOOP kommt die Z¨ahlvariablexi nicht im inneren ProgrammteilP vor.

Andernfalls f¨uhren wir f¨ur die Schleife eine frische Z¨ahlvariablexi0ein:

xi0:=xi;

LOOP xi0 DO P ENDLOOP

(67)

Wachstumslemma: Vorbereitungen (2)

Wir betrachten ein fixes LOOP ProgrammP mit den k Variablen x1,x2, . . . ,xk.

Wir erinnern uns (aus VL-09): Das LOOP ProgrammP berechnet diek-stellige Funktion[P] :Nk →Nk. Das LOOP ProgrammP

¨

ubersetzt also einen Eingabevektor~a= (a1, . . . ,ak)∈Nk in einen Ausgabevektor(b1, . . . ,bk).

Definition

F¨ur die Anfangswerte~a= (a1, . . . ,ak)∈Nk der Variablen definieren wir fP(~a) :=b1+b2+· · ·+bk

als die Summe aller Ergebniswerte in[P](~a) = (b1, . . . ,bk).

(68)

Wachstumslemma: Vorbereitungen (2)

Wir betrachten ein fixes LOOP ProgrammP mit den k Variablen x1,x2, . . . ,xk.

Wir erinnern uns (aus VL-09): Das LOOP ProgrammP berechnet diek-stellige Funktion[P] :Nk →Nk. Das LOOP ProgrammP

¨

ubersetzt also einen Eingabevektor~a= (a1, . . . ,ak)∈Nk in einen Ausgabevektor(b1, . . . ,bk).

Definition

F¨ur die Anfangswerte~a= (a1, . . . ,ak)∈Nk der Variablen definieren wir fP(~a) :=b1+b2+· · ·+bk

als die Summe aller Ergebniswerte in[P](~a) = (b1, . . . ,bk).

(69)

Wachstumslemma: Vorbereitungen (3)

Definition

Die WachstumsfunktionFP:N→Nist definiert durch FP(n) =max

( fP(~a)

~a∈Nk mit

k

X

i=1

ai≤n )

Intuitiv: Die FunktionFP beschreibt das maximale Wachstum (die maximale Zunahme) der Variablensumme durch das LOOP ProgrammP.

(70)

Wachstumslemma: Zentrale Aussage

Wir werden nun zeigen,

dass f¨ur alle LOOP ProgrammeP und f¨ur allen∈N der WertFP(n)echt kleiner ist als der Wert A(m,n), wenn nur der Parameter mgross genug gew¨ahlt wird.

Lemma (Wachstumslemma)

F¨ur jedes LOOP Programm P existiert eine nat¨urliche Zahl mP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Man beachte:

F¨ur jedes feste ProgrammP ist der ParametermP eine Konstante.

(71)

Wachstumslemma: Zentrale Aussage

Wir werden nun zeigen,

dass f¨ur alle LOOP ProgrammeP und f¨ur allen∈N der WertFP(n)echt kleiner ist als der Wert A(m,n), wenn nur der Parameter mgross genug gew¨ahlt wird.

Lemma (Wachstumslemma)

F¨ur jedes LOOP Programm P existiert eine nat¨urliche Zahl mP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Man beachte:

F¨ur jedes feste ProgrammP ist der ParametermP eine Konstante.

(72)

Beweis: Induktion ¨ uber Aufbau des Programms

Induktionsanfang (Zuweisungen)

Es seiP von der Formxi :=xj+c mitc∈ {0,1}.

Wir werden zeigen: FP(n)<A(2,n).

Induktionsschritt (Hintereinanderausf¨uhrung) Es seiP von der FormP1;P2.

Induktionsannahme: ∃q∈N:FP1(`)<A(q, `)und FP2(`)<A(q, `).

Wir werden zeigen: FP(n)<A(q+1,n).

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme: ∃q∈N:FQ(`)<A(q, `).

Wir werden zeigen: FP(n)<A(q+1,n).

(73)

Beweis: Induktionsanfang

Induktionsanfang (Zuweisungen)

Es seiP von der Form “xi:=xj+c” mitc ∈ {0,1}

Dann gilt: FP(n)≤2n+1, und somit FP(n)<A(2,n)

Argument:

P ver¨andert nur den Wert der Variablenxi.

Am Anfang war xi≥0, und am Ende istxi =xj+c ≤n+1. Die Summe aller Variablenwerte erh¨oht sich um h¨ochstensn+1, und springt damit von h¨ochstensn(am Anfang) auf h¨ochstens 2n+1(am Ende).

(74)

Beweis: Induktionsanfang

Induktionsanfang (Zuweisungen)

Es seiP von der Form “xi:=xj+c” mitc ∈ {0,1}

Dann gilt: FP(n)≤2n+1, und somit FP(n)<A(2,n) Argument:

P ver¨andert nur den Wert der Variablen xi.

Am Anfang war xi≥0, und am Ende istxi =xj+c ≤n+1. Die Summe aller Variablenwerte erh¨oht sich um h¨ochstensn+1, und springt damit von h¨ochstensn(am Anfang) auf h¨ochstens 2n+1(am Ende).

(75)

Beweis: Induktionsanfang

Induktionsanfang (Zuweisungen)

Es seiP von der Form “xi:=xj+c” mitc ∈ {0,1}

Dann gilt: FP(n)≤2n+1, und somit FP(n)<A(2,n) Argument:

P ver¨andert nur den Wert der Variablen xi.

Am Anfang war xi≥0, und am Ende istxi =xj+c≤n+1.

Die Summe aller Variablenwerte erh¨oht sich um h¨ochstensn+1, und springt damit von h¨ochstensn(am Anfang) auf h¨ochstens 2n+1(am Ende).

(76)

Beweis: Induktionsanfang

Induktionsanfang (Zuweisungen)

Es seiP von der Form “xi:=xj+c” mitc ∈ {0,1}

Dann gilt: FP(n)≤2n+1, und somit FP(n)<A(2,n) Argument:

P ver¨andert nur den Wert der Variablen xi.

Am Anfang war xi≥0, und am Ende istxi =xj+c≤n+1.

Die Summe aller Variablenwerte erh¨oht sich um h¨ochstensn+1, und springt damit von h¨ochstensn(am Anfang) auf h¨ochstens 2n+1(am Ende).

(77)

Beweis: Schritt f¨ ur Hintereinanderausf¨ uhrung

Induktionsschritt (Hintereinanderausf¨uhrung) Es seiP von der Form “P1;P2

Induktionsannahme: ∃q∈N:FP1(`)<A(q, `)und FP2(`)<A(q, `).

Dann gilt: FP(n) < A(q+1,n)

Argument:

Wir verwenden die Absch¨atzung (M.3): A(q,n)≤A(q+1,n−1) Dann folgt mit den Monotonie Eigenschaften, dass

FP(n) ≤ FP2(FP1(n)) (Def)

< A(q,A(q,n)) (Ind)

< A(q,A(q+1,n−1)) (Mono+M.3)

= A(q+1,n) (Def)

(78)

Beweis: Schritt f¨ ur Hintereinanderausf¨ uhrung

Induktionsschritt (Hintereinanderausf¨uhrung) Es seiP von der Form “P1;P2

Induktionsannahme: ∃q∈N:FP1(`)<A(q, `)und FP2(`)<A(q, `).

Dann gilt: FP(n) < A(q+1,n)

Argument:

Wir verwenden die Absch¨atzung (M.3): A(q,n)≤A(q+1,n−1) Dann folgt mit den Monotonie Eigenschaften, dass

FP(n) ≤ FP2(FP1(n)) (Def)

< A(q,A(q,n)) (Ind)

< A(q,A(q+1,n−1)) (Mono+M.3)

= A(q+1,n) (Def)

(79)

Beweis: Schritt f¨ urs LOOP-Konstrukt (1)

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme liefert: ∃q∈N:FQ(`)<A(q, `) Dann gilt: FP(n) ≤ A(q+1,n).

Argument:

Wir betrachten jenen Wertα=α(n)f¨ur die Variablexi,

mit dem der gr¨osstm¨ogliche FunktionswertFP(n)angenommen wird Dann giltFP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α,

wobei die FunktionFQ(·)hier α-fach ineinander eingesetzt ist. Die Induktionsannahme gibt uns FQ(`)<A(q, `)

Dies wenden wir auf die ¨ausserste FunktionFQ an und erhalten FP(n) < A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

(80)

Beweis: Schritt f¨ urs LOOP-Konstrukt (1)

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme liefert: ∃q∈N:FQ(`)<A(q, `) Dann gilt: FP(n) ≤ A(q+1,n).

Argument:

Wir betrachten jenen Wertα=α(n)f¨ur die Variablexi,

mit dem der gr¨osstm¨ogliche FunktionswertFP(n)angenommen wird

Dann giltFP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α, wobei die FunktionFQ(·)hier α-fach ineinander eingesetzt ist. Die Induktionsannahme gibt uns FQ(`)<A(q, `)

Dies wenden wir auf die ¨ausserste FunktionFQ an und erhalten FP(n) < A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

(81)

Beweis: Schritt f¨ urs LOOP-Konstrukt (1)

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme liefert: ∃q∈N:FQ(`)<A(q, `) Dann gilt: FP(n) ≤ A(q+1,n).

Argument:

Wir betrachten jenen Wertα=α(n)f¨ur die Variablexi,

mit dem der gr¨osstm¨ogliche FunktionswertFP(n)angenommen wird Dann giltFP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α,

wobei die FunktionFQ(·)hierα-fach ineinander eingesetzt ist.

Die Induktionsannahme gibt uns FQ(`)<A(q, `)

Dies wenden wir auf die ¨ausserste FunktionFQ an und erhalten FP(n) < A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

(82)

Beweis: Schritt f¨ urs LOOP-Konstrukt (1)

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme liefert: ∃q∈N:FQ(`)<A(q, `) Dann gilt: FP(n) ≤ A(q+1,n).

Argument:

Wir betrachten jenen Wertα=α(n)f¨ur die Variablexi,

mit dem der gr¨osstm¨ogliche FunktionswertFP(n)angenommen wird Dann giltFP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α,

wobei die FunktionFQ(·)hierα-fach ineinander eingesetzt ist.

Die Induktionsannahme gibt uns FQ(`)<A(q, `)

Dies wenden wir auf die ¨ausserste FunktionFQ an und erhalten FP(n) < A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

(83)

Beweis: Schritt f¨ urs LOOP-Konstrukt (1)

Induktionsschritt (LOOP-Konstrukt)

Es seiP von der Form “LOOPxi DOQ ENDLOOP”

Induktionsannahme liefert: ∃q∈N:FQ(`)<A(q, `) Dann gilt: FP(n) ≤ A(q+1,n).

Argument:

Wir betrachten jenen Wertα=α(n)f¨ur die Variablexi,

mit dem der gr¨osstm¨ogliche FunktionswertFP(n)angenommen wird Dann giltFP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α,

wobei die FunktionFQ(·)hierα-fach ineinander eingesetzt ist.

Die Induktionsannahme gibt uns FQ(`)<A(q, `)

Dies wenden wir auf die ¨ausserste FunktionFQ an und erhalten FP(n) < A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

(84)

Beweis: Schritt f¨ urs LOOP-Konstrukt (2)

Und weiter geht’s:

Wiederholte Anwendung liefert dieα-zeilige Ungleichungskette FP(n)< A(q,FQ(,FQ(. . .FQ(FQ(n−α)). . .)) +α

< A(q,A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

... ...

< A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) +α

Daraus ergibt sich FP(n) ≤ A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) Im innersten Teil verwenden wir A(q,n−α)≤A(q+1,n−α−1) Ergo: FP(n)≤A(q,A(q,A(q, . . .A(q,A(q+1,n−α−1))). . .)) Jetzt arbeiten wir uns(α−1)-mal von innen nach aussen vor, und wenden in jedem Schritt die Ackermann Definition an.

Das ergibt FP(n)≤A(q+1,n−1)undFP(n)<A(q+1,n).

(85)

Beweis: Schritt f¨ urs LOOP-Konstrukt (2)

Und weiter geht’s:

Wiederholte Anwendung liefert dieα-zeilige Ungleichungskette FP(n)< A(q,FQ(,FQ(. . .FQ(FQ(n−α)). . .)) +α

< A(q,A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

... ...

< A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) +α

Daraus ergibt sich FP(n) ≤ A(q,A(q,A(q, . . . ,A(q,n−α)). . .))

Im innersten Teil verwenden wir A(q,n−α)≤A(q+1,n−α−1) Ergo: FP(n)≤A(q,A(q,A(q, . . .A(q,A(q+1,n−α−1))). . .)) Jetzt arbeiten wir uns(α−1)-mal von innen nach aussen vor, und wenden in jedem Schritt die Ackermann Definition an.

Das ergibt FP(n)≤A(q+1,n−1)undFP(n)<A(q+1,n).

(86)

Beweis: Schritt f¨ urs LOOP-Konstrukt (2)

Und weiter geht’s:

Wiederholte Anwendung liefert dieα-zeilige Ungleichungskette FP(n)< A(q,FQ(,FQ(. . .FQ(FQ(n−α)). . .)) +α

< A(q,A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

... ...

< A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) +α

Daraus ergibt sich FP(n) ≤ A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) Im innersten Teil verwenden wir A(q,n−α)≤A(q+1,n−α−1) Ergo: FP(n)≤A(q,A(q,A(q, . . .A(q,A(q+1,n−α−1))). . .))

Jetzt arbeiten wir uns(α−1)-mal von innen nach aussen vor, und wenden in jedem Schritt die Ackermann Definition an.

Das ergibt FP(n)≤A(q+1,n−1)undFP(n)<A(q+1,n).

(87)

Beweis: Schritt f¨ urs LOOP-Konstrukt (2)

Und weiter geht’s:

Wiederholte Anwendung liefert dieα-zeilige Ungleichungskette FP(n)< A(q,FQ(,FQ(. . .FQ(FQ(n−α)). . .)) +α

< A(q,A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α

... ...

< A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) +α

Daraus ergibt sich FP(n) ≤ A(q,A(q,A(q, . . . ,A(q,n−α)). . .)) Im innersten Teil verwenden wir A(q,n−α)≤A(q+1,n−α−1) Ergo: FP(n)≤A(q,A(q,A(q, . . .A(q,A(q+1,n−α−1))). . .)) Jetzt arbeiten wir uns(α−1)-mal von innen nach aussen vor, und wenden in jedem Schritt die Ackermann Definition an.

Das ergibtFP(n)≤A(q+1,n−1)undFP(n)<A(q+1,n).

(88)

Die M¨ achtigkeit von LOOP

(89)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP) Widerspruch! QED!

(90)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP) Widerspruch! QED!

(91)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP) Widerspruch! QED!

(92)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP) Widerspruch! QED!

(93)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP)

Widerspruch! QED!

(94)

Die M¨ achtigkeit von LOOP (1)

Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Beweis:

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist. Dann gibt es auch ein LOOP Programm P, das die Hilfsfunktion B(n) =A(n,n)berechnet.

Das Wachstumslemma liefert uns eine ZahlmP, sodass f¨ur allen∈Ngilt: FP(n)<A(mP,n).

Wird nun das LOOP ProgrammP mit der EingabemP aufgerufen, so berechnet es den FunktionswertB(mP).

Da FP das Wachstum des ProgrammsP beschr¨ankt, gilt per Definition: B(mP)≤FP(mP).

Zusammengefasst: B(mP)≤FP(mP)<A(mP,mP) =B(mP) Widerspruch! QED!

(95)

Die M¨ achtigkeit von LOOP (2)

Wir erinnern uns: Die Ackermann Funktion ist Turing-berechenbar.

Satz

Die Ackermann Funktion ist WHILE-berechenbar.

Wir fassen zusammen: Folgerung

Die Menge der LOOP-berechenbaren Funktionen

bildet eineechte Teilmengeder berechenbaren Funktionen. Ergo: Die Programmiersprache LOOP ist nicht Turing-m¨achtig

(96)

Die M¨ achtigkeit von LOOP (2)

Wir erinnern uns: Die Ackermann Funktion ist Turing-berechenbar.

Satz

Die Ackermann Funktion ist WHILE-berechenbar.

Wir fassen zusammen:

Folgerung

Die Menge der LOOP-berechenbaren Funktionen

bildet eineechte Teilmengeder berechenbaren Funktionen.

Ergo: Die Programmiersprache LOOP ist nicht Turing-m¨achtig

(97)

Landschaft um LOOP, WHILE, TM, RAM

TM = RAM = WHILE = berechenbar

LOOP + − × ab ab kn

A(m,n)

Ackermann Funktion

Referenzen

ÄHNLICHE DOKUMENTE

WHILE ist Turing-m¨ achtig Die Ackermann Funktion.. Die Programmiersprache LOOP.. ¨ Andert sich der Wert von x i im Inneren von P, so hat dies keinen Einfluss auf die Anzahl

Das Symbol unterm Kopf wird auf neues Symbol σ ∈ {0, 1, 2} gesetzt, indem man das folgende Programmst¨ uck ausf¨ uhrt:. UntermKopf

Zwecks Widerspruchs nehmen wir an, dass die Ackermann Funktion LOOP-berechenbar ist.. Die M¨ achtigkeit von

Auch wenn eine Aufgabe als Entscheidungsfrage formuliert wird, gibt es f¨ ur ein einfaches Ja oder Nein keine Punkte. Allgemein: Punkte werden bei der Klausur haupts¨ achlich f¨

Aktueller Zustand steht in der Variablen Zustand Das Symbol unterm Kopf erhalten wir durch den Befehl UntermKopf := BandAbKopf MOD 10.. Simulation von TM durch

I Das Symbol unterm Kopf erhalten wir durch den Befehl UntermKopf := BandAbKopf MOD 10. BuK/WS 2017 VL-11: LOOP und WHILE Programme

Eigenschaften der Ackermann Funktion Ackermann Funktion und LOOP-Programme Primitiv rekursive Funktionen... M¨ achtigkeit

Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind:.. I Variablen: x 1 x 2