Vorlesung Theoretische Informatik II
Vorlesung Theoretische Informatik II
Vorlesung Theoretische Informatik II
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Vorlesung</strong><br />
<strong>Theoretische</strong> <strong>Informatik</strong> <strong>II</strong><br />
Bernhard Beckert<br />
Institut für <strong>Informatik</strong><br />
Wintersemester 2007/2008<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 1 / 175
Dank<br />
Diese <strong>Vorlesung</strong>smaterialien basieren zum Teil auf den Folien zu den<br />
<strong>Vorlesung</strong>en von<br />
Katrin Erk (gehalten an der Universität Koblenz-Landau)<br />
Jürgen Dix (gehalten an der TU Clausthal)<br />
Christoph Kreitz (gehalten an der Universität Potsdam)<br />
Ihnen gilt mein herzlicher Dank.<br />
– Bernhard Beckert, Oktober 2007<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 2 / 175
µ-rekursive Funktionen<br />
Definition 12.1 (µ-rekursive Funktionen)<br />
Atomare Funktionen: Die konstanten Funktionen<br />
– Null 0<br />
– Nachfolger +1<br />
– Projektion πk i (1 ≤ i ≤ k)<br />
sind µ-rekursiv<br />
Komposition: Die durch Komposition aus µ-rekursiven Funktionen gebildeten<br />
Funktionen sind µ-rekursiv<br />
Primitive Rekursion: Die durch primitive Rekursion aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
µ-Operator: Die durch Anwendung des µ-Operators aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 153 / 175
µ-rekursive Funktionen<br />
Definition 12.1 (µ-rekursive Funktionen)<br />
Atomare Funktionen: Die konstanten Funktionen<br />
– Null 0<br />
– Nachfolger +1<br />
– Projektion πk i (1 ≤ i ≤ k)<br />
sind µ-rekursiv<br />
Komposition: Die durch Komposition aus µ-rekursiven Funktionen gebildeten<br />
Funktionen sind µ-rekursiv<br />
Primitive Rekursion: Die durch primitive Rekursion aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
µ-Operator: Die durch Anwendung des µ-Operators aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 153 / 175
µ-rekursive Funktionen<br />
Definition 12.1 (µ-rekursive Funktionen)<br />
Atomare Funktionen: Die konstanten Funktionen<br />
– Null 0<br />
– Nachfolger +1<br />
– Projektion πk i (1 ≤ i ≤ k)<br />
sind µ-rekursiv<br />
Komposition: Die durch Komposition aus µ-rekursiven Funktionen gebildeten<br />
Funktionen sind µ-rekursiv<br />
Primitive Rekursion: Die durch primitive Rekursion aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
µ-Operator: Die durch Anwendung des µ-Operators aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 153 / 175
µ-rekursive Funktionen<br />
Definition 12.1 (µ-rekursive Funktionen)<br />
Atomare Funktionen: Die konstanten Funktionen<br />
– Null 0<br />
– Nachfolger +1<br />
– Projektion πk i (1 ≤ i ≤ k)<br />
sind µ-rekursiv<br />
Komposition: Die durch Komposition aus µ-rekursiven Funktionen gebildeten<br />
Funktionen sind µ-rekursiv<br />
Primitive Rekursion: Die durch primitive Rekursion aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
µ-Operator: Die durch Anwendung des µ-Operators aus µ-rekursiven<br />
Funktionen gebildeten Funktionen sind µ-rekursiv<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 153 / 175
µ-rekursive Funktionen<br />
Notation<br />
F part<br />
µ<br />
Fµ = Menge der totalen µ-rekursiven Funktionen<br />
= Menge aller µ-rekursiven Funktionen<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 154 / 175
µ-rekursive Funktionen<br />
Theorem 12.2<br />
Fµ ⊆ WHILE und F part<br />
µ<br />
⊆ WHILE part<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 155 / 175
µ-rekursive Funktionen<br />
Beweis (Skizze)<br />
Wir haben schon bewiesen:<br />
℘= LOOP ⊂ WHILE<br />
Bei Verwendung des entsprechenden Beweises bleibt zu zeigen,<br />
dass der µ-Operator in WHILE nachgebildet werden kann.<br />
f(n) = µi(g(n,i) = 0)<br />
kann berechnet werden durch:<br />
xi = 0; while g(n,xi) = 0 do xi := xi + 1 end<br />
(informelle Notation!)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 156 / 175
µ-rekursive Funktionen<br />
Beweis (Skizze)<br />
Wir haben schon bewiesen:<br />
℘= LOOP ⊂ WHILE<br />
Bei Verwendung des entsprechenden Beweises bleibt zu zeigen,<br />
dass der µ-Operator in WHILE nachgebildet werden kann.<br />
f(n) = µi(g(n,i) = 0)<br />
kann berechnet werden durch:<br />
xi = 0; while g(n,xi) = 0 do xi := xi + 1 end<br />
(informelle Notation!)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 156 / 175
µ-rekursive Funktionen<br />
Beweis (Skizze)<br />
Wir haben schon bewiesen:<br />
℘= LOOP ⊂ WHILE<br />
Bei Verwendung des entsprechenden Beweises bleibt zu zeigen,<br />
dass der µ-Operator in WHILE nachgebildet werden kann.<br />
f(n) = µi(g(n,i) = 0)<br />
kann berechnet werden durch:<br />
xi = 0; while g(n,xi) = 0 do xi := xi + 1 end<br />
(informelle Notation!)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 156 / 175
µ-rekursive Funktionen<br />
Beweis (Skizze)<br />
Wir haben schon bewiesen:<br />
℘= LOOP ⊂ WHILE<br />
Bei Verwendung des entsprechenden Beweises bleibt zu zeigen,<br />
dass der µ-Operator in WHILE nachgebildet werden kann.<br />
f(n) = µi(g(n,i) = 0)<br />
kann berechnet werden durch:<br />
xi = 0; while g(n,xi) = 0 do xi := xi + 1 end<br />
(informelle Notation!)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 156 / 175
Ackermann-Funktion<br />
Wilhelm Ackermann 1896, 1962<br />
Mathematiker und Logiker<br />
Promovierte bei D. Hilbert in Göttingen<br />
(Koautor von Hiberts Buch<br />
Grundzüge der <strong>Theoretische</strong>n Logik)<br />
Mathematiklehrer in Lüdenscheid<br />
Aus seinem Nachruf:<br />
Oberstudienrat Dr. Ackermann war aber nicht<br />
nur ein allseits geschätzter und beliebter Lehrer,<br />
sondern auch ein weltbekannter Wissenschaftler<br />
. . .<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 157 / 175
Ackermann-Funktion<br />
Wilhelm Ackermann 1896, 1962<br />
Mathematiker und Logiker<br />
Promovierte bei D. Hilbert in Göttingen<br />
(Koautor von Hiberts Buch<br />
Grundzüge der <strong>Theoretische</strong>n Logik)<br />
Mathematiklehrer in Lüdenscheid<br />
Aus seinem Nachruf:<br />
Oberstudienrat Dr. Ackermann war aber nicht<br />
nur ein allseits geschätzter und beliebter Lehrer,<br />
sondern auch ein weltbekannter Wissenschaftler<br />
. . .<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 157 / 175
Ackermann-Funktion<br />
Wilhelm Ackermann 1896, 1962<br />
Mathematiker und Logiker<br />
Promovierte bei D. Hilbert in Göttingen<br />
(Koautor von Hiberts Buch<br />
Grundzüge der <strong>Theoretische</strong>n Logik)<br />
Mathematiklehrer in Lüdenscheid<br />
Aus seinem Nachruf:<br />
Oberstudienrat Dr. Ackermann war aber nicht<br />
nur ein allseits geschätzter und beliebter Lehrer,<br />
sondern auch ein weltbekannter Wissenschaftler<br />
. . .<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 157 / 175
Ackermann-Funktion<br />
Wilhelm Ackermann 1896, 1962<br />
Mathematiker und Logiker<br />
Promovierte bei D. Hilbert in Göttingen<br />
(Koautor von Hiberts Buch<br />
Grundzüge der <strong>Theoretische</strong>n Logik)<br />
Mathematiklehrer in Lüdenscheid<br />
Aus seinem Nachruf:<br />
Oberstudienrat Dr. Ackermann war aber nicht<br />
nur ein allseits geschätzter und beliebter Lehrer,<br />
sondern auch ein weltbekannter Wissenschaftler<br />
. . .<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 157 / 175
Ackermann-Funktion<br />
Wilhelm Ackermann 1896, 1962<br />
Mathematiker und Logiker<br />
Promovierte bei D. Hilbert in Göttingen<br />
(Koautor von Hiberts Buch<br />
Grundzüge der <strong>Theoretische</strong>n Logik)<br />
Mathematiklehrer in Lüdenscheid<br />
Aus seinem Nachruf:<br />
Oberstudienrat Dr. Ackermann war aber nicht<br />
nur ein allseits geschätzter und beliebter Lehrer,<br />
sondern auch ein weltbekannter Wissenschaftler<br />
. . .<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 157 / 175
Ackermann-Funktion<br />
Definition 12.3 (Ackermann-Funktion A)<br />
⎧<br />
⎨<br />
A0(x) =<br />
⎩<br />
An+1(0) = 1<br />
1 falls x = 0<br />
2 falls x = 1<br />
x + 2 sonst<br />
An+1(x + 1) = An(An+1(x))<br />
A(x) = Ax(x)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 158 / 175
Ackermann-Funktion<br />
Definition 12.3 (Ackermann-Funktion A)<br />
⎧<br />
⎨<br />
A0(x) =<br />
⎩<br />
An+1(0) = 1<br />
1 falls x = 0<br />
2 falls x = 1<br />
x + 2 sonst<br />
An+1(x + 1) = An(An+1(x))<br />
A(x) = Ax(x)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 158 / 175
Ackermann-Funktion<br />
Definition 12.3 (Ackermann-Funktion A)<br />
⎧<br />
⎨<br />
A0(x) =<br />
⎩<br />
An+1(0) = 1<br />
1 falls x = 0<br />
2 falls x = 1<br />
x + 2 sonst<br />
An+1(x + 1) = An(An+1(x))<br />
A(x) = Ax(x)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 158 / 175
Ackermann-Funktion<br />
Wachstumsverhalten<br />
A1(x) = 2 ∗ x<br />
A2(x) = 2 x<br />
A3(x) = 2 2...2<br />
<br />
x mal<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 159 / 175
Ackermann-Funktion<br />
Wachstumsverhalten<br />
A4(3) = 2 222<br />
= 65536<br />
A4(4) = 2 2...2<br />
<br />
65536 mal<br />
A4(5) = 2 2...2<br />
<br />
A4(4) mal<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 160 / 175
Ackermann-Funktion<br />
Wachstumsverhalten<br />
A4(3) = 2 222<br />
= 65536<br />
A4(4) = 2 2...2<br />
<br />
65536 mal<br />
A4(5) = 2 2...2<br />
<br />
A4(4) mal<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 160 / 175
Ackermann-Funktion<br />
Theorem 12.4<br />
Die Ackermann-Funktion ist<br />
total<br />
µ-rekursiv<br />
nicht primitiv-rekursiv<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 161 / 175
Ackermann-Funktion<br />
Beweis<br />
Die Funktionen An sind total, da in jedem Rekursionsschritt eines der<br />
Argumente kleiner wird.<br />
A ist TM-berechenbar, weil man den Rekursions-Stack auf dem Band<br />
speichern kann.<br />
Wegen Fµ = WHILE (Beweis später)<br />
ist A auch µ-rekursiv<br />
Bei einer primitiv rekursiven Funktion f ist die zur Berechnung von f(n)<br />
notwendige Funktions-Schachtelungstiefe für alle n gleich.<br />
A kann mit konstanter Funktions-Schachtelungstiefe nicht berechnet werden.<br />
(Detaillierter Beweis sehr aufwendig)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 162 / 175
Ackermann-Funktion<br />
Beweis<br />
Die Funktionen An sind total, da in jedem Rekursionsschritt eines der<br />
Argumente kleiner wird.<br />
A ist TM-berechenbar, weil man den Rekursions-Stack auf dem Band<br />
speichern kann.<br />
Wegen Fµ = WHILE (Beweis später)<br />
ist A auch µ-rekursiv<br />
Bei einer primitiv rekursiven Funktion f ist die zur Berechnung von f(n)<br />
notwendige Funktions-Schachtelungstiefe für alle n gleich.<br />
A kann mit konstanter Funktions-Schachtelungstiefe nicht berechnet werden.<br />
(Detaillierter Beweis sehr aufwendig)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 162 / 175
Ackermann-Funktion<br />
Beweis<br />
Die Funktionen An sind total, da in jedem Rekursionsschritt eines der<br />
Argumente kleiner wird.<br />
A ist TM-berechenbar, weil man den Rekursions-Stack auf dem Band<br />
speichern kann.<br />
Wegen Fµ = WHILE (Beweis später)<br />
ist A auch µ-rekursiv<br />
Bei einer primitiv rekursiven Funktion f ist die zur Berechnung von f(n)<br />
notwendige Funktions-Schachtelungstiefe für alle n gleich.<br />
A kann mit konstanter Funktions-Schachtelungstiefe nicht berechnet werden.<br />
(Detaillierter Beweis sehr aufwendig)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 162 / 175
Ackermann-Funktion<br />
Beweis<br />
Die Funktionen An sind total, da in jedem Rekursionsschritt eines der<br />
Argumente kleiner wird.<br />
A ist TM-berechenbar, weil man den Rekursions-Stack auf dem Band<br />
speichern kann.<br />
Wegen Fµ = WHILE (Beweis später)<br />
ist A auch µ-rekursiv<br />
Bei einer primitiv rekursiven Funktion f ist die zur Berechnung von f(n)<br />
notwendige Funktions-Schachtelungstiefe für alle n gleich.<br />
A kann mit konstanter Funktions-Schachtelungstiefe nicht berechnet werden.<br />
(Detaillierter Beweis sehr aufwendig)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 162 / 175
Ackermann-Funktion<br />
Beweis<br />
Die Funktionen An sind total, da in jedem Rekursionsschritt eines der<br />
Argumente kleiner wird.<br />
A ist TM-berechenbar, weil man den Rekursions-Stack auf dem Band<br />
speichern kann.<br />
Wegen Fµ = WHILE (Beweis später)<br />
ist A auch µ-rekursiv<br />
Bei einer primitiv rekursiven Funktion f ist die zur Berechnung von f(n)<br />
notwendige Funktions-Schachtelungstiefe für alle n gleich.<br />
A kann mit konstanter Funktions-Schachtelungstiefe nicht berechnet werden.<br />
(Detaillierter Beweis sehr aufwendig)<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 162 / 175
1 Einführung<br />
2 Primitiv rekursive Funktionen<br />
3 ℘ = LOOP<br />
4 µ-rekursive Funktionen<br />
5 Fµ = TM = WHILE<br />
6 Zusammenfassung<br />
Teil <strong>II</strong>I<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: WS 2007/08 163 / 175
1 Einführung<br />
2 Primitiv rekursive Funktionen<br />
3 ℘ = LOOP<br />
4 µ-rekursive Funktionen<br />
5 Fµ = TM = WHILE<br />
6 Zusammenfassung<br />
Teil <strong>II</strong>I<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: Fµ = TM = WHILE WS 2007/08 164 / 175
Rück- und Ausblick<br />
Aus dem <strong>Vorlesung</strong>steil „Registermaschinen“ wissen wir:<br />
LOOP WHILE = GOTO ⊆ TM<br />
WHILE part = GOTO part ⊆ TM part<br />
In diesem Abschnitt schon gezeigt:<br />
LOOP =℘<br />
Fµ ⊆ WHILE und F part<br />
µ<br />
Noch zu zeigen:<br />
TM ⊆ Fµ und TM part ⊆ F part<br />
µ<br />
⊆ WHILE<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: Fµ = TM = WHILE WS 2007/08 165 / 175
Rück- und Ausblick<br />
Aus dem <strong>Vorlesung</strong>steil „Registermaschinen“ wissen wir:<br />
LOOP WHILE = GOTO ⊆ TM<br />
WHILE part = GOTO part ⊆ TM part<br />
In diesem Abschnitt schon gezeigt:<br />
LOOP =℘<br />
Fµ ⊆ WHILE und F part<br />
µ<br />
Noch zu zeigen:<br />
TM ⊆ Fµ und TM part ⊆ F part<br />
µ<br />
⊆ WHILE<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: Fµ = TM = WHILE WS 2007/08 165 / 175
Rück- und Ausblick<br />
Aus dem <strong>Vorlesung</strong>steil „Registermaschinen“ wissen wir:<br />
LOOP WHILE = GOTO ⊆ TM<br />
WHILE part = GOTO part ⊆ TM part<br />
In diesem Abschnitt schon gezeigt:<br />
LOOP =℘<br />
Fµ ⊆ WHILE und F part<br />
µ<br />
Noch zu zeigen:<br />
TM ⊆ Fµ und TM part ⊆ F part<br />
µ<br />
⊆ WHILE<br />
B. Beckert – <strong>Theoretische</strong>n <strong>Informatik</strong> <strong>II</strong>: Fµ = TM = WHILE WS 2007/08 165 / 175