Turing-die-Maschine (Turingmaschinen)

| Back to Overview

Berechenbarkeit

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
  • Σ\Sigma: das endliche Eingabealphabet
  • ΓΣ\Gamma \subset \Sigma: das endliche Bandalphabet
  • BΓΣB \in \Gamma \setminus \Sigma: das Leerzeichen (Blank)
  • q0q_0 \in Q: der Startzustand
  • q\overline{q} \in Q: der Endzustand
  • δ:(Q{q})×ΓQ×Γ×{R,L,N}\delta: (Q \setminus \{\overline{q}\}) \times \Gamma \to Q \times \Gamma \times \{R,L,N\}: die Übergangsrelation

Man gibt die Übergangsfunktion häufig als Tabelle an mit den Einträgen (q0q_0, B, R) heißt schreibe B aufs Band, gehe nach rechts auf dem Band und geh in Zustand q0q_0. Z.B.:

δ\delta | 0 | 1 | B | --- | --- | --- | --- | q0q_0 | (q0q_0, B, R) | (q1q_1, B, R) | reject | q1q_1 | (q1q_1, B, R) | (q1q_1, B, R) | accept |

Heißt wenn in Zustand q0q_0 eine 0 gelesen wird, bleib in q0q_0, schreibe BB aufs Band und gehe nach rechts.

Wenn in q0q_0 eine 1 gelesen wird, geh in q1q_1, schreibe BB aufs Band und gehe nach rechts.

Wenn in q0q_0 eine BB gelesen wird, wird die Eingabe verworfen (abgelehnt).

Wenn in q1q_1 ein BB gelesen wird, wird die Eingabe akzeptiert.

\Longrightarrow Die Eingabe wird akzeptiert, wenn die Eingabe eine 1 enthält, sonst wird sie verworfen.

Ausgaben & Entscheidungen

Eine Turingmaschine stoppt, wenn sie q\overline{q} erreicht.

Die Ausgabe einer Turingmaschine ist das Wort, was an der Kopfposition beginnt bis zum ersten Blank (BB).

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 (q\overline{q}, 1, N), also einer 1 am Kopf und somit akzeptierenden Antwort
  • "reject" für (q\overline{q}, 0, N), also keiner 1 am Kopf und somit verwerfenden Antwort

Eine Turingmaschine MM entscheidet eine Sprache LL, wenn alle Wörter in wLw \in L akzeptiert und alle Wörter, die nicht in wnLw_n \notin L sind verworfen werden.

TM-Berechenbarkeit

Eine Funktion f:ΣΣf: \Sigma^* \to \Sigma^* ist TM-berechenbar, wenn es eine Turingmaschine MM gibt, die für eine Eingabe xx den Funktionswert f(x)f(x) berechnet.

Eine Sprache LΣL \subseteq \Sigma^* ist TM-entscheidbar, wenn es eine Turingmaschine MM gibt, die für für alle Eingaben terminiert und die Eingabe ww genau dann akzeptiert, wenn wLw \in L ist.

Was schreib ich wie auf (Konfiguration)

Eine Konfiguration ist ein String αqβ\alpha q \beta mit α,βΓ\alpha, \beta \in \Gamma^* und qQq \in Q. Das heißt auf dem Band steht (man lässt alle Leerzeichen am Anfang und Ende weg)

BBBBBα\dots BBBBB \alpha [Kopf mit Zustand q] βBBBBB \beta BBBBB \dots.

αqβ\alpha' q' \beta' ist dann die direkte Nachfolgekonfiguration von αqβ\alpha q \beta nach einem Berechnungsschritt. Bezeichnet mit αqβαqβ\alpha q \beta \vdash \alpha' q' \beta'.

und αqβ\alpha'' q'' \beta'' ist die Nachfolgekonfiguration von αqβ\alpha q \beta nach einer endlichen Anzahl von Berechnungsschritten. Bezeichnet mit αqβαqβ\alpha q \beta \vdash^* \alpha'' q'' \beta''. Es gilt αqβαqβ\alpha q \beta \vdash^* \alpha q \beta.

z.B.: q000110q001100q011001q110011q1B001q21q_00011 \vdash 0q_0011 \vdash 00q_011 \vdash 001q_11 \vdash 0011q_1B \vdash 001q_21

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:

δ:(Q{q})×ΓkQ×Γk×{R,L,N}k\delta: (Q \setminus \{\overline{q}\}) \times \Gamma^k \to Q \times \Gamma^k \times \{R,L,N\}^k

Eine k-Band TM MM, die mit Rechenzeit t(n)t(n) und Platz s(n)s(n) auskommt, kann von einer 1-Band TM MM' simuliert werden, die mit Rechenzeit O(t2(n))\mathcal{O}(t^2(n)) und Platz O(s(n))\mathcal{O}(s(n)) 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 UU und da gibst du jetzt als Eingabe deinen C-Code von PSPain ein. Das einzige was die Turingmaschine UU 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 MM als Eingabe zusammen mit einem Wort ww, das Ergebnis ist dann wie als hättest du MM auf ww 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 MM 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 δ(qi,Xj)=(qk,Xl,Dm)\delta(q_i, X_j) = (q_k, X_l, D_m) mit 0i10j10k10l10m0^i10^j10^k10^l10^m. Heißt wir schreiben so viele 0len wie die Höhe Zahl (101 \to 0, 200,2 \to 00, \dots) 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 1111.

Die Universelle Turingmaschine UU 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.

M\langle M \rangle ist die Gödelnummer von MM.

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.