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.
100 KAPITEL 4. CHURCHSCHE THESE<br />
0. READ<br />
1. STORE 1<br />
2. READ<br />
3. STORE 2<br />
Jetzt wird R1 solange zu R3 (= Speicher des Ergebnisses) addiert, bis = 0 ist,<br />
wobei bei jedem Schritt := − 1 gesetzt wird. Falls = 0, spr<strong>in</strong>gen<br />
wir zur Zeile a, die den WRITE-Befehl ausführt:<br />
4. IF R2 = 0 GOTO a<br />
5. LOAD 1<br />
6. ADD 3<br />
7. STORE 3<br />
8. PRED R2<br />
9. GOTO 4<br />
a = 10. LOAD 3<br />
11. WRITE<br />
Beispiel 6. Simulation e<strong>in</strong>er Tur<strong>in</strong>gmasch<strong>in</strong>e.<br />
Für jede TM können wir e<strong>in</strong> Programm für RAM schreiben, das die Arbeit der TM<br />
Schritt für Schritt simuliert. Wir nehmen an, dass die Zustände der TM durchnummeriert<br />
s<strong>in</strong>d:<br />
Q = {q0, q1, . . .,qn}, wobei q0 der Initialzustand ist,<br />
sowie auch die Symbole des Bandalphabetes:<br />
def.<br />
Σ = {s1, s2, . . .,sm} und s0 = #.<br />
Schließlich werden auch die Felder des Bandes durchnummeriert: 0 für das erste<br />
Feld der E<strong>in</strong>gabe und 1, 2, 3, . . . für die weiter rechts stehenden Felder. Um die<br />
Notation zu vere<strong>in</strong>fachen, nehmen wir an, dass die TM die Felder l<strong>in</strong>ks von 0 nie<br />
besucht. (Sonst könnten wir z.B. die Felder rechts von 0 nur mit geraden Zahlen<br />
nummerieren und die l<strong>in</strong>ks von 0 stehenden mit ungeraden Zahlen.)<br />
Um die Simulation zu vere<strong>in</strong>fachen, nehmen wir weiter an, dass die TM e<strong>in</strong> Spezialsymbol<br />
@ benutzt, das immer als letztes Symbol auf dem Band steht. Die E<strong>in</strong>gabe<br />
si0 . . .sik hat also die Form<br />
si0<br />
si1<br />
si2 . . . sik @ # # . . .<br />
0 1 2 k k+1k+2<br />
Bei der obigen Nummerierung von Σ sei @ = sm. Die E<strong>in</strong>gabe wird im E<strong>in</strong>gabeband<br />
der RAM entsprechend codiert:<br />
i0 i1 i2 . . . ik m 0 0 . . .<br />
Die Register der RAM spielen die folgende Rolle:<br />
R0 (Akkumulator)<br />
R1 (Zustand) enthält i, falls die TM im Zustand qi ist<br />
R2 (Kopfposition) enthält k + 2, falls der Kopf am Feld k steht<br />
R(3 + i) (Band<strong>in</strong>halt) enthält t, falls im Feld i das Symbol st steht.<br />
Das Programm der RAM, das die TM simuliert, besteht aus drei Teilen:<br />
Teil 1 sorgt dafür, dass die E<strong>in</strong>gabe<br />
si0<br />
si1<br />
si2 . . . s<strong>in</strong> @ = sm<br />
<strong>in</strong> die Register R3, R4, . . . , R(3 + n) und R(3 + n + 1) gelesen wird. Wir lesen also<br />
(mit READ) die E<strong>in</strong>gaben so lange, bis m (der Index von @ = sm) gelesen wird. Dabei<br />
lassen wir die Register R1 und R2 zunächst leer. Es ist e<strong>in</strong>fach, so e<strong>in</strong> Programm<br />
mit Hilfe der obigen Beispiele 1 bis 3 <strong>in</strong> Abschnitt 4.1 zu schreiben:<br />
0. LOAD !3<br />
1. STORE 2<br />
. . .