Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...
86 KAPITEL 3. TURINGMASCHINEN 3. Die Sprache {a n b n c n ; n ≥ 1} (siehe Beispiel 4 in Abschnitt 3.2.5 und Satz 1 in Abschnitt 3.2.5). Beispiel 2. Eine Sprache Lcode, die nicht rekursiv aufzählbar ist. Es ist nicht möglich, ein ” natürliches“ Beispiel einer nicht rekursiv aufzählbaren Sprache zu finden, da alle ” natürlichen“ Beispiele durch irgendeinen Algorithmus beschrieben werden. Aber vorausgesetzt, dass wir eine Codierung für alle TM mit dem Bandalphabet {0, 1} haben (eine solche Codierung wird in Kapitel 5.1 ausführlich beschrieben), können wir eine konkrete Sprache, die nicht rekursiv aufzählbar ist, konstruieren. Wir nehmen also an, dass es für jede Turingmaschine M mit Bandalphabet {0, 1} ein Wort c(M) über {0, 1} gibt, sodass der Code c(M) die Sprache der Turingmaschine M vollständig beschreibt. Das heißt, dass für alle Turingmaschinen M und M ′ gilt: c(M) = c(M ′ ) ⇒ L(M) = L(M ′ ). Mit Lcode bezeichnen wir die Sprache aller Codewörter w = c(M) solcher Turingmaschinen M, die ihr eigenes Codewort nicht akzeptieren: Lcode = {w; w = c(M) für eine Turingmaschine M mit w /∈ L(M)}. Diese Sprache ist nicht rekursiv aufzählbar. Beweis. Die Annahme, dass es eine Turingmaschine ˆ M mit L( ˆ M) = Lcode gibt, führt zu einem Widerspruch. Für das Codewort ˆw = c( ˆ M) dieser Maschine ˆ M zeigen wir nämlich, dass (a) aus ˆw /∈ Lcode folgt ˆw ∈ Lcode und (b) aus ˆw ∈ Lcode folgt ˆw /∈ Lcode. Dann ist weder ˆw ∈ Lcode noch ˆw /∈ Lcode wahr. Zu (a): Da ˆw /∈ L( ˆ M) und ˆw = c( ˆ M), folgt aus der Definition von Lcode, dass ˆw ∈ Lcode. Zu (b): Da ˆw ∈ Lcode, gibt es M mit ˆw = c(M) und ˆw /∈ L(M). Aus c(M) = c( ˆ M) folgt aber L(M) = L( ˆ M); es gilt also ˆw /∈ L( ˆ M) = Lcode. Bemerkung 1. Jede rekursive Sprache ist selbstverständlich rekursiv aufzählbar, und jede kontextfreie Sprache ist rekursiv, wie sofort bewiesen wird. REGULÄR KONTEXTFREI REKURSIV REKURSIV AUFZÄHLBAR ALLE SPRACHEN Beispiel 4 in Abschnitt 3.2.5 zeigt, dass die Sprache L = {a n b n c n ; n ≥ 1} rekursiv (aber nicht kontextfrei) ist. Ein Beispiel einer Sprache, die rekursiv aufzählbar aber nicht rekursiv ist, wird in Kapitel 5 vorgeführt. Dort zeigen wir, dass ein solches Beispiel die Sprache Lhalt aller Wörter c(M)w ist, wobei M eine Turingmaschine und w ein Eingabewort ist,
3.3. ENTSCHEIDBARE PROBLEME UND REKURSIVE SPRACHEN 87 auf das die Turingmaschine M hält. (Das bedeutet, dass das ” Halteproblem“ nicht entscheidbar ist.) Beispiel 3. Jede kontextfreie Sprache ist rekursiv. Wir können nämlich den CYK- Algorithmus (Kapitel 2.7) durch eine Turingmaschine, die auf jede Eingabe hält, wie folgt implementieren. Die TM hat zwei Bänder : Band 1 ist das Eingabeband und auf Band 2 werden die Mengen Vi,j berechnet. Die TM hat ein zusätzliches Gedächtnis, in dem die Regeln der Grammatik gespeichert werden. Das Bandalphabet von Band 1 ist also Σ, und Kopf 1 ist ein Lesekopf. Band 2 hat als Bandalphabet die Potenzmenge 2 V aller Mengen von Variablen. Die Felder von Band 2 sind mit zwei Indizes nummeriert, wir nehmen also an, dass es für jedes Paar i, j = 1, 2, 3, . . . genau ein Feld xij auf Band 2 gibt. Band 1 (Eingabeband) Band 2 (Hilfsband für Vi,j) . . . . . . . . . s1 s2 s3 s4 sn . . . . . . x11 x12 x22 x13 x23 x33 x14 . . . xnn Im ersten Schritt werden die Felder xi1, i = 1, . . .,n (wobei n die Länge der Eingabe ist) mit Vi,1 = {A ∈ V ; A → si ist eine Regel} und die Felder xij, 1 < j ≤ n − i + 1 mit ∅ beschriftet. Der rekursive Schritt wird wie im CYK-Algorithmus durchgeführt: nachdem alle Felder xi,1, . . . , xi,j−1 (i ≤ n) beschriftet wurden, wird xi,j mit Vi,j = {A ∈ V ; A → BC für B ∈ Vi,k und C ∈ Vi+k,j−k, wobei k < j} beschriftet. Am Ende überprüft die TM, ob im Feld x1n eine Menge, die S enthält, steht oder nicht. Bemerkung 2. Ein direkter Weg wäre, jeden Kellerautomaten durch eine TM zu simulieren. Das stieße aber auf die Schwierigkeit, dass Kellerautomaten nichtdeterministisch sind. Wir führen den entsprechenden Begriff für TM in Abschnitt 3.4 ein. Satz 1. Falls L und L ′ rekursive Sprachen sind, sind auch die Sprachen L + L ′ , L ∩ L ′ , LL ′ und L ∗ rekursiv. Beweis. Sei M eine TM, die L akzeptiert, und M ′ eine TM, die L ′ akzeptiert. Wir nehmen an, dass M und M ′ auf jede Eingabe halten. 1. L + L ′ . Diese Sprache wird von einer 2-Band TM akzeptiert, die auf Band 1 die Maschine M und gleichzeitig auf Band 2 die Maschine M ′ simuliert. Falls beide Maschinen halten, ist der Zustand der neuen Maschine genau dann final, wenn einer der entsprechenden Zustände (von M oder M ′ ) final ist. 2. L∩L ′ . Der Beweis ist analog zu 1., nur ist ein Zustand genau dann final, wenn beide Zustände (von M sowie von M ′ ) final sind. 3. LL ′ . Hier benutzen wir eine 4-Band-Turingmaschine M. Band 1 ist ein Eingabeband mit einem read-only-Kopf. Auf Band 2 steht die Zahl i der Etappe (am Anfang i = 0). Auf Band 3 wird M simuliert, und auf Band 4 wird M ′ simuliert. Jede Eingabe s1 . . . sn der Länge n wird in n + 1 Etappen berechnet. Die i-te Etappe besteht daraus, dass das Wort s1 . . .si auf Band 3 und das Wort si+1 . . .sn auf Band 4 kopiert werden, und dann simuliert unsere TM die Maschine M auf Band 2 und die Maschine M ′ auf Band 3, bis beide Maschinen M und M ′ halten. Falls sie beide akzeptieren, hält auch M und akzeptiert. Falls M oder M ′ nicht akzeptiert und i < n, wird die nächste Etappe mit i := i + 1 durchgeführt. Falls M oder M ′ nicht akzeptiert und i = n, hält M und akzeptiert nicht.
- Seite 1: THEORETISCHE INFORMATIK Vorlesungss
- Seite 4 und 5: ii INHALTSVERZEICHNIS 3.4 Nichtdete
- Seite 6 und 7: iv INHALTSVERZEICHNIS
- Seite 8 und 9: 74 KAPITEL 3. TURINGMASCHINEN hat h
- Seite 10 und 11: 76 KAPITEL 3. TURINGMASCHINEN Die B
- Seite 12 und 13: 78 KAPITEL 3. TURINGMASCHINEN Diese
- Seite 14 und 15: 80 KAPITEL 3. TURINGMASCHINEN ist.
- Seite 16 und 17: 82 KAPITEL 3. TURINGMASCHINEN 3.2.5
- Seite 18 und 19: 84 KAPITEL 3. TURINGMASCHINEN (q0,
- Seite 22 und 23: 88 KAPITEL 3. TURINGMASCHINEN 4. L
- Seite 24 und 25: 90 KAPITEL 3. TURINGMASCHINEN 3.4 N
- Seite 26 und 27: 92 KAPITEL 3. TURINGMASCHINEN 1. Di
- Seite 28 und 29: 94 KAPITEL 3. TURINGMASCHINEN sie k
- Seite 30 und 31: 96 KAPITEL 3. TURINGMASCHINEN falls
- Seite 32 und 33: 98 KAPITEL 4. CHURCHSCHE THESE Zeil
- Seite 34 und 35: 100 KAPITEL 4. CHURCHSCHE THESE 0.
- Seite 36 und 37: 102 KAPITEL 4. CHURCHSCHE THESE 4.2
- Seite 38 und 39: 104 KAPITEL 4. CHURCHSCHE THESE Bei
- Seite 40 und 41: 106 KAPITEL 4. CHURCHSCHE THESE [uq
- Seite 42 und 43: 108 KAPITEL 4. CHURCHSCHE THESE Bew
- Seite 44 und 45: 110 KAPITEL 4. CHURCHSCHE THESE Alg
- Seite 46 und 47: 112 KAPITEL 4. CHURCHSCHE THESE All
- Seite 48 und 49: 114 KAPITEL 4. CHURCHSCHE THESE Bem
- Seite 50 und 51: 116 KAPITEL 4. CHURCHSCHE THESE Sei
- Seite 52 und 53: 118 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 54 und 55: 120 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 56 und 57: 122 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 58 und 59: 124 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 60 und 61: 126 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 62 und 63: 128 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 64 und 65: 130 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 66 und 67: 132 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 68 und 69: 134 KAPITEL 6. KOMPLEXITÄT VON ALG
86 KAPITEL 3. TURINGMASCHINEN<br />
3. Die Sprache {a n b n c n ; n ≥ 1} (siehe Beispiel 4 <strong>in</strong> Abschnitt 3.2.5 und Satz 1<br />
<strong>in</strong> Abschnitt 3.2.5).<br />
Beispiel 2. E<strong>in</strong>e Sprache Lcode, die nicht rekursiv aufzählbar ist.<br />
Es ist nicht möglich, e<strong>in</strong> ” natürliches“ Beispiel e<strong>in</strong>er nicht rekursiv aufzählbaren<br />
Sprache zu f<strong>in</strong>den, da alle ” natürlichen“ Beispiele durch irgende<strong>in</strong>en Algorithmus<br />
beschrieben werden. Aber vorausgesetzt, dass wir e<strong>in</strong>e Codierung für alle TM mit<br />
dem Bandalphabet {0, 1} haben (e<strong>in</strong>e solche Codierung wird <strong>in</strong> Kapitel 5.1 ausführlich<br />
beschrieben), können wir e<strong>in</strong>e konkrete Sprache, die nicht rekursiv aufzählbar<br />
ist, konstruieren. Wir nehmen also an, dass es für jede Tur<strong>in</strong>gmasch<strong>in</strong>e M mit Bandalphabet<br />
{0, 1} e<strong>in</strong> Wort c(M) über {0, 1} gibt, sodass der Code c(M) die Sprache<br />
der Tur<strong>in</strong>gmasch<strong>in</strong>e M vollständig beschreibt. Das heißt, dass für alle Tur<strong>in</strong>gmasch<strong>in</strong>en<br />
M und M ′ gilt:<br />
c(M) = c(M ′ ) ⇒ L(M) = L(M ′ ).<br />
Mit Lcode bezeichnen wir die Sprache aller Codewörter w = c(M) solcher Tur<strong>in</strong>gmasch<strong>in</strong>en<br />
M, die ihr eigenes Codewort nicht akzeptieren:<br />
Lcode = {w; w = c(M) für e<strong>in</strong>e Tur<strong>in</strong>gmasch<strong>in</strong>e M mit w /∈ L(M)}.<br />
Diese Sprache ist nicht rekursiv aufzählbar.<br />
Beweis. Die Annahme, dass es e<strong>in</strong>e Tur<strong>in</strong>gmasch<strong>in</strong>e ˆ M mit L( ˆ M) = Lcode gibt,<br />
führt zu e<strong>in</strong>em Widerspruch. Für das Codewort ˆw = c( ˆ M) dieser Masch<strong>in</strong>e ˆ M<br />
zeigen wir nämlich, dass (a) aus ˆw /∈ Lcode folgt ˆw ∈ Lcode und (b) aus ˆw ∈ Lcode<br />
folgt ˆw /∈ Lcode. Dann ist weder ˆw ∈ Lcode noch ˆw /∈ Lcode wahr.<br />
Zu (a): Da ˆw /∈ L( ˆ M) und ˆw = c( ˆ M), folgt aus der Def<strong>in</strong>ition von Lcode, dass<br />
ˆw ∈ Lcode.<br />
Zu (b): Da ˆw ∈ Lcode, gibt es M mit ˆw = c(M) und ˆw /∈ L(M). Aus c(M) = c( ˆ M)<br />
folgt aber L(M) = L( ˆ M); es gilt also ˆw /∈ L( ˆ M) = Lcode.<br />
Bemerkung 1. Jede rekursive Sprache ist selbstverständlich rekursiv aufzählbar,<br />
und jede kontextfreie Sprache ist rekursiv, wie sofort bewiesen wird.<br />
REGULÄR<br />
KONTEXTFREI<br />
REKURSIV<br />
REKURSIV AUFZÄHLBAR<br />
ALLE SPRACHEN<br />
Beispiel 4 <strong>in</strong> Abschnitt 3.2.5 zeigt, dass die Sprache L = {a n b n c n ; n ≥ 1} rekursiv<br />
(aber nicht kontextfrei) ist. E<strong>in</strong> Beispiel e<strong>in</strong>er Sprache, die rekursiv aufzählbar aber<br />
nicht rekursiv ist, wird <strong>in</strong> Kapitel 5 vorgeführt. Dort zeigen wir, dass e<strong>in</strong> solches<br />
Beispiel die Sprache<br />
Lhalt<br />
aller Wörter c(M)w ist, wobei M e<strong>in</strong>e Tur<strong>in</strong>gmasch<strong>in</strong>e und w e<strong>in</strong> E<strong>in</strong>gabewort ist,