Turing-Maschine (2)


Wir zeigen die Arbeitsweise einer Turing-Maschine an einem Beispiel: wir programmieren eine primitive Subtraktionsmaschine für natürliche Zahlen, die wir in der einfachsten möglichen Darstellung codieren, nämlich als Folgen eines einzigen Zeichens a.

Unser Bandalphabet soll B = {a,b,z} sein, und anfangs steht auf dem Band die Angabe "x - y" in folgender Form: x-mal das Zeichen a, mindestens ein Trennzeichen b, y-mal das Zeichen a; rechts und links davon stehen beliebig viele Leerzeichen z (tatsächlich genügt hier jeweils eines davon).

Die Maschine nutzt aus, daß gilt:

x - y = x falls y = 0
x - y = (x-1) - (y-1) sonst
Die Zustände haben folgende Bedeutung:
q0 = nimm ein Zeichen a von x weg (bilde x-1)
q1 = laufe nach rechts bis zur Trennung b
q2 = laufe nach rechts bis y und nimm dort ein a weg (bilde y-1)
q3 = prüfe, ob jetzt y=0 ist
q4 = laufe nach links bis an den Anfang von x
q5 = ebenso, aber lösche alle b
q6 = fertig!
Als "Programm" haben wir die Tafel
  a b z
q0q1 z R   
q1q1 a Rq2 b R 
q2q3 b Rq2 b R 
q3q4 a L  q5 z L
q4q4 a Lq4 b Lq0 z R
q5q5 a Lq5 z Lq6 z R
q6q0 a H   
Wir wollen nicht behaupten, daß dieses Programm besonders gut lesbar wäre; aber ein kleines Beipiel selbst durchzuspielen klärt vieles.


zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36