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.
102 KAPITEL 4. CHURCHSCHE THESE<br />
4.2 RAM-Berechenbarkeit<br />
Def<strong>in</strong>ition. E<strong>in</strong>e RAM berechnet e<strong>in</strong>e Funktion f(n1, n2, . . . , nk), deren Variablen<br />
und Werte <strong>in</strong> liegen, falls die RAM auf die E<strong>in</strong>gabe n1, n2, . . . , nk hält und auf dem<br />
Ausgabeband m (nur e<strong>in</strong>e Zahl) steht, wobei f(n1, . . .,nk) = m. E<strong>in</strong>e Funktion, die<br />
von e<strong>in</strong>er (geeignet programmierten) RAM berechnet werden kann, heißt RAMberechenbar.<br />
Beispiel 1. Die Funktionen<br />
f(n, m) = n + m und f(n, m) = n ∗ m<br />
s<strong>in</strong>d RAM-berechenbar.<br />
Das Programmieren von RAMs ist zwar im Vergleich zu modernen Programmiersprachen<br />
aufwendig und kompliziert, trotzdem ist es nicht schwer zu zeigen, dass<br />
jede Funktion, die sich mit e<strong>in</strong>em PASCAL-Programm berechnen lässt, auch <strong>in</strong> e<strong>in</strong>er<br />
RAM programmiert werden kann.<br />
Obwohl Tur<strong>in</strong>gmasch<strong>in</strong>en weniger realistisch als RAMs s<strong>in</strong>d (und viel e<strong>in</strong>facher),<br />
s<strong>in</strong>d sie ke<strong>in</strong>eswegs schwächer:<br />
Satz 1. Jede RAM-berechenbare Funktion ist Tur<strong>in</strong>g-berechenbar.<br />
Beweis. Wir haben e<strong>in</strong> RAM-Programm für die Funktion f(a1, . . .,ak), und wir<br />
simulieren es mit e<strong>in</strong>er 6-Band TM mit zusätzlichem Gedächtnis wir folgt:<br />
Band 1 (E<strong>in</strong>gabeband)<br />
Band 2 (Speicher)<br />
Band 3 (Akkumulator)<br />
Band 4 (Befehlszähler)<br />
Band 5 (Hilfsband)<br />
Band 6 (Ausgabeband)<br />
$ a1 $ a2 $ . . . ak $<br />
$ $ 1 $ $$ 2 $ $ $<br />
<br />
<br />
f(a1, . . . , ak)<br />
Die TM hat also das Bandalphabet Σ = {|, $}, und die E<strong>in</strong>gabe der RAM wird<br />
mit Trennungssymbolen $ auf Band 1 geschrieben. Band 2 enthält den Speicher<br />
der RAM: falls Register Ri benutzt wurde und momentan n enthält, f<strong>in</strong>den wir auf<br />
Band 2 die Komb<strong>in</strong>ation<br />
$ $ i $ n $$, was = n bedeutet.<br />
(Wir können aber mehrere solcher Komb<strong>in</strong>ationen mit demselben i auf Band 2<br />
f<strong>in</strong>den. In diesem Fall nehmen wir nur die, die am weitesten rechts steht). Band<br />
3 enthält den Inhalt des Akkumulators und Band 4 den des Befehlszählers. Band<br />
6 ist das Ausgabeband. Das (endliche) Programm der RAM ist im zusätzlichen<br />
Gedächtnis der TM gespeichert.<br />
Anfang der Simulation: Alle Bänder außer Band 1 s<strong>in</strong>d leer. Speziell wird Befehl<br />
Nr. 0 (= 0) simuliert.<br />
Simulation der Befehle: Es wird immer der Befehl, dessen Zeilennummer auf Band<br />
4 steht, simuliert. Wir zeigen e<strong>in</strong>ige Beispiele:<br />
READ Auf Band 1 steht der Kopf unter $, jetzt bewegt er sich, bis er auf dem<br />
nächsten $ stehen bleibt, wobei die Zahl ai auf Band 3 geschrieben<br />
wird. Danach wird der Befehlszähler (Band 4) um 1 erhöht.<br />
STORE i Auf Band 2 wird nach dem letzten Symbol $ die Komb<strong>in</strong>ation i $ n $<br />
$ geschrieben, wobei n der Inhalt des Akkumulators (Band 3) ist.<br />
. . .