Zum Inhalt springen

Turingmaschine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. September 2004 um 13:07 Uhr durch Zap~dewiki (Diskussion | Beiträge) (korr2). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Vorlage:Mathematische Symbole Die Turingmaschine ist ein von dem britischen Mathematiker Alan Turing 1936 entwickeltes mathematisches Modell, um eine Klasse von berechenbaren Funktionen zu bilden. Sie wurde zur Lösung des von David Hilbert im Jahr 1900 formulierten 23. Problems, des so genannten Entscheidungsproblems, in der Schrift "On Computable Numbers, with an Application to the Entscheidungsproblem" vorgestellt.

Die Turingmaschine besteht aus

  • einem unendlich langen Speicherband mit unendlich vielen Feldern. In jedem dieser Felder kann genau ein Zeichen gespeichert werden.
  • einem Schaltwerk mit endlich vielen Zuständen. Es steuert das Verhalten der Turingmaschine.
  • einem programm-gesteuerten Lese- und Schreibkopf, der auf dem endlosen Speicherband ein Feld nach links oder rechts rücken, ein Zeichen lesen, schreiben oder löschen und stehen bleiben kann.

Eine Turingmaschine modifiziert also eine Eingabe auf dem Band nach einem gegebenen Programm. Ist die Berechnung beendet, so befindet sich das Ergebnis auf dem Band. Es wird somit jedem Eingabewert ein Ausgabewert zugeordnet. Eine Turingmaschine muss aber nicht für alle Eingaben stoppen. In diesem Fall ist die Funktion für die Eingabe undefiniert.

Formale Definition

Formal kann eine deterministische Turingmaschine als 7-Tupel dargestellt werden.

1-Band Turingmaschine
  • ist die endliche Zustandsmenge
  • ist das endliche Eingabealphabet
  • ist das endliche Bandalphabet
  • steht für das leere Feld
  • ist der Anfangszustand
  • ist die Überführungsfunktion
  • ist die Menge der End-Zustände

Die Turingmaschine arbeitet wie folgt: In einem bestimmten (Start-)Zustand liest sie ein Zeichen vom Band. In Abhängigkeit vom gelesenen Zeichen und dem Zustand, in dem sie sich gerade befindet, schreibt sie ein Zeichen auf das Band, bewegt den Schreib-/Lesekopf in die vorgegebene Richtung und ändert ihren internen Zustand. Damit hat die TM einen Takt ihres Arbeitszyklus' durchlaufen und steht für einen weiteren bereit. Erreicht die Turingmaschine einen End-Zustand, also einen Zustand der Menge , ist die Berechnung beendet. Das Ergebnis befindet sich dann auf dem Band.

Im nichtdeterministischen Fall ändert sich die Überführungsfunktion zu .

Beispiel

Die folgende nichtdeterministische 1-Band-Turingmaschine erwartet eine Folge von Einsen als Eingabe auf dem Band. Sie verdoppelt die Anzahl der Einsen wobei ein Leersymbol in der Mitte stehen bleibt. Beispielsweise wird aus "111" die Zeichenfolge "1110111". Der Schreib-/Lesekopf befindet sich initial auf der ersten Eins. Der Anfangszustand ist , der Endzustand .


* * * *
alter geles. schr. neuer Kopf- alter geles. schr. neuer Kopf- Zust. Symbol Symbol Zust. richtg. Zust. Symbol Symbol Zust. richtg. ------------------------------------ ------------------------------------ s1 1 -> 0 s2 R s4 1 -> 1 s4 L s1 0 -> 0 s6 0 s4 0 -> 0 s5 L s2 1 -> 1 s2 R s5 1 -> 1 s5 L s2 0 -> 0 s3 R s5 0 -> 1 s1 R s3 0 -> 1 s4 L s3 1 -> 1 s3 R

Die Turingmaschine durchläuft zum Beispiel bei der Eingabe "11" folgende Zustände, wobei die aktuelle Kopfposition fett geduckt ist:

 Schritt Zust. Band     Schritt Zust. Band
 -------------------    -------------------
    1    s1    11          9    s2    1001 
    2    s2    01         10    s3    1001
    3    s2    010        11    s3    10010
    4    s3    0100       12    s4    10011
    5    s4    0101       13    s4    10011
    6    s5    0101       14    s5    10011
    7    s5    0101       15    s1    11011
    8    s1    1101       16    s6    -halt-

Die Berechnung beginnt im Anfangszustand . Hier wird die erste Eins durch eine Null ersetzt, der Schreib-/Lesekopf bewegt sich nach rechts und neuer Zustand wird . Im Zustand wandert der Kopf solange nach rechts, bis eine Null gelesen wird. Die Turingmaschine gelangt dann in den Zustand und überliest alle weiteren Einsen, bis sie erneut eine Null findet. Diese wird dann durch eine Eins ersetzt. Im Zustand bewegt sich der Kopf zurück, überliest wieder alle Einsen, bis er auf eine Null trifft , Zustandswechsel auf . Der Kopf bewegt sich nun solange nach links, bis die ursprünglich in Zustand geschriebene Null gefunden wird. Diese wird wieder durch eine Eins ersetzt, der Kopf bewegt sich ein Feld nach rechts, und die Turingmaschine gelangt wieder in den Zustand . Hier beginnt ein neuer Rechenzyklus. Wird im Zustand eine Null gelesen, so gelangt die Turingmaschine in den Endzustand , woraufhin die Berechnung beendet wird.

Universelle Turingmaschine

In der obigen Definition ist das Programm fest in die Maschine eingebaut und kann nicht verändert werden. Man kann aber eine universelle Turingmaschine definieren, die die Kodierung einer Turingmaschine als Teil ihrer Eingabe nimmt, und das Verhalten der kodierten Turingmaschine auf der ebenfalls gegebenen Eingabe simuliert. Aus der Existenz einer solchen universellen Turingmaschine folgt z. B. die Unentscheidbarkeit des Halteproblems. Eine ähnliche Idee, bei der das Programm als ein Teil der veränderbaren Eingabedaten betrachtet wird, liegt auch fast allen heutigen Rechnerarchitekturen zugrunde.

Allgemeines

Die Menge der Turing-berechenbaren Funktionen ist die Menge aller Funktionen, die sich mit einer Turingmaschine berechnen lassen (die Turingmaschine muss die Aktion (H) ausführen!). Es gibt noch andere Verfahren, über die man Berechenbarkeit von Funktionen definieren kann, z. B. über rekursive Funktionen. Da andere Verfahren aber nachweislich dieselbe Klasse von Funktionen beschreiben wie die der Turingmaschine, liegt die Vermutung nahe, dass alle (intuitiv) berechenbaren Funktionen bereits durch das einfache Modell der Turingmaschine berechnet werden können. Dieses Ergebnis der Berechnungstheorie wird in der Churchschen These zusammengefasst.

Es macht übrigens keinen Unterschied, ob eine Turingmaschine ein oder mehrere Bänder verwendet. Auch das Bandalphabet kann beliebig groß sein; solange neben dem Leerzeichen ein weiteres Zeichen enthalten ist, ist eine Turingmaschine zur allgemeinen Turingmaschine gleich mächtig. Außerdem ist beweisbar, dass sich mehrbandige Turingmaschinen durch eine einbandige simulieren lassen.

Ein beliebtes Problem ist der Fleißige Biber: Man finde die Turingmaschine, die mit einer bestimmten Anzahl von Zuständen die maximale Anzahl von "1"-Symbolen auf das Band schreibt und dann anhält. Für 1 bis 4 Zustände konnte das Problem berechnet werden, aber bereits für "nur" 5 Zustände ist der "beste" Fleißige Biber noch nicht bekannt.

Chris Langtons Ameise ist eine Turingmaschine mit zweidimensionalem Band, mit sehr einfachen Regeln und sehr verblüffenden Ergebnissen. Eine Abbildung und einen erklärenden Text findet man unter Ameise (Turingmaschine).

Erweiterung

Eine Erweiterung bildet die Church-Turing-These, die besagt, dass ein Problem, das von der Turingmaschine nicht gelöst werden kann, auch von keinem Menschen gelöst werden könnte.

Erklärung für Nicht-Mathematiker/Informatiker

Das faszinierende an einer Turing-Maschine ist, dass sie mit nur drei Operationen (lesen, schreiben und Kopf bewegen) alle lösbaren Probleme lösen kann. Sämtliche mathematischen Grundfunktionen, wie Addition und Multiplikation lassen sich mit diesen drei Operatoren simulieren. Aufbauend darauf lassen sich wiederum sämtliche restlichen vorhandenen mathematischen Funktionen erzeugen, usw.

Der zentrale Satz ist also: Ein Problem, das man mit einer Turingmaschine nicht lösen kann, gilt auch allgemeinhin als unlösbar.

Ein Problem, das eine Turingmaschine nicht beantworten kann, und somit unlösbar ist, ist folgendes: "Finde eine Turingmaschine, die bestimmt, ob eine andere Turingmaschine bei einer gewissen Eingabe jemals anhält." So eine Turingmaschine kann es nicht geben, denn angenommen die andere Turingmaschine läuft unendlich lange (terminiert nicht), so wird unsere Turingmaschine die Frage ob sie anhält nie mit "nein" beantworten können. (siehe Halteproblem)

Ein Computer kann als eine Implementierung der Turing-Maschine angesehen werden - er operiert nur mit Nullen und Einsen (aber hier nicht unendlich vielen), und schafft es, damit die komplexesten Dinge zu berechnen.

Siehe auch

Literatur