Eine Turingmaschine ist ein mathematisches Modell der theoretischen Informatik, das eine abstrakte Maschine definiert. Bei diesem Rechnermodell werden nach festgelegten Regeln Manipulationen von Zeichen vorgenommen. Die Turingmaschine ist benannt nach dem britischen Mathematiker Alan Turing, der sie 1936/37 einfĂŒhrte.
Turingmaschinen machen die Begriffe des Algorithmus und der Berechenbarkeit mathematisch fassbar, das heiĂt, sie formalisieren diese Begriffe. Im Gegensatz zu einem physischen Computer ist eine Turingmaschine damit ein mathematisches Objekt und kann mit mathematischen Methoden untersucht werden.
Eine Turingmaschine reprĂ€sentiert einen Algorithmus bzw. ein Programm. Eine Berechnung besteht dabei aus schrittweisen Manipulationen von Symbolen bzw. Zeichen, die nach bestimmten Regeln auf ein Speicherband geschrieben und auch von dort gelesen werden. Ketten dieser Symbole können verschieden interpretiert werden, unter anderem als Zahlen. Damit beschreibt eine Turingmaschine eine Funktion, welche Zeichenketten, die anfangs auf dem Band stehen, auf Zeichenketten abbildet, die nach âBearbeitungâ durch die Maschine auf dem Band stehen. Eine Funktion, die anhand einer Turingmaschine berechnet werden kann, wird Turing-berechenbar oder auch einfach berechenbar genannt.
Turingmaschinen spielen auch eine bedeutende Rolle bei der Akzeptanz von formalen Sprachen. So entsprechen die Sprachen, die von Turingmaschinen akzeptiert werden, den mit Typ-0-Grammatiken definierbaren Sprachen. Es konnte gezeigt werden, dass eine Transformationsgrammatik der Grammatik einer Turingmaschine entsprechen kann, die in der Lage ist, jede berechenbare Funktion zu berechnen.[1] Eine Sprache oder ein Computersystem heiĂen Turing-vollstĂ€ndig, wenn es alle Operationen ausfĂŒhren kann, die eine universelle Turingmaschine ausfĂŒhren kann.
Informelle Beschreibung
[Bearbeiten | Quelltext bearbeiten]

Die Turingmaschine hat ein Steuerwerk, in dem sich das Programm befindet, und besteht auĂerdem aus
- einem unendlich langen Speicherband mit unendlich vielen sequentiell angeordneten Feldern. Pro Feld kann genau ein Zeichen aus einem vordefinierten Alphabet gespeichert werden. Als zusĂ€tzliches Zeichen ist ein Blank (englisch fĂŒr âleer/unbeschriebenâ) zugelassen, das einem leeren Feld auf dem Speicherband entspricht.
- einem programmgesteuerten Lese- und Schreibkopf, der sich auf dem Speicherband feldweise bewegen und die Zeichen verĂ€ndern (im Fall eines zu âschreibendenâ Blanks auch löschen) kann.
Eine Berechnung fĂŒr ein Eingabewort startet mit dem Eingabewort auf dem Band und dem Lese- und Schreibkopf auf dem ersten Symbol des Eingabeworts. Die Turingmaschine verarbeitet dann die Eingabe auf dem Band schrittweise nach dem festgelegten Programm.
Mit jedem Schritt liest der Lese-Schreib-Kopf das aktuelle Zeichen, ĂŒberschreibt dieses mit einem anderen (oder dem gleichen) Zeichen und bewegt sich dann ein Feld nach links oder rechts oder bleibt stehen. Welches Zeichen geschrieben wird und welche Bewegung ausgefĂŒhrt wird, hĂ€ngt von dem an der aktuellen Position vorgefundenen Zeichen sowie dem Zustand ab, in dem sich die Turingmaschine gerade befindet. Dies wird durch eine zu der Turingmaschine gehörende ĂberfĂŒhrungsfunktion definiert. Zu Beginn befindet sich die Turingmaschine in einem vorgegebenen Startzustand und geht bei jedem Schritt in einen neuen Zustand ĂŒber. Die Anzahl der ZustĂ€nde, in denen sich die Turingmaschine befinden kann, ist endlich. Ein Zustand kann mehrere Male durchlaufen werden, er sagt nichts ĂŒber die auf dem Band vorliegenden Zeichen aus.
Eine Turingmaschine stoppt, wenn fĂŒr den aktuellen Zustand und das gelesene Bandsymbol keine ĂberfĂŒhrung zu einem neuen Zustand definiert ist. Es hĂ€ngt also im Allgemeinen von der Kombination aus Zustand und Symbol ab, ob die Turingmaschine weiter rechnet oder stoppt. ZustĂ€nde, in denen die Turingmaschine unabhĂ€ngig von dem gelesenen Bandsymbol anhĂ€lt, bezeichnet man als EndzustĂ€nde. Es gibt aber auch Turingmaschinen, die fĂŒr gewisse Eingaben niemals stoppen.
Neben der Berechnung von Funktionen wird die Turingmaschine â wie viele andere Automaten â auch fĂŒr Entscheidungsprobleme eingesetzt, also fĂŒr Fragen, die mit âjaâ oder âneinâ zu beantworten sind. Bestimmte EndzustĂ€nde werden als âakzeptierendâ, andere als ânicht akzeptierendâ definiert. Die Eingabe wird genau dann akzeptiert, wenn die Turingmaschine in einem akzeptierenden Endzustand endet.
Bedeutung
[Bearbeiten | Quelltext bearbeiten]Der Mathematiker Alan Turing stellte die Turingmaschine 1936 im Rahmen des von David Hilbert im Jahr 1920 formulierten Hilbertprogramms speziell zur Lösung des so genannten Entscheidungsproblems in der Schrift On Computable Numbers, with an Application to the Entscheidungsproblem vor.
Das von Hilbert aufgestellte Entscheidungsproblem fragt, ob eine gegebene Formel der PrĂ€dikatenlogik allgemeingĂŒltig sei, also ob die Formel unter jeder Interpretation wahr sei. Hilbert stellte die Frage, ob dieses Problem automatisch gelöst werden könne. Die Methode, die fĂŒr eine prĂ€dikatenlogische Formel bestimmt, ob sie allgemeingĂŒltig sei, soll also von einer âMaschineâ durchgefĂŒhrt werden können. Vor der Erfindung des Computers bedeutete dies, dass ein Mensch nach festen Regeln â einem Algorithmus â eine Berechnung durchfĂŒhrt.
Turing definierte mit seinem Modell die Begriffe des Algorithmus und der Berechenbarkeit als formale, mathematische Begriffe. Im Allgemeinen wird davon ausgegangen, dass die Turing-Berechenbarkeit das intuitive VerstĂ€ndnis von Berechenbarkeit trifft; diese Aussage ist als Church-Turing-These bekannt. Ihr wohnt eine starke PlausibilitĂ€t inne, u. a. durch die mathematische Ăquivalenz des Begriffs der Turing-Berechenbarkeit mit anderen Berechenbarkeits-Begriffen (wie zum Beispiel der AusdrĂŒckbarkeit im Lambda-KalkĂŒl oder als partiell-rekursive Funktion sowie die Berechenbarkeit durch Registermaschinen, welche strukturell heute verwendeten Computern nachempfunden sind). Das Besondere an einer Turingmaschine ist dabei ihre strukturelle Einfachheit: Sie benötigt nur drei Operationen (Lesen, Schreiben und Schreib-Lese-Kopf-Bewegen), um alle Operationen der ĂŒblichen Computerprogramme zu simulieren. Im Rahmen der theoretischen Informatik eignet sie sich deshalb besonders gut zum Beweis von Eigenschaften formaler Probleme, wie sie von der KomplexitĂ€ts- und Berechenbarkeitstheorie betrachtet werden.
Die KomplexitĂ€t (etwa Laufzeit- und SpeicherkomplexitĂ€t) von Algorithmen wird in Bezug auf bestimmte Maschinenmodelle definiert. Auf Turingmaschinen ist etwa die asymptotische Anzahl der ZustandsĂŒbergĂ€nge in AbhĂ€ngigkeit von der EingabelĂ€nge ein mögliches LaufzeitkomplexitĂ€tsmaĂ eines Algorithmus. Auf anderen Modellen werden oftmals KomplexitĂ€tsmaĂe definiert, die einen wahlfreien Zugriff auf jede Speicherzelle oder die AusfĂŒhrung arithmetischer Operationen als einzelne Schritte definieren. Diese MaĂe eignen sich im beschrĂ€nkten Rahmen (kleiner Datenmengen bzw. kleiner Zahlen) besonders gut, um die Laufzeit vieler Algorithmen auf realen Computern abzuschĂ€tzen, und sind dementsprechend oft (insbesondere unspezifiziert) anzutreffen. Aufgrund der sequentiellen Struktur von Turingmaschinen ist daher die LaufzeitkomplexitĂ€t im Sinne der asymptotischen Anzahl der ZustandsĂŒbergĂ€nge fĂŒr viele Algorithmen verglichen mit Definitionen fĂŒr Registermaschinen höher. Die KomplexitĂ€tstheorie befasst sich mit der Frage, fĂŒr welche Probleme Algorithmen mit welcher KomplexitĂ€t existieren, etwa in welchen KomplexitĂ€tsklassen Probleme liegen bzw. nicht liegen. Sofern es bei der Untersuchung der LaufzeitkomplexitĂ€t nicht auf Faktoren polynomiell in der EingabelĂ€nge ankommt, sind Turingmaschinen hier recht allgemein einsetzbar, da die Simulation vieler Registermaschinen in vielen KomplexitĂ€tsmaĂen nur polynomiellen Mehraufwand bedeutet.
Nicht alle mathematischen Funktionen können von einer Turingmaschine berechnet werden, selbst wenn man sich auf wohldefinierte Funktionen mit endlicher Ein- und Ausgabe beschrĂ€nkt (etwa lassen sich Funktionen zwischen beliebigen reellen Zahlen nicht durch Funktionen mit endlicher Ein- und Ausgabe reprĂ€sentieren, da die reellen Zahlen ĂŒberabzĂ€hlbar sind, und es gibt formal gesehen Funktionen, die sich ĂŒberhaupt nicht spezifizieren lassen). So konnte Turing zeigen, dass eine Turingmaschine das Hilbertâsche Entscheidungsproblem nicht lösen kann, genauso wenig das Halteproblem.
Ebenfalls unentscheidbar ist nach dem Satz von Rice jede nicht-triviale Eigenschaft eines Programms in einer turingmÀchtigen Programmiersprache. Selbst wenn man sich auf terminierende Turingmaschinen beschrÀnkt, ist es unentscheidbar, ob zwei terminierende Turingmaschinen dieselbe Sprache akzeptieren. Die Berechenbarkeitstheorie beschÀftigt sich mit der Frage, welche Probleme von welchen Maschinenmodellen berechenbar bzw. nicht berechenbar sind.
Systeme, Computer und Programmiersprachen, die unter Ausblendung der BeschrÀnktheit des Speichers und damit verbundener Eigenschaften eine Turingmaschine emulieren könnten, werden als turingvollstÀndig bezeichnet.
Formale Definition
[Bearbeiten | Quelltext bearbeiten]Formal kann eine deterministische Turingmaschine als 7-Tupel dargestellt werden (siehe auch nichtdeterministische Turingmaschine):
- ist die endliche Zustandsmenge
- ist das endliche Eingabealphabet
- ist das endliche Bandalphabet und es gilt
- ist die (partielle) ĂberfĂŒhrungsfunktion
- ist der Anfangszustand
- steht fĂŒr das leere Feld (Blank)
- die Menge der akzeptierenden EndzustÀnde
Die partielle ĂberfĂŒhrungsfunktion liefert zu einem Zustand und einem gelesenen Bandsymbol (i) den nĂ€chsten Zustand, (ii) ein Bandsymbol, das in das aktuelle Feld geschrieben wird, und (iii) die Bewegungsrichtung des Lese-Schreib-Kopfes (L ⊠ein Feld nach links, N ⊠nicht bewegen, R ⊠ein Feld nach rechts). Da in akzeptierenden EndzustĂ€nden die Berechnung auf jeden Fall anhĂ€lt, sind diese in der Definitionsmenge der ĂberfĂŒhrungsfunktion ausgenommen.
Konfigurationen
[Bearbeiten | Quelltext bearbeiten]
Die Konfiguration einer Turingmaschine beschreibt nicht nur den ihr eigenen momentanen Zustand , sondern auch die Position des Lese-Schreib-Kopfes und die gerade auf dem Band vorhandenen Symbole. Die Symbole befinden sich in einem endlichen Bereich des Bandes, der von unendlich vielen leeren Symbolen umgeben ist. Es genĂŒgt deshalb, diesen endlichen Bereich zu betrachten.
Formal besteht eine Konfiguration aus dem aktuellen Zustand , einem endlichen Wort , das den Inhalt des Bands links des Lese-Schreib-Kopfes enthÀlt, und einem endlichen Wort , das den Inhalt des Bandes ab der aktuellen Position des Lese-Schreib-Kopfes enthÀlt. Eine Konfiguration ist also ein Tripel mit , , , wobei das Band durch gegeben ist und der Lese-Schreib-Kopf auf dem ersten Zeichen von steht.
Oft werden Konfigurationen auch durch eine Folge , mit , beschrieben, bei der der aktuelle Zustand an der aktuellen Position des Lese-Schreib-Kopfes in das Wort, das den Bandinhalt wiedergibt, eingefĂŒgt wird. ist das am weitesten links stehende nicht-leere Bandsymbol, das am weitesten rechts stehende nicht-leere Bandsymbol und das Symbol, ĂŒber dem sich der Lese-Schreib-Kopf befindet. Bewegt sich der Lese-Schreib-Kopf ĂŒber den Rand hinaus, sind der Konfiguration noch weitere -Symbole hinzuzufĂŒgen.
Durch eine Startkonfiguration wird das Eingabewort festgelegt. Eine ĂŒbliche Startkonfiguration ist mit Startzustand und Eingabewort . Diese entspricht dem Tripel , wobei das leere Wort ist.
Berechnung
[Bearbeiten | Quelltext bearbeiten]Die ĂberfĂŒhrungsfunktion gibt zu einer Startkonfiguration den Ablauf einer Turingmaschine vor. Sie wechselt in einem Schritt von der aktuellen Konfiguration in die Nachfolgekonfiguration. Ein solcher Schritt von Konfiguration zu Konfiguration kann als dargestellt werden.
Schreibt die ĂberfĂŒhrungsfunktion fĂŒr einen Zustand und das Eingabesymbol zum Beispiel vor, dass geschrieben wird, der Lese-Schreib-Kopf sich nach links bewegt und der Nachfolgezustand ist, so bedeutet dies folgenden Schritt: .
Die Berechnung einer Turingmaschine ist eine endliche oder unendliche Folge von Konfigurationsschritten. Eine Turingmaschine akzeptiert ein durch die Startkonfiguration gegebenes Wort, wenn die Berechnung in dieser Startkonfiguration beginnt und in einer Konfiguration endet, in der die Turingmaschine in einem akzeptierenden Endzustand ist. Endet die Berechnung in einer anderen Konfiguration, verwirft die Turingmaschine das Eingabewort. Ist die Berechnung der Turingmaschine unendlich, wird das Wort weder akzeptiert noch verworfen.
Intuition
[Bearbeiten | Quelltext bearbeiten]Die Turingmaschine fĂŒhrt eine Berechnung aus, indem sie schrittweise eine Eingabe in eine Ausgabe umwandelt. Ein- und Ausgabe und Zwischenergebnisse werden auf dem unendlich langen Band gespeichert.
Zu Beginn steht ein Wort als Eingabe auf dem Band (pro Bandfeld ein Zeichen des Eingabewortes), der Rest des Bandes besteht aus leeren Feldern . Der Lese-Schreib-Kopf steht auf dem ersten Zeichen der Eingabe und die Turingmaschine befindet sich im Startzustand .
Die ĂberfĂŒhrungsfunktion gibt an, wie die Turingmaschine schrittweise den Bandinhalt liest und beschreibt, ihren Zustand wechselt und die Position des Lese-Schreib-Kopfes Ă€ndert. Diese Funktion nimmt als Argument den aktuellen Zustand und das Zeichen, das sich in der aktuellen Konfiguration unter dem Lese-Schreib-Kopf befindet. Als Ergebnis liefert sie dann:
- genau einen Zustand (dieser wird zum Nachfolgezustand der Turingmaschine),
- ein Zeichen (mit diesem wird der Inhalt des Feldes, auf welches der Lese-Schreib-Kopf weist, ĂŒberschrieben) und
- entweder das Symbol L (in diesem Fall bewegt sich der Lese-Schreib-Kopf um ein Feld nach links), R (in diesem Fall bewegt er sich ein Feld nach rechts) oder N (dann verharrt er auf demselben Feld).
Damit hat die Turingmaschine einen Schritt ihres Arbeitszyklus durchlaufen und steht fĂŒr einen weiteren bereit.
Da die ĂberfĂŒhrungsfunktion partiell ist, muss sie nicht fĂŒr jeden Zustand und jedes Eingabezeichen einen Ăbergang definieren. Der Endzustand hat beispielsweise fĂŒr kein Eingabezeichen einen Nachfolgezustand. Erreicht die Turingmaschine einen Endzustand , kann die Turingmaschine deshalb keine weiteren Aktionen durchfĂŒhren und die Berechnung ist beendet. Die Ausgabe ist dann der Inhalt des Bandes.
Beispiel
[Bearbeiten | Quelltext bearbeiten]Die folgende deterministische Ein-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. Aus â11â wird beispielsweise die Zeichenfolge â11011â. Der Schreib-Lese-Kopf befindet sich initial auf der ersten Eins. Der Anfangszustand ist , der Endzustand . Die Null steht fĂŒr das leere Feld und das Band besteht bis auf die darauf geschriebenen Einsen aus leeren Feldern.
Die ĂberfĂŒhrungsfunktion ist wie folgt definiert:

| aktueller Zustand |
geles. Symbol |
schr. Symbol |
neuer Zustand |
Kopf- richtung | |
|---|---|---|---|---|---|
| s1 | 1 | â | 0 | s2 | R |
| s1 | 0 | â | 0 | s6 | N |
| s2 | 1 | â | 1 | s2 | R |
| s2 | 0 | â | 0 | s3 | R |
| s3 | 1 | â | 1 | s3 | R |
| s3 | 0 | â | 1 | s4 | L |
| s4 | 1 | â | 1 | s4 | L |
| s4 | 0 | â | 0 | s5 | L |
| s5 | 1 | â | 1 | s5 | L |
| s5 | 0 | â | 1 | s1 | R |
durchlĂ€uft im oben erwĂ€hnten Beispiel, also bei der Eingabe â11â, folgende ZustĂ€nde, wobei die aktuelle Kopfposition fett gedruckt ist:

| Schritt | Zust. | Band |
|---|---|---|
| 1 | s1 | 11000 |
| 2 | s2 | 01000 |
| 3 | s2 | 01000 |
| 4 | s3 | 01000 |
| 5 | s4 | 01010 |
| 6 | s5 | 01010 |
| 7 | s5 | 01010 |
| 8 | s1 | 11010 |
| Schritt | Zust. | Band |
|---|---|---|
| 9 | s2 | 10010 |
| 10 | s3 | 10010 |
| 11 | s3 | 10010 |
| 12 | s4 | 10011 |
| 13 | s4 | 10011 |
| 14 | s5 | 10011 |
| 15 | s1 | 11011 |
| 16 | s6 | -halt- |
Die Berechnung beginnt im Anfangszustand . Hier wird die erste Eins durch ein leeres Feld ersetzt, der Schreib-Lese-Kopf bewegt sich nach rechts und neuer Zustand wird . Der Kopf wandert nun so lange nach rechts, bis ein leeres Feld gelesen wird. Danach gelangt die Turingmaschine in den Zustand und ĂŒberliest alle weiteren Einsen, bis sie erneut ein leeres Feld findet. Dieses wird dann durch eine Eins ersetzt. Im Zustand bewegt sich der Kopf zurĂŒck, ĂŒberliest wieder alle Einsen, bis er auf ein leeres Feld trifft, Zustandswechsel auf . Der Kopf bewegt sich nun solange nach links, bis das ursprĂŒnglich in Zustand geschriebene leere Feld gefunden wird. Dieses 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 ein leeres Feld gelesen, so gelangt die Turingmaschine in den Endzustand , woraufhin die Berechnung beendet wird.
Ăquivalente Varianten der Turingmaschine
[Bearbeiten | Quelltext bearbeiten]In der Literatur findet man zahlreiche unterschiedliche Definitionen und Varianten der Turingmaschine, die sich jeweils in einigen Details unterscheiden. Diese sind Ă€quivalent in dem Sinne, dass Turingmaschinen einer Definition leicht in Turingmaschinen der anderen Definitionen umgewandelt werden können, sodass diese die gleichen Berechnungen durchfĂŒhren. HĂ€ufige Abweichungen von der obigen Definition sind:
- Es wird nicht zwischen Eingabealphabet und Bandalphabet unterschieden.
- Statt einer Menge von akzeptierenden EndzustÀnden gibt es nur einen einzigen akzeptierenden Endzustand.
- ZusÀtzlich zu einem oder mehreren akzeptierenden EndzustÀnden gibt es noch einen oder mehrere verwerfende EndzustÀnde.[2]
- Der Lese-Schreib-Kopf bewegt sich immer entweder nach links oder nach rechts. FĂŒr die Bewegung des Kopfes gibt es also nur die Symbole , .[3]
- Die Funktion ist als totale Funktion gegeben. Die Maschine hÀlt in EndzustÀnden und in ZustÀnden , wenn das Symbol gelesen wird und .[4]
- Semiunendliches Speicherband: Das Speicherband ist nur in eine Richtung unendlich. Es gibt ein spezielles Symbol, das den Anfang der Eingabe markiert. Der Lese-Schreib-Kopf kann sich dann nicht darĂŒber hinaus nach links bewegen, aber beliebig weit nach rechts.[2]
Zudem gibt es Erweiterungen, die ebenfalls hinsichtlich der Berechenbarkeit Ă€quivalent zu Turingmaschinen sind. Selbst komplexitĂ€tstheoretisch sind die Unterschiede zwischen vielen der Varianten weitgehend zu vernachlĂ€ssigen. Insgesamt fĂŒhren sehr viele Varianten zu nicht mehr als polynomialen Aufwandsunterschieden (wobei Aufwand hier eine beliebige Ressource meint) und sind daher fĂŒr viele komplexitĂ€tstheoretische Untersuchungen vernachlĂ€ssigbar. Man passt in AbhĂ€ngigkeit von den Zielen der jeweiligen Analyse das verwendete Modell so an, dass die Analyse möglichst einfach durchgefĂŒhrt werden kann. Es gibt jedoch auch hinsichtlich der Berechenbarkeit, nicht aber der KomplexitĂ€t (im Sinne von âbis auf polynomiellen Mehraufwandâ) Ă€quivalente Erweiterungen der Turingmaschine, wie zum Beispiel nichtdeterministische Turingmaschinen und bestimmte Orakel-Turingmaschinen.
- Mehrspuren-Turingmaschine (engl. multi-track Turing machine): Turingmaschinen, die erlauben, mehrere Symbole in ein Feld des Speicherbands zu speichern.
- Mehrband-Turingmaschine (engl. multitape Turing machine): Turingmaschinen mit mehreren BĂ€ndern mit jeweils einem Lese-Schreib-Kopf.
- Vergessliche Turingmaschine (engl. oblivious Turing machines): Eine Turingmaschine wird vergesslich[5] oder auch bewegungsuniform[6] genannt, falls die Kopfbewegungen nicht vom konkreten Inhalt der Eingabe abhÀngen, sondern nur von der LÀnge der Eingabe. Jede Turingmaschine kann durch eine vergessliche simuliert werden.[7]
- Zweikellerautomat (engl. two-stack push down automaton): ein Kellerautomat mit zwei Kellerspeichern.
- ZĂ€hlermaschinen (engl. counter machine)[8] mit mindestens zwei ZĂ€hlern.
ĂberfĂŒhrungsfunktion ÎŽ als Ganzzahl
[Bearbeiten | Quelltext bearbeiten]In seinem ursprĂŒnglichen Artikel zu Hilberts Entscheidungsproblem beschreibt Alan Turing eine Möglichkeit, die ĂberfĂŒhrungsfunktion, die man meistens grafisch abbildet oder in einer Tabelle aufschreibt, mithilfe einer einzigen Zahl zu definieren.[9] Dazu ĂŒberfĂŒhrt er die Tabelle zuerst in eine Normalform und ersetzt dann die einzelnen ZustĂ€nde, Buchstaben und Anweisungen durch Zahlen, die dann zu einer langen Zahl zusammengefasst werden.
Universelle Turingmaschine
[Bearbeiten | Quelltext bearbeiten]In der obigen Definition ist das Programm fest in die Maschine eingebaut und kann nicht verĂ€ndert werden. Kodiert man die Beschreibung einer Turingmaschine als hinreichend einfache Zeichenkette, so kann man eine sogenannte universelle Turingmaschine â selbst eine Turingmaschine â konstruieren, welche eine solche Kodierung einer beliebigen 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 zum Beispiel 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 (Von-Neumann-Architektur).
Formal ist eine universelle Turingmaschine eine Maschine , die eine Eingabe liest. Das Wort ist hierbei eine hinreichend einfache Beschreibung einer Maschine , die zu einer bestimmten Funktion mit Eingabe die Ausgabe berechnet. ist ein Trennzeichen zwischen Programmbeschreibung und Eingabe. simuliert also das Verhalten von mit Hilfe der Funktionsbeschreibung und der Eingabe . Der Index in zeigt an, dass es nicht nur eine einzige universelle Turingmaschine gibt. So könnten z. B. und verschiedene Wörter verstehen. Das Wort muss dabei in einer Sprache codiert sein, die die versteht.
Bekannte Turingmaschinen
[Bearbeiten | Quelltext bearbeiten]FleiĂiger Biber
[Bearbeiten | Quelltext bearbeiten]
Als FleiĂige Biber (engl. busy beaver) werden die deterministischen Turingmaschinen bezeichnet, die bezogen auf alle terminierenden deterministischen Turingmaschinen mit derselben Anzahl von ZustĂ€nden und Symbolen die maximale Anzahl eines bestimmten Symbols auf das Band schreiben und dann anhalten. Es existiert keine berechenbare Funktion, die einer gegebenen Anzahl von Symbolen und ZustĂ€nden eines entsprechenden FleiĂigen Bibers die Anzahl der von ihm am Ende geschriebenen Symbole (die sogenannte RadĂł-Funktion) oder die Anzahl der Schritte zuordnet, die er braucht, um zu terminieren.
Ameise
[Bearbeiten | Quelltext bearbeiten]Chris Langtons Ameise ist eine Turingmaschine mit zweidimensionalem Band (eigentlich eine FlĂ€che) und sehr einfachen Regeln, dessen Bandinhalt als zweidimensionales Bild zunĂ€chst chaotisch aussieht, jedoch nach ĂŒber 10.000 Schritten eine gewisse sichtbare Struktur herausbildet.
An Turingmaschinen angelehnte Maschinenmodelle
[Bearbeiten | Quelltext bearbeiten]Nichtdeterministische Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Eine nichtdeterministische Turingmaschine verwendet anstatt der Ăbergangsfunktion eine Ăbergangsrelation. In der Konfiguration dieser nichtdeterministischen Turingmaschine kann es daher mehrere Möglichkeiten fĂŒr den nĂ€chsten Berechnungsschritt geben. Die Maschine akzeptiert ein Wort, wenn eine der möglichen Berechnungen, die mit dem Wort als Eingabe starten, einen akzeptierenden Endzustand erreicht.
Alternierende Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Eine alternierende Turingmaschine ist eine nichtdeterministische Turingmaschine, welche die Regeln fĂŒr die Akzeptanz einer Eingabe erweitert. Dabei werden existentielle und universelle ZustĂ€nde der Maschine unterschieden. Erstere akzeptieren eine Eingabe, wenn es eine mögliche Berechnung gibt, die akzeptiert, wĂ€hrend die zweiten ZustĂ€nde Eingaben nur dann akzeptieren, wenn alle möglichen Berechnungen akzeptiert werden.
Orakel-Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Orakel-Turingmaschinen sind Verallgemeinerungen der Turingmaschine, bei der die Turingmaschine in einem Schritt bestimmte zusĂ€tzliche Operationen durchfĂŒhren kann, etwa die Lösung unentscheidbarer oder nur mit hohem Aufwand entscheidbarer Probleme. Somit erlauben Orakel-Turingmaschinen eine weitere Kategorisierung unentscheidbarer Probleme (siehe hierzu Turinggrad) oder auch die Definition zusĂ€tzlicher KomplexitĂ€tsklassen.
Probabilistische Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Probabilistische Turingmaschinen erlauben fĂŒr jeden Zustand und jede Eingabe zwei (oder Ă€quivalent dazu endlich viele) mögliche ĂbergĂ€nge, von denen bei der AusfĂŒhrung â intuitiv ausgedrĂŒckt â einer zufĂ€llig ausgewĂ€hlt wird, und dienen der theoretischen Beschreibung randomisierter Algorithmen.[10]
Quanten-Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Quanten-Turingmaschinen dienen in der Quanteninformatik als abstrakte Maschinenmodelle zur theoretischen Beschreibung der Möglichkeiten von Quantencomputern. Quantenschaltungen sind in diesem Kontext als anderes verbreitetes Modell zu nennen.
Persistente Turingmaschine
[Bearbeiten | Quelltext bearbeiten]Um interaktive Modelle (im Sinne von âModellen mit GedĂ€chtnisâ) durch eine Turingmaschine darzustellen, ist eine Erweiterung derselben um ebendieses GedĂ€chtnis notwendig.
Laut Definition[11] ist eine persistente Turingmaschine (PTM) eine nichtdeterministische 3-Band-Turingmaschine mit einem Eingabe-, einem Arbeits- und einem Ausgabeband. Die Eingabe wird auf dem Arbeitsband verarbeitet und erst nach vollstĂ€ndiger Bearbeitung gelangen die Ergebnisse auf dem Ausgabeband zurĂŒck in die âUmweltâ. Danach kann eine erneute Eingabe aus der Umwelt verarbeitet werden. Zwischen zwei Arbeitsschritten bleiben die Inhalte des Arbeitsbandes als âGedĂ€chtnisâ erhalten.
Zenomaschine
[Bearbeiten | Quelltext bearbeiten]Die Zenomaschine ist eine in geometrischer Reihe beschleunigt immer schneller rechnende Turingmaschine. Sie stellt ein fiktives Modell jenseits der Turing-Berechenbarkeit dar.
Beziehung zwischen einer Turingmaschine und einer formalen Sprache
[Bearbeiten | Quelltext bearbeiten]Akzeptierte Sprache
[Bearbeiten | Quelltext bearbeiten]Eine Turingmaschine akzeptiert eine Sprache , wenn sie bei Eingabe eines jeden Wortes nach endlich vielen Schritten in einem akzeptierenden Zustand hĂ€lt und bei Eingabe eines jeden Wortes in einem nicht akzeptierenden Zustand oder ĂŒberhaupt nicht hĂ€lt.
Eine Sprache heiĂt genau dann rekursiv aufzĂ€hlbar bzw. semientscheidbar (Typ 0 der Chomsky-Hierarchie), wenn es eine Turingmaschine gibt, die akzeptiert.
Entscheidbare Sprache
[Bearbeiten | Quelltext bearbeiten]Akzeptiert eine Turingmaschine eine Sprache und hÀlt sie zusÀtzlich bei allen Eingaben, die nicht zu dieser Sprache gehören, so entscheidet die Turingmaschine diese Sprache.
Eine Sprache heiĂt rekursiv oder entscheidbar genau dann, wenn es eine Turingmaschine gibt, die entscheidet.
Literatur
[Bearbeiten | Quelltext bearbeiten]- Rolf Herken (Hrsg.): The Universal Turing Machine. A Half-Century Survey (= Computerkultur. Band 2). 2. Auflage. Springer, Wien u. a. 1995, ISBN 3-211-82637-8.
- Juraj HromkoviÄ: Theoretische Informatik. Formale Sprachen, Berechenbarkeit, KomplexitĂ€tstheorie, Algorithmik, Kommunikation und Kryptographie. 3., ĂŒberarbeitete und erweiterte Auflage. Teubner, Wiesbaden 2007, ISBN 978-3-8351-0043-5.
- John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation. 2. Auflage. Addison-Wesley, Boston MA u. a. 2001, ISBN 978-0-201-44124-6.
- Sybille KrĂ€mer: Symbolische Maschinen. Die Idee der Formalisierung im geschichtlichen AbriĂ. Wissenschaftliche Buchgesellschaft, Darmstadt 1988, ISBN 3-534-03207-1.
- Heinz LĂŒneburg: Rekursive Funktionen. Springer, Berlin u. a. 2002, ISBN 3-540-43094-6.
- Marvin L. Minsky: Computation. Finite and Infinite Machines. Prentice-Hall, Englewood Cliffs NJ 1967.
- Charles Petzold: The Annotated Turing. A guided Tour through Alan Turingâs historic Paper on Computability and the Turing Machine. John Wiley & Sons, Indianapolis IN 2008, ISBN 978-0-470-22905-7.
- Boris A. Trachtenbrot: Algorithmen und Rechenautomaten. VEB Deutscher Verlag der Wissenschaften Berlin 1977.
- Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. In: Proceedings of the London Mathematical Society. Band 42, 1937, ISSN 0024-6115, S. 230â265, doi:10.1112/plms/s2-42.1.230 (Oxford Journals).
- Christian Vater: Turings Maschinen. Eine Problemstellung zwischen Wissenschafts- und Technikgeschichte. Manutius, Heidelberg 2023, ISBN 978-3-944512-35-8. (=Dissertationsschrift UniversitĂ€t Heidelberg, mit ausfĂŒhrlicher Bibliographie)
- Oswald Wiener, Manuel Bonik, Robert Hödicke: Eine elementare EinfĂŒhrung in die Theorie der Turing-Maschinen. Springer, Wien/New York 1998, ISBN 3-211-82769-2.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- David Barker-Plummer: Turing Machines. In: Edward N. Zalta (Hrsg.): Stanford Encyclopedia of Philosophy.
- Georg Weuffen: Die Turing-Maschine. In: MathePrisma Multimedia-Projekt der Bergischen UniversitÀt Wuppertal
- Turingmaschinen auf informatikseite.de
- Einband-/Mehrband-Turingmaschine: Simulation der Grundrechenarten (JavaScript)
- Website ĂŒber eine physikalische Turing-Maschine (inklusive Video)
- elstel.org/coan/ Turingsimulator: ein Programm, das auch nicht-deterministische Turingmaschinen und Maschinenschemata simulieren kann
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- â George A. Miller: Wörter. StreifzĂŒge durch die Psycholinguistik. Herausgegeben und aus dem Amerikanischen ĂŒbersetzt von Joachim Grabowski und Christiane Fellbaum. Spektrum der Wissenschaft, Heidelberg 1993; Lizenzausgabe: Zweitausendeins, Frankfurt am Main 1995; 2. Auflage ebenda 1996, ISBN 3-86150-115-5, S. 255.
- â a b Juraj HromkoviÄ: Theoretische Informatik. Formale Sprachen, Berechenbarkeit, KomplexitĂ€tstheorie, Algorithmik, Kommunikation und Kryptographie. 3. Auflage. B.G. Teubner Verlag, Heidelberg 2007, ISBN 978-3-8351-0043-5.
- â John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: EinfĂŒhrung in die Automatentheorie, formale Sprachen und KomplexitĂ€tstheorie. 3., aktualisierte Auflage. Pearson Studium, MĂŒnchen 2011, ISBN 978-3-86894-082-4.
- â Ingo Wegener: Theoretische Informatik. Eine algorithmenorientierte EinfĂŒhrung. B.G. Teubner, Stuttgart, ISBN 3-519-02123-4.
- â auf Englisch: oblivious, siehe Sanjeev Arora, Boaz Barak: Computational Complexity: A Modern Approach. Cambridge University Press, Cambridge / New York 2009, ISBN 978-0-521-42426-4, S. 45 (princeton.edu [PDF; abgerufen am 13. Juni 2013]).
- â Karl RĂŒdiger Reischuk: KomplexitĂ€tstheorie. 2. Auflage. Band I: Grundlagen. Teubner, 1999, ISBN 978-3-519-12275-3, S. 103.
- â Sanjeev Arora, Boaz Barak: Computational Complexity: A Modern Approach. Cambridge University Press, Cambridge / New York 2009, ISBN 978-0-521-42426-4, S. 19 (princeton.edu [PDF; abgerufen am 13. Juni 2013] Remark 1.10).
- â John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: EinfĂŒhrung in die Automatentheorie, formale Sprachen und KomplexitĂ€tstheorie. 3., aktualisierte Auflage. Pearson Studium, MĂŒnchen 2011, ISBN 978-3-86894-082-4, 8.5.3 ZĂ€hlermaschinen 8.5.4 Die LeistungsfĂ€higkeit von ZĂ€hlermaschinen.
- â Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. November 1936, S. 8â10.
- â Eintrag zur probabilistischen Turingmaschine auf der Seite des NIST
- â Goldin et al., 2003: Turing Machines, Transition Systems and Interaction
