1.5 LOOP-Berechenbarkeit
LOOP-Programme sind wie folgt definiert:
Variablen: x 1 , x 2 , x 3 , . . . Konstanten: 0, 1, 2, . . . Trennsymbole: ; :=
Operatoren: + -
Schl¨ usselw¨ orter: LOOP DO END
Info IV 1.5 LOOP-Berechenbarkeit 207/217
c
Ernst W. Mayr
Der Aufbau von LOOP-Programmen:
x i := c, x i := x j + c, x i := x j − c sind LOOP-Programme.
Die Interpretation dieser Ausdr¨ ucke erfolgt, wie ¨ ublich, mit der Einschr¨ ankung, dass x j − c als 0 gewertet wird, falls c > x j . Sind P 1 und P 2 LOOP-Programme, so ist auch
P 1 ; P 2 ein LOOP-Programm.
Interpretation: F¨ uhre zuerst P 1 und dann P 2 aus.
Ist P ein LOOP-Programm, so ist auch LOOP x i DO P END ein LOOP-Programm.
Interpretation: F¨ uhre P genau x i -mal aus.
Achtung: Zuweisungen an x i im Innern von P haben keinen Einfluss auf die Anzahl der Schleifendurchl¨ aufe!
Info IV 1.5 LOOP-Berechenbarkeit 208/217
c
Ernst W. Mayr
Definition 130
Eine Funktion f heißt LOOP-berechenbar genau dann, wenn es ein LOOP-Programm gibt, das f berechnet.
LOOP-Programme k¨ onnen IF . . . THEN . . . ELSE . . . END
Konstrukte simulieren. Der Ausdruck IF x = 0 THEN A END kann durch folgendes Programm nachgebildet werden:
y := 1;
LOOP x DO y := 0 END;
LOOP y DO A END;
LOOP-berechenbare Funktion sind immer total, denn:
LOOP-Programme stoppen immer. Damit stellt sich nat¨ urlich die Frage, ob alle totalen Funktionen LOOP-berechenbar sind.
Info IV 1.5 LOOP-Berechenbarkeit 209/217
c
Ernst W. Mayr
Satz 131
f ist primitiv-rekursiv ⇐⇒ f ist LOOP-berechenbar.
Info IV 1.5 LOOP-Berechenbarkeit 210/217
c
Ernst W. Mayr
Beweis:
Wir zeigen zun¨ achst
” ⇐“: Sei also P ein LOOP-Programm, das f : N n 0 → N 0 berechnet. P verwende die Variablen x 1 , . . . , x k , k ≥ n.
Zu zeigen: f ist primitiv-rekursiv.
Der Beweis erfolgt durch strukturelle Induktion ¨ uber den Aufbau von P .
Info IV 211/217
c
Ernst W. Mayr
Beweis:
Induktionsanfang: P : x i := x j ± c
Wir zeigen: Es gibt eine primitiv-rekursive Funktion g P (ha 1 , . . . , a k i
| {z } Belegung der Variablen
beim Start von P
) = hb 1 , . . . , b k i
| {z } Belegung der Variablen
am Ende von P F¨ ur P : x i := x j ± c erh¨ alt man:
g P (ha 1 , . . . , a k i) = ha 1 , . . . , a i−1 , a j ± c, a i+1 , . . . , a k i
Info IV 211/217
c
Ernst W. Mayr
Beweis:
Induktionsschritt: Hier unterscheiden wir 2 F¨ alle:
1
Sei P : Q; R. Dann ist g P (x) = g R (g Q (x)).
2
Sei nun P : LOOP x i DO Q END.
Idee: Definiere Funktion h(n, x), die die Belegung der Variablen berechnet, wenn man mit Belegung x startet und dann Q genau n mal ausf¨ uhrt. Dann ist:
h(0, x) = x
h(n + 1, x) = g Q (h(n, x))
und damit g P (x) = h(d i (x), x), wobei d i die i-te Umkehrfunktion von hx 1 , . . . , x k i ist, also
d i (hx 1 , . . . , x k i) = x i . Die Richtung
” ⇒“ wird durch strukturelle Induktion ¨ uber den Aufbau von f gezeigt ( ¨ Ubungsaufgabe).
Info IV 1.5 LOOP-Berechenbarkeit 211/217
c
Ernst W. Mayr
Definition 132
Die Ackermann-Funktion a : N 2 0 → N 0 :
a(x, y) :=
y + 1 falls x = 0
a(x − 1, 1) falls x ≥ 1, y = 0 a(x − 1, a(x, y − 1)) falls x, y ≥ 1
Einige Eigenschaften der Ackermann-Funktion, die man per Induktion zeigen kann:
1
a(1, y) = y + 2, a(2, y) = 2y + 3 f¨ ur alle y
2
y < a(x, y) ∀x, y
3
a(x, y) < a(x, y + 1) ∀x, y
4
a(x, y + 1) ≤ a(x + 1, y) ∀x, y
5
a(x, y) < a(x + 1, y) ∀x, y
Info IV 1.5 LOOP-Berechenbarkeit 212/217
c
Ernst W. Mayr
Genauer:
y →
0 1 2 3 4 5
0 1 2 3 4 5 6
1 2 3 4 5 6 7
x 2 3 5 7 9 11 13
↓ 3 5 13 29 61 125 253
4 13 65533 2
65536− 3 2
265536− 3 2
2265536− 3 . . . 5 65533 . . .
Info IV 1.5 LOOP-Berechenbarkeit 213/217
c
Ernst W. Mayr
Lemma 133
Sei P ein LOOP-Programm mit den Variablen x 1 , . . . , x k , und sei
f P (n) = max{ X
i
n 0 i ; X
i
n i ≤ n},
wobei, f¨ ur i = 1, . . . , k, n 0 i der Wert von x i nach Beendigung von P und n i der Startwert von x i vor Beginn von P ist. Dann gibt es ein t ∈ N , so dass
∀n ∈ N 0 : f P (n) < a(t, n).
Info IV 1.5 LOOP-Berechenbarkeit 214/217
c
Ernst W. Mayr
Beweis:
durch Induktion ¨ uber den Aufbau von P.
Induktionsanfang:
P = x i := x j ± c, o.E. c ∈ {0, 1}. Es ist klar, dass
f P (n) ≤ 2n + 1 < 2n + 3 = a(2, n) f¨ ur alle n
⇒ t = 2 tut es!
Info IV 215/217
c
Ernst W. Mayr
Beweis:
durch Induktion ¨ uber den Aufbau von P.
Induktionsschritt:
1. Fall: P = P 1 ; P 2 . Nach Induktionsannahme gibt es k 1 , k 2 ∈ N , so dass f¨ ur i = 1, 2 und f¨ ur alle n ∈ N 0 f Pi < a(k i , n).
Damit
f P (n) ≤ f P2(f P1(n))
(n))
≤ f P2(a(k 1 , n)) Monotonie von f P2
< a(k 2 , a(k 1 , n)) I.A., setze k 3 := max{k 2 , k 1 − 1}.
≤ a(k 3 , a(k 3 + 1, n)) Monotonie!
= a(k 3 + 1, n + 1)
≤ a(k 3 + 2, n) Eigenschaft 4 der Ackermannfkt.
und t = k 3 + 2 tut es hier! 2. Fall: P = LOOP x i DO Q END.
Die Absch¨ atzung erfolgt analog zum 1. Fall und wird als Ubungsaufgabe ¨ ¨ uberlassen.
Info IV 1.5 LOOP-Berechenbarkeit 215/217
c
Ernst W. Mayr
Satz 134
Die Ackermann-Funktion ist nicht LOOP-berechenbar.
Beweis:
Angenommen doch. Sei P ein zugeh¨ origes LOOP-Programm, das g(n) := a(n, n)
berechnet.
Nach Definition von f P gilt g(n) ≤ f P (n) f¨ ur alle n ∈ N 0 . W¨ ahle gem¨ aß dem obigen Lemma t mit f P (·) < a(t, ·) und setze n = t:
f P (t) < a(t, t) = g(t) ≤ f P (t)
⇒ Widerspruch!
Info IV 1.5 LOOP-Berechenbarkeit 216/217
c
Ernst W. Mayr
1.6 µ-rekursive Funktionen
F¨ ur eine Funktion f liefert der so genannte µ-Operator das kleinste Argument, f¨ ur das f gleich 0 wird (falls ein solches existiert). Der µ-Operator gestattet so z.B., vorab die Anzahl der Durchl¨ aufe einer WHILE-Schleife zu bestimmen, bis die Laufvariable gleich 0 wird.
Definition 135
Sei f eine (nicht notwendigerweise totale) k + 1-stellige Funktion.
Die durch Anwendung des µ-Operators entstehende Funktion f µ ist definiert durch:
f µ : N k 0 → N 0
(x 1 , . . . , x k ) 7→
min{n ∈ N 0 ; f (n, x 1 , . . . , x k ) = 0} falls f (m, x 1 , . . . , x k ) definiert f¨ ur alle m ≤ n
⊥ (undefiniert) sonst
Info IV 1.6µ-rekursive Funktionen 217/217
c
Ernst W. Mayr