18.09.2013 Aufrufe

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

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

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

. . .

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!