25.07.2013 Aufrufe

Vorlesung Theoretische Informatik II

Vorlesung Theoretische Informatik II

Vorlesung Theoretische Informatik II

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!