4. Turingmaschinen Der Vorschlag, Algorithmen durch Angabe geeigneter Maschinen zu formalisieren, geht auf den Englischen Mathematiker A.M. Turing (1937) zurück. Dieser ließ sich bei seinen Überlegungen davon leiten, wie ein Mensch einen Algorithmus ausführt. Er beobachtete, dass die elementaren Schritte, wenn man sie nur fein genug zerlegt, bei allen Algorithmen gleich sind und aus einfachen Zeichenmanipulationen bestehen. Ausgeführt werden diese auf einem Blatt Papier, lassen sich aber auch linearisieren, sodass als Speichermedium ein in Felder aufgeteiltes Band ausreicht, wobei jedes Feld eines der benutzten Symbole aufnehmen kann. Formal gesehen, besteht die gespeicherte Zwischeninformation also aus einem Wort über einem festen Alphabet. Da wir uns bei Ein- und Ausgaben auf Wörter beschränken können, ergibt sich hiermit die folgende intuitive Beschreibung einer Turing-Basismaschine zur Berechnung einer nstelligen Funktion f : Σ n T : Der Speicher der Maschine besteht aus einem nach beiden Seiten unbeschränkten (Turing-) Band, das in unendlich viele Felder eingeteilt ist. Jedes Feld kann einen Buchstaben aus dem Bandalphabet Γ der Maschine aufnehmen. Dabei sind zu jedem Zeitpunkt nur endlich viele Felder belegt. Der Zugriff auf das Speicherband erfolgt durch einen Lese-Schreibkopf von der Größe eines Feldes. Das Feld, auf das der Kopf zeigt, heißt das Arbeitsfeld. Dieses Feld kann eingelesen und neu beschriftet werden. Weiter kann der Kopf um ein Feld nach links oder rechts verlegt werden. Durch Wiederholung dieser elementaren Operationen kann also jede Stelle des Bandes besucht, die dort stehende Information gelesen und gegebenenfalls ersetzt oder ergänzt werden. Die Eingabe erfolgt dadurch, dass die n Eingabewörter jeweils durch ein leeres Feld getrennt auf das ansonsten leere Band geschrieben werden. (Dies erfordert natürlich, dass Σ Γ gilt.) Der Lese-Schreibkopf wird auf das leere Feld vor der ersten Eingabe gesetzt. Die Ausgabe erfolgt entsprechend: Nach Beendigung der Rechnung wird das längste Wort, das nur aus Buchstaben aus T besteht und direkt rechts an das Arbeitsfeld anschließt, ausgegeben (T Γ). In der folgenden Definition formalisieren wir dieses Konzept als Mathematische Maschine, wobei Folgendes zu beachten ist: Wir erweitern das Bandalphabet um ein Symbol b (Blank oder Leerzeichen), das in leere Felder geschrieben wird. Die Felder des Arbeitsbandes nummerieren wir mit ganzen Zahlen, sodass eine endliche Bandinschrift als Funktion f : Γ aufgefasst werden kann, wobei f z die Inschrift des Feldes z ist. Die Endlichkeitsbedingung bedeutet dann, dass f z b für fast alle – d.h. alle bis auf endlich viele – z . Das Lesen modellieren wir durch Tests. Eine elementare Operation besteht aus dem Neube- (d.h. Über-) drucken des Arbeitsfeldes oder einer Kopfbewegung. 4.1 D EFINITION . Seien Σ T Γ Alphabete mit Σ T Γ, wobei b der erste Buchstabe von Γ sei und dieser in Σ und T nicht vorkomme, und sei n 1. Die TuringBasismaschine mit Bandalphabet Γ zur Berechnung n-stelliger Funktionen von Σ nach 4 T URINGMASCHINEN 27 T ist die mathematische Basismaschine T B Σ T Γ n I O S in out O PER T EST wobei I Σ n O T S BI wobei BI f : Γ f z b für fast alle z Für s f z S ist f die Bandinschrift und z die Position des Arbeitsfeldes der Speicherbelegung s. in : Σ n BI ist gegeben durch in w1 wn f w1 ! ! ! wn 0 , wobei m# 1 f w1 ! ! ! wn z " wm p , falls z ∑i $ 1 wi &% 1 '% p % 1 mit 1 ( m ( n und 0 ( p ) wm ; und f w1 ! ! ! wn z * b sonst. out : BI + T ist gegeben durch out f z ' f z % 1 ' f z % m , 1 , wobei m die kleinste Zahl 1 ist, sodass f z % m - T . O PER Γ R L S , wobei Γ . a : a Γ . Hierbei ist (für a Γ) a f z f / a z 0 z wobei 1 f / a z 0 x* und (für B 2 R L S ) ist B f z 3 89 z4 76 falls x z sonst a f x f z45 wobei z, 1 z z% 1 falls B L falls B S falls B R Zur Vereinfachung der Notation schreiben wir in der Regel a f z statt a f z . T EST Γ̃, wobei Γ̃ : ta : a Γ und ta f z 3 1 g.d.w. f z a. Die Turing-Basismaschinen unterscheiden sich durch die Bandalphabete und den Typ der zu berechnenden Funktionen (Stelligkeit sowie Ein- und Ausgabealphabet). Eine Turingmaschine ist solch eine Basismaschine mit zugehörigem (deterministischem) Programm. 4.2 D EFINITION . Eine Turingmaschine (TM) M ne B zusammen mit einem B-Programm P. B P ist eine Turing-Basismaschi- Die im letzten Abschnitt für beliebige mathematische Maschinen M eingeführten Begriffe können wir nun auf die Turingmaschinen anwenden. Insbesondere erhalten wir: 4.3 D EFINITION . Eine (partielle) Funktion ϕ heißt (partiell) Turing-berechenbar, falls es eine Turingmaschine M gibt, die ϕ berechnet. Entsprechend ist eine Sprache L Turing-entscheidbar (Turing-aufz ählbar), wenn es eine Turingmaschine M gibt, die cL (χL ) berechnet. 4 T URINGMASCHINEN 28 Wir erweitern diese Definition auf Funktionen und Teilmengen von ; , indem wir die Zahl n mit ihrer (hier etwas modifizierten) Unärdarstellung Un n " 1n < 1 identifizieren. Mit F T M bezeichnen wir die Menge der partiell Turing-berechenbaren Funktionen auf ; : / F n 0 T M 3. ϕ : ; n ; : ϕ partiell Turing-berechenbar / F TM >= n ? 0 F n 0 T M Da wir im Folgenden häufig Funktionen auf den natürlichen Zahlen betrachten, führen wir folgende Abkürzungen ein: n : Un n und n@ : n1 bn2 bnk für n@ n1 A nk B Die oben gegebene formale Definition von T M-Konfigurationen ist recht unhandlich. Eine Konfiguration c s f z C einer Turingmaschine M B P stellen wir daher anschaulich durch b # m b # 1 bD 0 b1 bn s oder das Wort b# m b # 1 sb0 b1 bn dar, wobei b # m bn den relevanten Teil des Bandes beschreibt, d.h. Arbeitsfeld (markiert durch den darunter bzw. davor geschriebenen Programmzustand) und die tatsächliche Inschritft umfasst. Genauer: f z % l 3 bl für , m ( l ( n und f z % l E b für alle anderen l. (Letztere Darstellung zeigt, dass TM-Konfigurationen als Wörter über dem Alphabet Γ ZP beschrieben werden können. Hierbei müssen wir allerdings davon / ausgehen, dass (durch eventuelles Umbenennen der Programmzustände) Γ F ZP 0.) 4.4 B EISPIEL . Eine Turingmaschine M B P zur Berechnung der Summe zweier natürlicher Zahlen kann wie folgt definiert werden. Als Basismaschine wählt man T B 1 C 1 C b 1 2 . Das Programm P hat den Konfigurationen- Übergang bD 1 0 m< 1 b1n < 1 b bD 1 m< n< 1 b e zu bewirken, wobei 0 der Start- und e der Stoppzustand ist. Hierzu verschmilzt P die beiden 1-Blöcke, indem es das trennende Blank durch eine 1 ersetzt, und streicht dann die ersten beiden Einsen: P . 0 R 1 1 R 2 B 2 tb 1 3 B 3 1 4 B 4 L 5 B 5 tb 4 6 B 6 R 7 B 7 b 8 8 R 9 B 9 b 10 (4.1) Im Startzustand 0 geht man also auf die erste 1 der ersten Eingabe. Im Zustand 1 und 2 durchläuft man diese Eingabe, indem man den Lese-Schreibkopf sukzessive um ein Feld nach rechts verlegt (Zustand 1) und danach prüft, ob man sich noch auf der ersten Eingabe befindet (Zustand 2). Das Blank zwischen den Eingaben erreicht man im Zustand 3 und ersetzt es durch eine 1. Im Zustand 4 und 5 läuft man auf das Blank vor der ersten Eingabe zurück, das man im Zustand 6 erreicht. Im Zustand 7 – 9 ersetzt man die ersten beiden Einsen des verschmolzenen 1-Block durch Blanks und stoppt im Zustand 10 vor diesem Block. 4 T URINGMASCHINEN 29 Man geht allgemein davon aus, dass alle Algorithmen – bei geeigneter Darstellung von Ein- und Ausgaben durch Wörter – durch Turingmaschinen simuliert werden können. Insbesondere liefern daher diese Maschinen eine Formalisierung des Berechenbarkeitsbegriffs über den natürlichen Zahlen (oder über Wörtern). Diese Annahme ist als Churchsche These oder Church-Turing-These bekannt: Church-Turing-These: Eine (partielle) Funktion f : ; n ; ist genau dann im intuitiven Sinne (partiell) berechenbar, wenn sie (partiell) Turingberechenbar ist. Diese These ist kein mathematischer Satz und damit auch nicht (im mathematischen Sinn) beweisbar: Hier wird ein intuitives Konzept einem präzisen mathematischen Konzept gegenübergestellt. Man kann jedoch gute Argumente angeben, die es glaubhaft machen, dass der intuitive Berechenbarkeitsbegriff durch die Turing-Berechenbarkeit adäquat formalisiert wird. Hier ist zunächst die Erfahrungstatsache zu nennen, dass sich kein Algorithmus bislang einer kanonischen Übersetzung in eine Turingmaschine widersetzte. Weiter haben sich sehr unterschiedliche Ansätze, den Berechenbarkeitsbegriff zu formalisieren, zu dem Ansatz von Turing äquivalent erwiesen. Wir werden hierzu in den folgenden Abschnitten einige Beispiele betrachten. In den nächsten beiden Abschnitten führen wir zunächst Varianten des TuringmaschinenKonzepts ein, die zu dem Grundkonzept äquivalent sind und damit dessen Robustheit demonstrieren.