Berechenbarkeit und Komplexit¨at Vorlesung 12
Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7
RWTH Aachen
8. Dezember 2014
M¨achtigkeit der LOOP-Programme
Wir fragen, ob sich das while-Konstrukt durch loop ersetzen l¨asst.
Die erste Antwort lautet: Nein, denn mit WHILE-Programmen lassen sich nicht-totale Funktionen berechnen, w¨ahrend mit LOOP-Programmen nur totale Funktionen berechenbar sind.
Beispiel:x1 :=x1+ 1; whilex1 6= 0 dox1 :=x1+ 1 endwhile Man zeigt duch Induktion ¨uber den Aufbau der LOOP-Programme:
IstP ein LOOP-Programm (etwa mit den Variablen
x1, . . . ,xk), dann ist die semantische Funktion [P] :Nk →Nk total.
Also ist auch eine durch ein LOOP-ProgrammP berechnete FunktionfP(n) :Nn→Ntotal.
Die Ackermann-Funktion
Wir zeigen jetzt, dass sogar bei der Berechnung totaler Funktionen das while-Konstrukt nicht durch loop ersetzt werden kann.
Dazu betrachten wir die sog. Ackermann-FunktionA:N2 →N, definiert (durch Wilhelm Ackermann 1928) wie folgt:.
(1)A(0,n) = n+ 1 f¨urn ≥0
(2)A(m+ 1,0) = A(m,1) f¨urm≥0
(3)A(m+ 1,n+ 1) = A(m,A(m+ 1,n)) f¨urm,n≥0 Satz
Die Ackermann-FunktionA ist total und WHILE-berechenbar, aber nicht LOOP-berechenbar.
Berechnung von A -Werten
Wir wenden die Gleichungen (1), (2), (3) in einem Beispiel an:
A(1,3) =A(0,A(1,2))
=A(0,A(0,A(1,1)))
=A(0,A(0,A(0,A(1,0))))
=A(0,A(0,A(0,A(0,1))))
=A(0,A(0,A(0,A(0,1))))
=A(0,A(0,A(0,2)))
=A(0,A(0,3))
=A(0,4)
= 5
Totalit¨at und Berechenbarkeit von A
Satz
Die Ackermann-Funktion ist total und berechenbar:
Der eindeutige Auswertungsprozess gem¨aß (1), (2), (3) terminiert f¨ur alle (x,y)∈N2 mit einer nat¨urlichen Zahl
(wir sagen hierf¨ur kurz “A(x,y) ist definiert”).
Beweis durch Induktion ¨uberx f¨ur folgende Behauptung:
F¨ur alley gilt:A(x,y) ist definiert.
Ind.anfangx= 0 ist klar wegen (1)
Fortsetzung des Beweises
Ind. Vor.:A(x,y) sei definiert f¨ur alle y Ind. Beh.:A(x+ 1,y) ist definiert f¨ur alle y Beweis der Ind. beh. durch Induktion ¨ubery.
ind.anfang:y = 0 klar wegen (2)A(x+ 1,0) =A(x,1) und Ind. Vor. ¨uberA(x,1).
ind.vor.:A(x+ 1,y) ist definiert.
ind. beh.:A(x+ 1,y+ 1) ist definiert.
Wegen (3) ist A(x+ 1,y+ 1) =A(x,A(x+ 1,y)).
A(x+ 1,y) ist definiert nach ind.vor.
A(x,A(x+ 1,y)) ist dann definiert nach Ind.Vor. ¨uber x
Wir ¨uberschlagen hier die ¨Ubersetzung des Auswertungsverfahrens in ein konkretes WHILE-Programm.
Die Ackermann-Funktion – Eigenschaften
Monotonie
A(m+ 1,n)>A(m,n) A(m,n+ 1)>A(m,n)
A(m+ 1,n−1)≥A(m,n) (¨Ubungsaufgabe) Wenn man den ersten Parameter fixiert ...
A(1,n) =n+ 2, A(2,n) = 2n+ 3, A(3,n) = 8·2n−3,
A(4,n) = 22··
·2
| {z } n+ 2 viele
Potenzen
−3,
BereitsA(4,2) = 265536−3 ist gr¨oßer als die (vermutete) Anzahl der Atome im Weltraum.
Wachstum der Variableninhalte in einem LOOP-Programm
Definition der FunktionFP Sei P ein LOOP-Programm
Seien x1, . . . ,xk die Variablen inP.
Wenn die Variablen initial die Werte a= (a0, . . . ,ak)∈Nk haben, dann sei fP(a) das k-Tupel der Variablenwerte nach Ausf¨uhrung von P.
Sei |fP(a)|die Summe der Eintr¨age im k-Tupel fP(a).
Wir definieren nun die Funktion FP :N→Ndurch FP(n) = max
(
|fP(a)|
a∈Nk mit Xk
i=0
ai ≤n )
.
Intuitiv beschreibt die FunktionFP das maximale Wachstum der Variablenwerte im LOOP-ProgrammP.
Ackermannfunktion versus F
PWir zeigen nun, dassFP(n) f¨ur allen ∈Necht kleiner ist als A(m,n), wenn der Parameter m gen¨ugend groß in Abh¨angigkeit vonP gew¨ahlt wird.
Lemma
F¨ur jedes LOOP-Programm P gibt es eine nat¨urliche Zahl m, so dass f¨ur alle n gilt: FP(n)<A(m,n).
Beachte: F¨ur ein festes ProgrammP ist der Parameter m eine Konstante.
Beweis durch Strukturelle Induktion (¨ Uberblick)
Induktionsanfang
Sei P von der Formxi :=xj +c f¨ur c ∈ {−1,0,1}.
Wir werden zeigen: FP(n)<A(2,n).
Induktionsschritt (1. Art) Sei P von der FormP1;P2.
Induktionsannahme:∃q ∈N:FP1(ℓ)<A(q, ℓ) und FP2(ℓ)<A(q, ℓ).
Wir werden zeigen: FP(n)<A(q+ 1,n).
Induktionsschritt (2. Art)
Sei P von der Form LOOP xi DOQ END.
Induktionsannahme:∃q ∈N:FQ(ℓ)<A(q, ℓ).
Wir werden zeigen: FP(n)<A(q+ 1,n).
Beweis des Lemmas
Der Induktionsanfang
Sei P von der Formxi :=xj +c f¨ur c ∈ {−1,0,1}.
Dann gilt FP(n)≤2n+ 1.
Somit folgtFP(n)<A(2,n).
Erl¨auterung:Vor Ausf¨uhrung von P k¨onnte geltenxj =n und alle anderen Variablen haben den Wert 0. Ferner k¨onntec den Wert 1 haben. Nach Ausf¨uhrung vonP gilt somitxi =n+ 1 und somit ist die Summe der Variableninhaltexi+xj = 2n+ 1. Ein gr¨oßeres Wachstum der Variableninhalte ist nicht m¨oglich.
Beweis des Lemmas
Der Induktionsschritt (1. Art) Sei P von der FormP1;P2.
Induktionsannahme:∃q ∈N:FP1(ℓ)<A(q, ℓ) und FP2(ℓ)<A(q, ℓ).
Somit gilt
FP(n) ≤ FP2(FP1(n)) < A(q,A(q,n)) .
Wir verwenden die Absch¨atzung A(q,n)≤A(q+ 1,n−1).
Es folgt
FP(n) < A(q,A(q+ 1,n−1)) = A(q+ 1,n) .
Beweis des Lemmas
Der Induktionsschritt (2. Art)
Sei P von der Form LOOP xi DOQ END.
Induktionsannahme:∃q ∈N:FQ(ℓ)<A(q, ℓ).
Sei α=α(n) derjenige Wert f¨ur xi derFP(n) maximiert.
Dann gilt
FP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α , wobei die Funktion FQ(·) hierα-fach ineinander eingesetzt ist.
Beweis des Lemmas
Der Induktionsschritt (2. Art) – Fortsetzung Bisher haben wir gezeigt
FP(n) ≤ FQ(FQ(. . .FQ(FQ(n−α)). . .)) +α , wobei die Funktion FQ(·) hierα-fach ineinander eingesetzt ist.
Aus der Induktionsannahme folgt FQ(ℓ)≤A(q, ℓ)−1.
Dies wenden wir auf die ¨außerste Funktion FQ an und erhalten FP(n) ≤ A(q,FQ(. . .FQ(FQ(n−α)). . .)) +α−1 . Wiederholte Anwendung liefert
FP(n) ≤ A(q,A(q, . . .A(q,A(q,n−α)). . .))
≤ A(q,A(q, . . .A(q,A(q+ 1,n−α)). . .)) .
Beweis des Lemmas
Der Induktionsschritt (2. Art) – Fortsetzung Bisher haben wir gezeigt
FP(n) ≤ A(q,A(q, . . .A(q,A(q+ 1,n−α)). . .)) . Der Definition der Ackermannfunktion entnehmen wir A(q+ 1,y+ 1) =A(q,A(q+ 1,y)).
Auf die innere Verschachtelung angewendet ergibt sich FP(n) ≤ A(q,A(q, . . .A(q+ 1,n−α+ 1). . .)) , wobei die Schachtelungstiefe nur noch α−1 ist.
Nach weiteren α−2 vielen Anwendungen, folgt FP(n) ≤ A(q+ 1,n−1) < A(q+ 1,n) .
Ackermann-Funktion nicht LOOP-berechenbar
Wir nutzen das Lemma f¨ur die schon formulierte Behauptung:
Satz
Die Ackermann-Funktion ist nicht LOOP-berechenbar.
Beweis:
Angenommen die Ackermannfunktion ist durch ein LOOP-Programm berechenbar.
Dann sei P ein LOOP-Programm f¨ur die Fkt B(n) =A(n,n).
Es gilt B(n)≤FP(n).
Aus dem Lemma folgt, es gibt m∈Nmit FP(n)<A(m,n).
F¨ur m=n gilt somit
B(n) ≤ FP(n) < A(m,n) = A(n,n) = B(n) .
Widerspruch! Also folgt der Satz.
Die Busy Beaver Funktion
Wir definieren eine Funktion, die zu gegebenemn die maximale Anzahl der Striche angibt, die eine TM mitn Zust¨anden (plus Stoppzustand) bei Termination auf dem Band liefert.
Genauer:
Einn-Biber ist eine TM mit Zust¨andenq1, . . . ,qn,q ¨uber dem Alphabet{|,B}, die angesetzt auf das leere Band stoppt.
Ein fleißigern-Biber ist einn-Biber, der unter allen n-Bibern bei Termination die maximale Anzahl von Symbolen|liefert
(gegebenenfalls auch unterbrochen durch SymboleB).
Die busy beaver Funktionβ:N→Nist definiert durch
β(n) = Strichzahl, die ein fleißigern-Biber bei Termination liefert.
Nicht-Berechenbarkeit von β
Es ist klar, dassβ wohldefiniert und total ist.
Satz
Die beasy beaver Funktionβ ist nicht berechenbar.
Vor dem Beweis eine Bemerkung:β(n)< β(n+ 1).
Dies ist klar durch Umwandlung des Stoppzustands eines fleißigen n-Bibers in den Zustandqn+1 und Hinzuf¨ugung der Instruktionen (qn+1 |qn+1|R) und (qn+1 B q |R). Es entsteht ein
(n+ 1)-Biber, der einen Strich mehr liefert als ein fleißigern-Biber.
Man hat Werte vonβ bisher wie folgt bestimmt:
β(1) = 1, β(2) = 4, β(3) = 6, β(4) = 13, β(5)≥4096
β(12)>6·40964096...4096 mit einem Potenzturm der H¨ohe 164
Ansatz f¨ur die Nicht-Berechenbarkeit
Lemma
β w¨achst st¨arker als jede berechenbare streng monotone Funktion f, in folgendem Sinne:
Seif :N→Nstreng monoton und berechenbar durch eine TM mit Eingabe und Ausgabe nat¨urlicher Zahlen in Un¨ardarstellung.
Dann gibt es einn0, so dass f¨ur n≥n0 gilt: f(n)< β(n) Insbesondere istβ verschieden von jeder streng monotonen berechenbaren Funktion.
Zum Beweis: Seif berechenbar gegeben. Betrachteg, definiert durchg(n) =f(2n+ 2).
Mitf ist auchg berechenbar (mit un¨arer Darstellung von Zahlen), etwa durch die TMMg mitk Zust¨anden.
OBdA liefertMg bei Termination keine anderen Striche als
Zur TM M
gWir definieren f¨urm≥1 eine Variante Mgm von Mg, mit zus¨atzlichen Zust¨andenp0, . . . ,pm:
Wir stellen den Instruktionen vonMg die Instruktionen (p0 B p1 |R), . . . ,(pm−1 B pm |L)
voran, diem Striche drucken; ferner zwei Instruktionen f¨ur den R¨ucklauf auf den ersten Strich in den Anfangszustandq0 von Mg: (pm |pm |L),(pm B q0 B R).
Die TMMgm hat k+ (m+ 1) Zust¨ande und arbeitet auf dem leeren Band wieMg mit Eingabem.
Eine Absch¨atzung
Wir erhalten f¨urn≥k (k = Anzahl derMg-Zust¨ande):
f(2n+ 1)<f(2n+ 2) (da f streng monoton ist)
=g(n) = Anzahl der Striche, dieMgn
angesetzt auf das leere Band bei Termination liefert
≤β(k+ (n+ 1)) (da Mgm k+ (n+ 1) Zust¨ande hat)
≤β(2n+ 1) (wegenn≥k)
< β(2n+ 2) gem¨aß Vorbemerkung Also giltf(x)< β(x) , wennx ≥2n+ 1:
F¨urx gerade nimmt man oben den ersten und vorletzten Term, f¨ur x ungerade den zweiten und letzten Term.
Zur strengen Monotonie von f
Das Lemma gilt zun¨achst nur f¨ur streng monotone berechenbaref. F¨ur beliebige berechenbare Funktionenh bildet man zunn¨achst eine streng monotone Funktionf mith(n)≤f(n) und erh¨alt dann f¨ur großen, dass h(n)≤f(n)< β(n).
Von einer beliebigen berechenbaren Funktionh k¨onnen wir durch Ersatz des Funktionswerts 0 durch 1 ¨ubergehen
zu einer berechenbaren Funktion h′ ohne Wert 0 mit h(n)≤h′(n)
und dann zu einer streng monotonen berechenbaren Funktion f durch
f(n) =Pn
i=0h′(i).
Somit istβ verschieden von jeder totalen berechenbaren Funktion h, also nicht berechenbar.