Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
5.2. DAS HALTEPROBLEM 123<br />
Also überprüft M0, ob die E<strong>in</strong>gabe die Form c(M)w hat (siehe Bemerkung <strong>in</strong> 5.1),<br />
und falls das der Fall ist, simuliert sie die universale Tur<strong>in</strong>gmasch<strong>in</strong>e Mu. Die E<strong>in</strong>gabe<br />
v wird genau dann von M0 akzeptiert, wenn v = c(M)w und Mu (akzeptierend<br />
oder nicht akzeptierend) auf die E<strong>in</strong>gabe v hält. Äquivalent dazu ist: genau dann,<br />
wenn M auf die E<strong>in</strong>gabe w hält. Kürzer: L(M0) = Lhalt.<br />
Satz 2 (Unentscheidbarkeit des Halteproblems). Die Sprache Lhalt ist nicht rekursiv.<br />
Beweis. Die Annahme, dass Lhalt rekursiv ist, führt zu e<strong>in</strong>em Widerspruch: es<br />
folgt, dass die Sprache<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 />
rekursiv-aufzählbar ist. Das ist aber falsch, siehe Beispiel 2 <strong>in</strong> Kapitel 3.3.<br />
Sei Mhalt e<strong>in</strong>e TM, die Lhalt akzeptiert und auf jede E<strong>in</strong>gabe hält. Dann lässt sich<br />
<strong>in</strong> der Tat e<strong>in</strong>e TM konstruieren, die die Sprache Lcode akzeptiert:<br />
w EINGABE <br />
Hat w die Form<br />
w = c(M) für<br />
e<strong>in</strong>e TM M?<br />
TURINGMASCHINE Mcode<br />
JA<br />
Akzeptiert<br />
<br />
Mhalt E<strong>in</strong>gabe<br />
ww?<br />
JA<br />
Akzeptiert<br />
<br />
Mu E<strong>in</strong>gabe<br />
ww?<br />
<br />
<br />
<br />
NEIN NEIN NEIN<br />
w nicht akzeptiert w akzeptiert w akzeptiert<br />
Das heißt, dass die Tur<strong>in</strong>gmasch<strong>in</strong>e Mcode e<strong>in</strong>e E<strong>in</strong>gabe w wie folgt berechnet:<br />
JA <br />
w nicht<br />
akzeptiert<br />
1. Mcode überprüft, ob w = c(M) für e<strong>in</strong>e Tur<strong>in</strong>gmasch<strong>in</strong>e M gilt (siehe Bemerkung<br />
<strong>in</strong> 5.1).<br />
2. Falls ja, wiederholt Mcode die E<strong>in</strong>gabe und schreibt also<br />
auf das Band.<br />
ww = c(M)w<br />
3. Jetzt simuliert Mcode die Masch<strong>in</strong>e Mhalt bis sie hält.<br />
(a) Falls Mhalt die E<strong>in</strong>gabe ww nicht akzeptiert, hält Mcode und akzeptiert<br />
w. In diesem Fall hält nämlich die Masch<strong>in</strong>e M nicht auf die E<strong>in</strong>gabe w<br />
(denn c(M)w /∈ Lhalt); also wird w von M nicht akzeptiert – es folgt<br />
w ∈ Lcode.<br />
(b) Falls Mhalt akzeptiert, simuliert Mcode die universale TM auf dieselbe<br />
E<strong>in</strong>gabe ww. Da c(M)w ∈ Lhalt gilt, hält M auf die E<strong>in</strong>gabe w, also hält<br />
die universale TM auf die E<strong>in</strong>gabe c(M)w. Mcode akzeptiert genau dann,<br />
wenn Mu nicht akzeptiert.<br />
Die Tur<strong>in</strong>gmasch<strong>in</strong>e Mcode hält auf jede E<strong>in</strong>gabe: der erste Schritt hält (denn die<br />
Sprache aller Codes ist rekursiv, siehe 5.1), der zweite hält nach unserer Voraussetzung<br />
von Mhalt, und der letzte hält, denn Mu erhält nur solche E<strong>in</strong>gaben ww, die<br />
von Mhalt akzeptiert werden, das heißt E<strong>in</strong>gaben c(M)w mit w = c(M), so dass M<br />
auf w hält (oder äquivalent: Mu hält auf die E<strong>in</strong>gabe c(M)w = ww).<br />
Welche E<strong>in</strong>gaben w akzeptiert Mcode? Genau die der Form w = c(M), wobei entweder