Mehrspuren-Turingmaschine
# Mehrspuren-Turingmaschine

Eine Mehrspuren-Turingmaschine (englisch Multi-track Turing machine) ist eine abstrakte Maschine in der theoretischen Informatik und eine Erweiterung der klassischen Turingmaschine.

Die Mehrspuren-Turingmaschine verfügt über ein Speicherband mit mehreren Spuren, d. h., pro Feld können mehrere Symbole ausgelesen werden, aber nur einen Lese- und Schreibkopf. Dieser Schreibkopf liest/schreibt immer alle Spuren eines Feldes am Band und bewegt sich dann für alle Spuren synchron (ein wesentlicher Unterschied zu Mehrband-Turingmaschinen). Ansonsten verhalten sich Mehrspuren-Turingmaschinen genau so wie klassische Turingmaschinen.

Eine Mehrspuren-Turingmaschine mit nur einem Band entspricht genau der klassischen Turingmaschine und jede Mehrspuren-Turingmaschine kann durch eine klassische Turingmaschine (mit nur einem Band) simuliert werden. Die beiden Maschinenmodelle sind also bezüglich der Berechenbarkeit von Funktionen äquivalent, d. h., beide Modelle können die gleichen Funktionen berechnen.

## Formale Definition

Formal kann eine (deterministische) k-Spuren Turingmaschine als Tupel $M=(Q,\Sigma ,\Gamma ,\delta ,q_{0},\square ,F)$ dargestellt werden.

* $Q$ ist die endliche Zustandsmenge.
* $\Sigma$ ist das endliche Eingabealphabet.
* $\Gamma$ ist das endliche Bandalphabet und es gilt $\Sigma \subset \Gamma$.
* $\delta \colon (Q\setminus F)\times \Gamma ^{k}\to Q\times \Gamma ^{k}\times \{L,N,R\}$ ist die (partielle) Überführungsfunktion.
* $q_{0}\in Q$ ist der Anfangszustand.
* $\square \in \Gamma \setminus \Sigma$ steht für das leere Feld (Blank).
* $F\subseteq Q$ die Menge der Endzustände.

Die Definition unterscheidet sich von der einer klassischen Turingmaschine (oder auch einer Mehrband-Turingmaschine) nur in der Definition der Überführungsfunktion. Die partielle Überführungsfunktion $\delta$ liefert zu einem Zustand und den k aus einem Feld gelesenen Bandsymbolen (i) den nächsten Zustand, (ii) k Bandsymbole das in das aktuelle Feld geschrieben werden, und (iii) die Bewegungsrichtung des Lese-Schreib-Kopf (L … ein Feld nach links, N … nicht bewegen, R … ein Feld nach rechts). Im Kontrast zur klassischen Turingmaschine werden k Symbole statt nur einem Symbol gelesen und geschrieben. Der Unterschied zur Mehrband-Turingmaschine besteht darin, dass $\delta$ nur eine Bewegungsrichtung für den Lese-Schreib-Kopf festlegt, während $\delta$ bei Mehrband-Turingmaschinen k Bewegungsrichtungen festlegt (eine für jeden Lese-Schreib-Kopf).

Um eine nichtdeterministische Variante der k-Spuren Turingmaschine zu definieren, ersetzt man die Überführungsfunktion durch eine Übergangsrelation $\delta$:

* $\delta \subseteq (Q\setminus F)\times \Gamma ^{k}\times Q\times \Gamma ^{k}\times \{L,N,R\}$

## Beispiel

Das folgende Beispiel ist eine 3 Spuren Turingmaschine, die 2 gleich lange Binärzahlen addiert. Dabei sind zu Beginn die zwei gegebenen Zahlen in den ersten beiden Spuren gespeichert und die Ausgabe wird in die dritte Spur gespeichert. $M=(\{q_{0},q_{1},q_{2},q_{f}\},\{0,1\},\{0,1,b\},\delta ,q_{0},b,\{q_{f}\})$

Die Überführungsfunktion $\delta$ definieren wir schrittweise. Im Zustand $q_{0}$ bewegt sich die Maschine an das rechte Ende der Eingabe. Wenn die Maschine den Zustand $q_{0}$ verlassen hat, steht der Lese-Schreib-Kopf auf der letzten Ziffer der Eingabe.

| aktueller Zustand | geles. Symbol | geles. Symbol | geles. Symbol | | schr. Symbol | schr. Symbol | schr. Symbol | neuer Zustand | Kopf- richtung |
| - | - | - | - | - | - | - | - | - | - |
| $q_{0}$ | 0 | 0 | b | → | 0 | 0 | b | $q_{0}$ | R |
| $q_{0}$ | 0 | 1 | b | → | 0 | 1 | b | $q_{0}$ | R |
| $q_{0}$ | 1 | 0 | b | → | 1 | 0 | b | $q_{0}$ | R |
| $q_{0}$ | 1 | 1 | b | → | 1 | 1 | b | $q_{0}$ | R |
| $q_{0}$ | b | b | b | → | b | b | b | $q_{1}$ | L |

Für die eigentlich Addition werden die zwei Zustände $q_{1}$ und $q_{2}$ verwendet. Hier entspricht $q_{1}$ der Addition an der aktuellen Stelle ohne Übertragsbit aus dem vorherigen Schritt und $q_{2}$ der Addition mit einem Übertragsbit aus dem letzten Schritt. Wir definieren schließlich noch $\delta$ für $q_{1}$ und $q_{2}$.

| aktueller Zustand | geles. Symbol | geles. Symbol | geles. Symbol | | schr. Symbol | schr. Symbol | schr. Symbol | neuer Zustand | Kopf- richtung |
| - | - | - | - | - | - | - | - | - | - |
| $q_{1}$ | 0 | 0 | b | → | 0 | 0 | 0 | $q_{1}$ | L |
| $q_{1}$ | 0 | 1 | b | → | 0 | 1 | 1 | $q_{1}$ | L |
| $q_{1}$ | 1 | 0 | b | → | 1 | 0 | 1 | $q_{1}$ | L |
| $q_{1}$ | 1 | 1 | b | → | 1 | 1 | 0 | $q_{2}$ | L |
| $q_{1}$ | b | b | b | → | b | b | b | $q_{f}$ | R |
| aktueller Zustand | geles. Symbol | geles. Symbol | geles. Symbol | | schr. Symbol | schr. Symbol | schr. Symbol | neuer Zustand | Kopf- richtung |
| $q_{2}$ | 0 | 0 | b | → | 0 | 0 | 1 | $q_{1}$ | L |
| $q_{2}$ | 0 | 1 | b | → | 0 | 1 | 0 | $q_{2}$ | L |
| $q_{2}$ | 1 | 0 | b | → | 1 | 0 | 0 | $q_{2}$ | L |
| $q_{2}$ | 1 | 1 | b | → | 1 | 1 | 1 | $q_{2}$ | L |
| $q_{2}$ | b | b | b | → | b | b | 1 | $q_{f}$ | N |

Wir betrachten als Beispiel die Addition von 0011 und 1010

| Schritt | Zust. | Band-Spuren |
| - | - | - |
| 1 | $q_{0}$ | b0011b |
| 1 | $q_{0}$ | b1010b |
| 1 | $q_{0}$ | bbbbbb |
| 2 | $q_{0}$ | b0011b |
| 2 | $q_{0}$ | b1010b |
| 2 | $q_{0}$ | bbbbbb |
| 3 | $q_{0}$ | b0011b |
| 3 | $q_{0}$ | b1010b |
| 3 | $q_{0}$ | bbbbbb |
| 4 | $q_{0}$ | b0011b |
| 4 | $q_{0}$ | b1010b |
| 4 | $q_{0}$ | bbbbbb |
| 5 | $q_{0}$ | b0011b |
| 5 | $q_{0}$ | b1010b |
| 5 | $q_{0}$ | bbbbbb |
| 6 | $q_{1}$ | b0011b |
| 6 | $q_{1}$ | b1010b |
| 6 | $q_{1}$ | bbbbbb |
| Schritt | Zust. | Band-Spuren |
| 7 | $q_{1}$ | b0011b |
| 7 | $q_{1}$ | b1010b |
| 7 | $q_{1}$ | bbbb1b |
| 8 | $q_{2}$ | b0011b |
| 8 | $q_{2}$ | b1010b |
| 8 | $q_{2}$ | bbb01b |
| 9 | $q_{1}$ | b0011b |
| 9 | $q_{1}$ | b1010b |
| 9 | $q_{1}$ | bb101b |
| 10 | $q_{1}$ | b0011b |
| 10 | $q_{1}$ | b1010b |
| 10 | $q_{1}$ | b1101b |
| hält | $q_{f}$ | b0011b |
| hält | $q_{f}$ | b1010b |
| hält | $q_{f}$ | b1101b |

## Simulation durch eine klassische Turingmaschine

Jede k-Spuren-Turingmaschine $M^{k}=(Q,\Sigma ,\Gamma ,\delta ,q_{0},\square ,F)$ kann durch ein Turingmaschine $M=(Q,\Sigma ,\Gamma ',\delta ',q_{0},\square ^{k},F)$ simuliert werden. Dabei bleiben die Zustände der Maschine unverändert, aber für die klassische Turingmaschine wird ein größeres Bandalphabet zu verwenden sein, das (1) alle k-Tupel über Gamma und (2) das Eingabealphabet enthält. Die Überführungsfunktion oder Übergangsrelation wird eigentlich unverändert übernommen werden, muss aber auf $\Sigma$ erweitert werden. Ein Symbol $a\in \Sigma$ wird in der konstruierten Turingmaschine wie das k-Tupel $(a,\square ,\dotsc ,\square )$ behandelt. Als Blanksymbol der Turingmaschine M fungiert das k-Tupel $(\square ,\square ,\dotsc ,\square ),$ das nur Blanksymbole enthält. Formal kann das wie folgt ausgedrückt werden:

* $\Gamma '=\Gamma ^{k}\cup \Sigma$
* Für $\gamma _{k}\in \Gamma ^{k}$ gilt $(q,\gamma _{k},q',\gamma _{k},D)\in \delta '$ genau dann, wenn $(q,\gamma _{k},q',\gamma _{k},D)\in \delta .$
* Für $\sigma \in \Sigma$ gilt $(q,\sigma ,q',\gamma _{k},D)\in \delta '$ genau dann, wenn $(q,(\sigma ,\square ,\dotsc ,\square ),q',\gamma _{k},D)\in \delta .$
