Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...

iti.cs.tu.bs.de
von iti.cs.tu.bs.de Mehr von diesem Publisher
18.09.2013 Aufrufe

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.

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,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!