Theoretische Informatik

Turing­maschine

 aufwärts

Die Turing­maschine ist ein sehr einfaches abstraktes Modell eines Computers – das gleichwohl mächtig genug ist, alles zu berechnen, was berechenbar ist.

Benannt ist die Turing­maschine nach A.M. Turingzur Person, der sie 1936 erdacht hat [Tur 36].

 

Idee

Das Maschinen­modell der Turing­maschine ist in Bild 1 dargestellt. Die Turing­maschine hat ein Steuerwerk, in dem sich das Programm befindet. Die Turing­maschine kann mit einem Schreib-/Lesekopf auf ein Arbeitsband zugreifen, sie kann dabei Zeichen auf dem Arbeitsband lesen und Zeichen auf das Arbeitsband schreiben. Ferner kann sie den Schreib-/Lesekopf nach links oder rechts bewegen.

Das Arbeitsband ist in Felder unterteilt. Der Anfang des Arbeitsbandes ist mit dem Band­begrenzungs­zeichen $ gekennzeichnet; nach rechts ist das Arbeitsband unbeschränkt.

Zu Beginn der Verarbeitung steht am Anfang des Arbeitsbandes ein Eingabewort, die restlichen Felder des Arbeitsbandes enthalten das Leerzeichen Zeichen für Leerzeichen.

Turingmaschine
Bild 1:  Turing­maschine

 

Definition

Formal lässt sich die Turing­maschine wie folgt darstellen:

Definition:  Eine Turing­maschine ist ein 6-Tupel

M  =  (Z, E, A, d, q, f).

Hierbei ist

Z eine endliche, nichtleere Menge von Zuständen des Steuerwerks,
E das Eingabe­alphabet,
A das Arbeits­alphabet,  wobei E enthalten A,
d die Übergangs­relation   d enthalten ZkreuzAkreuzA'kreuzZ,  hierbei ist A' = A vereinigt {L, R},
q Element Z    der Startzustand,
f Element Z    der Endzustand  (accepting state)

Das Arbeits­alphabet A enthält die speziellen Zeichen Zeichen für Leerzeichen und $; diese kommen nicht im Eingabe­alphabet vor.

 

Arbeitsweise

Die Elemente der Übergangs­relation d sind 4-Tupel der Form (s, a, a', s'). Diese stellen mögliche Zustands­übergänge der Turing­maschine dar, mit folgender Bedeutung: wenn die Turing­maschine im Zustand s ist und das Zeichen a auf dem Arbeitsband liest, so überschreibt sie es mit dem Zeichen a' und geht in den Folgezustand s' über. Das Zeichen a' kann auch eines der Symbole L oder R sein; in diesem Fall schreibt die Turing­maschine nicht, sondern bewegt den Schreib-/Lesekopf nach links (L) oder nach rechts (R).

Wir gehen im Folgenden zunächst davon aus, dass für jedes Paar, bestehend aus Zustand s und Zeichen a, höchstens ein solcher Zustands­übergang definiert ist, d.h. die Turing­maschine arbeitet deterministisch.

Es kann auch sein, dass für einen Zustand s und ein Zeichen a kein Folgezustand und kein neues Zeichen definiert ist; in diesem Fall hält die Turing­maschine.

Die Übergangs­relation d ist also bei einer deterministischen Turing­maschine eine partielle Funktion, d.h. wenn ein Zustands­übergang möglich ist, so ist dieser eindeutig.

Die Turing­maschine wird im Startzustand q gestartet. Der Schreib-/Lesekopf befindet sich auf dem ersten Feld hinter dem Band­begrenzungs­zeichen $. Dort steht das Eingabewort w auf dem Arbeitsband (siehe Bild 1).

Die Turing­maschine liest das erste Zeichen des Eingabewortes und führt von dort ausgehend die entsprechenden weiteren Zustands­übergänge durch. Dabei können zwei Situationen auftreten. Entweder kommt die Turing­maschine irgendwann zu einem Zustand, von dem aus mit dem gelesenen Zeichen kein weiterer Zustands­übergang definiert ist, d.h. die Turing­maschine hält, oder die Turing­maschine läuft unendlich lange weiter.

Wenn der Zustand, in dem die Turing­maschine hält, der Endzustand f ist, so erkennt die Turing­maschine das Eingabewort w. Wenn die Turing­maschine in einem anderen Zustand hält, so weist sie das Eingabewort w zurück. Wenn sie unendlich lange weiterläuft, so erkennt sie das Eingabewort nicht, weist es aber auch nicht zurück.

Definition:  Die Menge aller Wörter, die von einer Turing­maschine M erkannt werden, heißt die von M erkannte Sprache; sie wird mit L(M) bezeichnet:

L(M)  =  { w Element E*  |  w wird von M erkannt }

 

Turingtabelle

Die Übergangs­relation d wird in Form einer Tabelle, der Turingtabelle, angegeben. Jedes Element (s, a, a', s') der Übergangs­relation ist eine Zeile in der Turingtabelle, mit der Bedeutung "wenn die Turing­maschine im Zustand s ist und das Zeichen a liest, so schreibt sie das Zeichen a' und geht in den Zustand s' über".

Beispiel:  Die folgende Turingtabelle repräsentiert die Übergangs­relation d einer Turing­maschine M = (Z, E, A, d, q, f), die alle Eingabewörter der Form an mit n Element natürliche Zahlen0 erkennt.

Die Zustandsmenge der Turing­maschine ist Z = {0, 1}, das Eingabe­alphabet ist E = {a, b}, das Arbeits­alphabet ist A = {a, b, $, Zeichen für Leerzeichen}, der Startzustand ist q = 0, der Endzustand ist f = 1.

saa's'
0aR0
0Zeichen für LeerzeichenZeichen für Leerzeichen1

Die erste Zeile der Turingtabelle bedeutet: wenn die Turing­maschine im Zustand 0 ist und das Zeichen a liest, so geht sie auf dem Arbeitsband um eine Position nach rechts und bleibt im Zustand 0. Die zweite Zeile bedeutet: wenn die Turing­maschine im Zustand 0 ist und das Leerzeichen Zeichen für Leerzeichen liest, so überschreibt sie es mit dem Leerzeichen Zeichen für Leerzeichen und geht in den Zustand 1 über.

Die Turing­maschine startet im Zustand 0. Wenn auf dem Arbeitsband als Eingabewort eine Folge von a's steht, so liest die Turing­maschine diese a's und bleibt dabei im Zustand 0. Wenn das Eingabewort zu Ende ist, liest die Turing­maschine das Leerzeichen Zeichen für Leerzeichen und geht in den Zustand 1 über. Vom Zustand 1 aus sind keine weiteren Zustands­übergänge möglich, d.h. die Turing­maschine hält. Da der Zustand 1 der Endzustand ist, erkennt sie das Eingabewort. Es kann auch sein, dass gleich das erste gelesene Zeichen das Leerzeichen ist, d.h. die Turing­maschine erkennt auch das leere Eingabewort a0 = ε.

Ein Zustands­übergang für den Zustand 0 und das Zeichen b ist in der Turingtabelle nicht definiert. Dies führt dazu, dass die Turing­maschine hält, wenn sie im Zustand 0 ist und das Zeichen b liest. Da der Zustand 0 nicht der Endzustand ist, weist sie das Eingabewort in diesem Fall zurück.

Die von der Turing­maschine erkannte Sprache ist somit

L(M)  =  { an  |  n Element natürliche Zahlen0 }.

Das Arbeitsband ist links durch das Band­begrenzungs­zeichen $ begrenzt. Die Turing­maschine darf diese Begrenzung nicht überschreiten. Wenn sie also das Zeichen $ liest, darf sie nicht nach links gehen; sie darf das Zeichen $ auch nicht durch ein anderes Zeichen überschreiben. D.h. für die Übergangs­relation d muss gelten

(s, $, a', s')  Element  d    folgt    a' = R  oder  a' = $

 

Simulation

Erkennung der Sprache { an | n Element natürliche Zahlen0 }

Die Arbeitsweise der Turing­maschine aus dem vorigen Beispiel ver­anschaulicht die folgende Simulation.

Nach dem Drücken der Schaltfläche "Start" ist in der Turingtabelle der Startzustand markiert, und der Schreib-/Lesekopf zeigt auf das erste Zeichen auf dem Arbeitsband. Der Zustands­übergang erfolgt, wenn in der Turingtabelle im markierten Zustand das gelesene Zeichen angeklickt wird. Der Endzustand ist durch einen * dargestellt.

 

Erkennung der Sprache { anbn | n Element natürliche Zahlen }

Etwas schwieriger zu erkennen ist die Sprache { anbn  |  n Element natürliche Zahlen }. Die Turing­maschine, die in folgender Simulation angegeben ist, geht wie folgt vor: Sie liest solange a's, bis sie das erste b findet. Dann pendelt sie zwischen den a's und b's hin und her und löscht abwechselnd ein b und ein a.

Zum Schluss, wenn die Turing­maschine an das Ende der Eingabe kommt und ein Leerzeichen liest, überprüft sie noch, ob noch ein überzähliges a vorhanden ist.

Der Endzustand ist wiederum durch einen * dargestellt, ferner gibt es einen expliziten reject-Zustand, dieser ist durch ein - dargestellt.

 

Aufgaben

Aufgabe 1:  Entwerfen Sie eine Turing­maschine, die alle Wörter der Form a2nbn mit n Element natürliche Zahlen erkennt.

Simulieren Sie die Turing­maschine mit dem Turing­maschinen-Simulator.

Aufgabe 2:  Entwerfen Sie eine Turing­maschine, die alle Wörter der Form a2n mit n Element natürliche Zahlen0 erkennt.

Simulieren Sie die Turing­maschine mit dem Turing­maschinen-Simulator.

Aufgabe 3:  Entwerfen Sie eine Turing­maschine, die alle aus a's und b's bestehenden Wörter erkennt, die korrekten Klammer­strukturen entsprechen, wobei a einer öffnenden und b einer schließenden Klammer entspricht. Die Turing­maschine soll also beispielsweise aababbab akzeptieren, aber abbabaab zurückweisen.

Simulieren Sie die Turing­maschine mit dem Turing­maschinen-Simulator.

 

Literatur

[Sip 96]M. Sipser: Introduction to the Theory of Computation. PWS Publishing Company (1996)
[Tur 36]A.M. Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings, London Mathematical Society, 230-265 (1936)
[Weg 99]I. Wegener: Theoretische Informatik – eine algorithmische Einführung. 2. Auflage, Teubner (1999)

 

 

Weiter mit:   up del.icio.us digg.com Google Ma.gnolia Mister Wong StumbleUpon YahooMyWeb LinkARENA

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©   Created: 05.09.2004   Updated: 01.02.2010
Valid HTML 4.01 Transitional