- Registermaschine (Berechenbarkeitstheorie)
-
Die Registermaschine (auch RAM für engl. random access machine) ist ein Rechnermodell der theoretischen Informatik, das einem realen Rechner (PC) sehr ähnlich ist.
Eine Registermaschine kann alles, was auch ein realer Rechner kann. Da man auch beweisen kann, dass sich die Registermaschine und die Turingmaschine gegenseitig mit polynomieller Laufzeit simulieren können, gelten Aussagen, die man für die Turingmaschine beweisen kann, auch für die Registermaschine und damit auch für reale Rechner (sofern man von der Endlichkeit ihres Speichers absieht). Dies ist in der theoretischen Informatik von Vorteil, da man viele Aussagen anhand der Turingmaschine leichter beweisen kann.
Die hier vorgestellte Registermaschine stammt aus dem Bereich der Berechenbarkeitstheorie. Dies wird im weiteren Text nicht mehr erwähnt.
Definition
Eine Registermaschine arbeitet mit natürlichen Zahlen. Alle ab jetzt vorkommenden Zahlen sollten in diesem Kontext betrachtet werden.
Eine Registermaschine besteht aus
- einem Befehlszeiger b
- einem Input-Wert m
- einem Output-Wert n
- und aus einem unendlich großen Speicher aus durchnummerierten Speicherzellen (Register) r(1), r(2), r(3), ...
Weiterhin gibt es ein Registermaschinenprogramm, das aus einer Menge von Befehlen mit jeweils eindeutiger Nummer und einer Startmarke besteht.
Ein Befehl kann folgendermaßen aussehen (i > 0):
Befehl Wirkung Ai then p r(i):=r(i)+1 b:=p Si then p Wenn r(i) > 0 dann r(i):=r(i)-1 b:=p if Ti then p else q Wenn r(i)=0 dann b:=p ansonsten b:=q Zum Starten des Programms sollte zusätzlich ein Eingebedatensatz bestehend aus m geordneten Werten vorhanden sein.
Zu Beginn wird der Befehlszeiger b auf den Wert der Startmarke des Programms gesetzt. Die Speicherzellen von Nummer 1 bis m werden auf die entsprechenden Werte des Eingabedatensatzes gesetzt. Die restlichen Speicherzellen erhalten den Wert 0.
Die Registermaschine führt dann nacheinander die Befehle des Programms aus. Es wird immer der Befehl mit der Nummer b ausgeführt. Die Ausführung eines nichtexistenten Befehls terminiert das Programm.
Nach der Terminierung werden alle Werte von r(1) bis r(n) ausgegeben.
Registermaschinen lassen sich wie alle Maschinen anschaulich besonders gut durch Flussdiagramme darstellen.
Wikimedia Foundation.