Turing-die-Maschine (Turingmaschinen)
| Back to OverviewBerechenbarkeit
Turingmaschine
Die Turingmaschine, ist das wichtigste Hilfsmittel dieser Vorlesung, sie zu verstehen ist zwar erst die Grundvoraussetzung aber trotzdem.
Eine Turingmaschine ist ein 7-Tupel:
- Q: die endliche Zustandsmenge
- : das endliche Eingabealphabet
- : das endliche Bandalphabet
- : das Leerzeichen (Blank)
- Q: der Startzustand
- Q: der Endzustand
- : die Übergangsrelation
Man gibt die Übergangsfunktion häufig als Tabelle an mit den Einträgen (, B, R) heißt schreibe B aufs Band, gehe nach rechts auf dem Band und geh in Zustand . Z.B.:
| 0 | 1 | B | --- | --- | --- | --- | | (, B, R) | (, B, R) | reject | | (, B, R) | (, B, R) | accept |
Heißt wenn in Zustand eine 0 gelesen wird, bleib in , schreibe aufs Band und gehe nach rechts.
Wenn in eine 1 gelesen wird, geh in , schreibe aufs Band und gehe nach rechts.
Wenn in eine gelesen wird, wird die Eingabe verworfen (abgelehnt).
Wenn in ein gelesen wird, wird die Eingabe akzeptiert.
Die Eingabe wird akzeptiert, wenn die Eingabe eine 1 enthält, sonst wird sie verworfen.
Ausgaben & Entscheidungen
Eine Turingmaschine stoppt, wenn sie erreicht.
Die Ausgabe einer Turingmaschine ist das Wort, was an der Kopfposition beginnt bis zum ersten Blank ().
Eine Turingmaschine kann entscheiden, hießt entweder akzeptieren oder verwerfen.
Eine Turingmaschine akzeptiert, wenn das Ausgabewort mit einer 1 beginnt und verwirft bei allem anderen.
Wir nutzen häufig
- "accept" für (, 1, N), also einer 1 am Kopf und somit akzeptierenden Antwort
- "reject" für (, 0, N), also keiner 1 am Kopf und somit verwerfenden Antwort
Eine Turingmaschine entscheidet eine Sprache , wenn alle Wörter in akzeptiert und alle Wörter, die nicht in sind verworfen werden.
TM-Berechenbarkeit
Eine Funktion ist TM-berechenbar, wenn es eine Turingmaschine gibt, die für eine Eingabe den Funktionswert berechnet.
Eine Sprache ist TM-entscheidbar, wenn es eine Turingmaschine gibt, die für für alle Eingaben terminiert und die Eingabe genau dann akzeptiert, wenn ist.
Was schreib ich wie auf (Konfiguration)
Eine Konfiguration ist ein String mit und . Das heißt auf dem Band steht (man lässt alle Leerzeichen am Anfang und Ende weg)
[Kopf mit Zustand q] .
ist dann die direkte Nachfolgekonfiguration von nach einem Berechnungsschritt. Bezeichnet mit .
und ist die Nachfolgekonfiguration von nach einer endlichen Anzahl von Berechnungsschritten. Bezeichnet mit . Es gilt .
z.B.:
K-Spurige Turingmaschine
Eine Turingmaschine hat nach unserem Modell normalerweise eine Spur. Man kann sich aber natürlich auch Mehrspurige Turingmaschinen vorstellen. Heißt anstatt nur ein Symbol pro Schritt zu lesen, ließt man ein Vektor von Symbolen. !Immernoch nur ein Kopf!
Mehrspurige Turingmaschinen, sind einfach konvertierbar zu 1-Spurigen Turingmaschinen, da man einfach mehr Bandsymbole nimmt, die alle Möglichkeiten des Vektors repräsentieren.
Mehrband Turingmaschine
Der Unterschied zwischen Spur und Band ist der Kopf. Ein Band kann mehrere Spuren haben, heißt ein Kopf ließt pro Lesevorgang ein Vektor also mehrere Symbole, kann aber nur auf allen Spuren gleichzeitig sich bewegen.
Ein Band hat mehrere Köpfe, die sich unabhängig voneinander bewegen können. Die Übergangsfunktion sieht dann folgendermaßen aus:
Eine k-Band TM , die mit Rechenzeit und Platz auskommt, kann von einer 1-Band TM simuliert werden, die mit Rechenzeit und Platz auskommt.
Die Eingabe eine Mehrbandturingmaschine steht immer auf dem ersten Band.
Universelle Turingmaschine
Eine universelle Turingmaschine ist eine Turingmaschine, die jede andere Turingmaschine simulieren kann.
Wat soll mir das jetzt sagen?
Naja also sagen wir du hast eine Turing Maschine und da gibst du jetzt als Eingabe deinen C-Code von PSPain ein. Das einzige was die Turingmaschine dann macht ist, dass sie deinen dummen Code ausführt und die Ausgabe ist dann das Ergebnis.
Nun anstatt deinen C-Code als Eingabe zu geben, gibst du eine Turingmaschine als Eingabe zusammen mit einem Wort , das Ergebnis ist dann wie als hättest du auf laufen lassen.
Aber mein PSP Code ist doch in Text geschrieben und nicht in 7-Tupeln.
Völlig richtig deswegen hat sich Turing oder Gödel oder wer auch immer, sich was ausgedacht Gödelnummern, um eine TM in ein ${0,1} Alphabet zu kodieren.
Um eine korrekte Gödelnummer zu erhalten muss sie Präfixfrei sein, damit wir erkennen wann eine Gödelnummer aufhört und und sie eindeutig ist.
Unsere Gödelnummer nach Vorlesung funktioniert so:
- Sie beginnt immer mit 111 und endet mit 111 und in der Mitte steht niemals 111. (Präfixfrei)
- Jetzt kodieren wir den Übergang mit . Heißt wir schreiben so viele 0len wie die Höhe Zahl (, ) und trennen immer mit 1.
- Wir schreiben dann die Übergänge von der Übergangstabelle von oben links nach unten rechts auf und trenne die Übergänge mit .
Die Universelle Turingmaschine muss dann nur noch prüfen, ob die Eingabe eine korrekte Gödelnummer ist und simuliert sie dann auf 3 Bändern. Band zwei ist die Übergangsfunktion und Band 3 für den Zustand.
Eine Universelle TM kann eine 1-Band-TM in konstantem Zeitverlust simulieren.
ist die Gödelnummer von .
Analyse
Falls ihr informell beschreiben sollt, was eine Turingamschine macht, ist das meistens eher eine Text Beschreibung.
Falls ihr aber nur beschreiben oder formel beschreiben sollt, was eine Turingmaschine macht, dann ist das meist das Angeben einer Funktion wie
f(x) := \begin{cases} 1 & \text{wenn x in mit 1 anfängt} \\ 0 & \text{sonst} \end{cases}
Dazu könnt ihr noch entwas erklären, aber meist ist auch tatsächlich die Funktion gefragt.