THEORETISCHE INFORMATIK II

Ähnliche Dokumente
Rekursiv aufzählbare Sprachen

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

11.1 Kontextsensitive und allgemeine Grammatiken

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

8. Turingmaschinen und kontextsensitive Sprachen

THEORETISCHE INFORMATIK

Theoretische Informatik 2

Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Sprachen und Automaten. Tino Hempel

Theoretische Informatik Testvorbereitung Moritz Resl

Lösungen zur 3. Projektaufgabe TheGI1

2.4 Kontextsensitive und Typ 0-Sprachen

GTI. Hannes Diener. 6. Juni Juni. ENC B-0123, diener@math.uni-siegen.de

a n b n c n ist kontextsensitiv kontextfreie Sprachen (Typ 2) Abschnitt 3.3 kontextfreie Sprachen: Abschlusseigenschaften Chomsky NF und binäre Bäume

Ausgewählte unentscheidbare Sprachen

Berechenbarkeit und Komplexität

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Einführung in die Theoretische Informatik

Theoretische Grundlagen der Informatik

Formale Sprachen. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

Formale Sprachen. Spezialgebiet für Komplexe Systeme. Yimin Ge. 5ahdvn. 1 Grundlagen 1. 2 Formale Grammatiken 4. 3 Endliche Automaten 5.

Formale Sprachen und Automaten

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK

Zusammenfassung Grundzüge der Informatik 4

Vorlesung Theoretische Informatik

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

1 Varianten von Turingmaschinen

Endliche Sprachen. Folgerung: Alle endlichen Sprachen sind regulär. Beweis: Sei L={w 1,,w n } Σ*. Dann ist w 1 +L+w n ein regulärer Ausdruck für

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie

Theoretische Grundlagen der Informatik

Speicherplatz-Komplexität 1 / 30

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Formale Sprachen und Automaten

1 Zahlentheorie. 1.1 Kongruenzen

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

7 Endliche Automaten. Reimund Albers Papierfalten Kapitel 7 Endliche Automaten 103

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Wie viel Mathematik kann ein Computer?

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel

Wortproblem für kontextfreie Grammatiken

Erzeugende Funktionen

Nichtdeterministische Platzklassen

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Sprachen/Grammatiken eine Wiederholung

Mächtigkeit von WHILE-Programmen

Referat rekursive Mengen vs. rekursiv-aufzählbare Mengen

Lösungsvorschläge Blatt Z1

Übungen zur Vorlesung Einführung in die Theoretische Informatik, Blatt 12 LÖSUNGEN

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

liefern eine nicht maschinenbasierte Charakterisierung der regulären

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

Theoretische Informatik

2. Berechnungsmächtigkeit von Zellularautomaten. Ziele Simulation von Schaltwerken Simulation von Turingmaschinen

Eigenschaften regulärer Sprachen

2 Mengen und Abbildungen

Automaten und Formale Sprachen

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Übung Theoretische Grundlagen

abgeschlossen unter,,,, R,

Theoretische Informatik 2

Zahlen und metrische Räume

äußere Klammern können entfallen, ebenso solche, die wegen Assoziativität von + und Konkatenation nicht notwendig sind:

Einführung in die Informatik 2

3 Vom Zählen zur Induktion

Mengenlehre gibt es seit den achtziger Jahren des 19. Jahrhunderts. Sie wurde von

Grundbegriffe der Informatik

Mengen und Abbildungen

Satz von Kleene. (Stephen C. Kleene, ) Wiebke Petersen Einführung CL 2

Basistext Lineare Gleichungssysteme. Eine lineare Gleichung mit einer Unbekannten hat die allgemeine Form! #=%

Theoretische Grundlagen der Informatik

7. Formale Sprachen und Grammatiken

Grundbegriffe der Informatik

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Komplexität und Komplexitätsklassen

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Ulrich Furbach. Sommersemester 2014

Kapitel 3. Natürliche Zahlen und vollständige Induktion

6 Kontextfreie Grammatiken

Theoretische Grundlagen des Software Engineering

(Man sagt dafür auch, dass die Teilmenge U bezüglich der Gruppenoperationen abgeschlossen sein muss.)

Theoretische Informatik

Komplexita tstheorie eine erste Ubersicht. KTV bedeutet: Details erfahren Sie in der Komplexitätstheorie-Vorlesung.

Jeweils am Montag um 18:30 treffen sich Studenten in Seminarraum 3 zum gemeinsamen Lernen.

Grammatiken. Einführung

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Motivation. Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik. Motivation - Beispiel. Motivation - Beispiel

WS 2009/10. Diskrete Strukturen

Programmiersprachen und Übersetzer

3. Relationen Erläuterungen und Schreibweisen

Automaten, Spiele und Logik

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Musterlösung zur Nachklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Transkript:

THEORETISCHE INFORMATIK II Vorlesungsskript Jiří Adámek Institut für Theoretische Informatik Technische Universität Braunschweig Juni 2013

Inhaltsverzeichnis 1 Endliche Automaten 1 1.1 Mathematische Grundbegriffe....................... 2 1.2 Definition der endlichen Automaten................... 5 1.3 Nichtdeterministische Automaten..................... 10 1.4 Reguläre Sprachen.............................. 16 1.5 Ableitungen.................................. 21 1.6 Äquivalente Zustände............................ 23 1.7 Konstruktion eines Quotient-DEA.................... 25 1.8 Minimierung von Automaten........................ 26 1.9 Nerode-Äquivalenz.............................. 28 1.10 Beweise der Regularität........................... 31 1.11 Moore- und Mealy-Automaten....................... 34 2 Kontextfreie Sprachen und Kellerautomaten 37 2.1 Die Idee einer formalen Grammatik.................... 37 2.2 Kontextfreie Grammatik.......................... 38 2.3 Anwendungen von kontextfreien Grammatiken............. 42 2.4 Ableitungsbäume............................... 44 2.5 Kontextfreie und reguläre Sprachen.................... 49 2.6 Eigenschaften kontextfreier Sprachen................... 54 2.7 Nullierbare Variablen............................ 61 2.8 Chomsky-Normalform............................ 63 2.9 Algorithmen für formale Sprachen..................... 69 2.10 Kellerautomaten............................... 71 2.11 Kellerautomaten und kontextfreie Sprachen............... 75 3 Turingmaschinen 79 3.1 Definition einer Turingmaschine...................... 79 3.2 Modifikationen von Turingmaschinen................... 85 3.2.1 TM mit mehreren finalen Zuständen............... 85 3.2.2 TM mit zusätzlichem Gedächtnis................. 86 i

ii INHALTSVERZEICHNIS 3.2.3 TM mit erweitertem Bandalphabet............... 87 3.2.4 TM mit mehrspurigem Band................... 88 3.2.5 TM mit mehreren Bändern.................... 89 3.3 Nichtdeterministische Turingmaschinen................. 92 3.4 Rekursiv aufzählbare Sprachen....................... 96 3.5 Rekursive Sprachen............................. 97 4 Church-Turing-These, rekursive Funktionen und Grammatiken 101 4.1 Berechenbare Funktionen.......................... 101 4.2 Primitive Rekursion............................. 104 4.3 µ-rekursive Funktionen........................... 108 4.4 Grammatiken und Turingmaschinen................... 110 4.5 Universelle Turingmaschine......................... 116 4.6 Das Halteproblem.............................. 120 4.7 Ein Rechner als Turing-Maschine..................... 122 5 Unentscheidbare Probleme 125 5.1 Das Akzeptanzproblem........................... 125 5.2 Akzeptanz des leeren Wortes........................ 126 5.3 Ist eine TM ein Algorithmus?....................... 127 5.4 Das Problem von hello world Programmen.............. 128 5.5 Satz von Rice................................. 129 5.6 Minimierung von Turingmaschinen.................... 131 6 Komplexität von Algorithmen 133 6.1 Beispiele effizienter Algorithmen...................... 134 6.2 Komplexitätsklasse P............................ 140 6.3 Berechnungsprobleme und Reduzierbarkeit............... 144 6.4 Robustheit der Klasse P.......................... 149 6.4.1 TM mit zusätzlichem Gedächtnis................. 150 6.4.2 TM mit mehrspurigem Band................... 150 6.4.3 Mehr-Band TM........................... 150 6.4.4 RAM................................. 150 6.5 Geometrische Algorithmen und reelle RAM............... 152 6.6 Komplexitätsklasse N P........................... 163 6.7 N P-Vollständigkeit............................. 165 6.8 Weitere N P-vollständige Probleme.................... 170 6.9 Komplexitätsklasse con P......................... 174 6.10 Komplexität von Optimierungsproblemen................ 176 6.11 Approximation von Optimierungsproblemen.............. 181 6.12 Raumkomplexität.............................. 186

Kapitel 3 Turingmaschinen kaptm Weder endliche Automaten noch Kellerautomaten sind genügend starke Berechnungsmodelle, denn sie sind nicht fähig, selbst so einfache Sprachen wie z. B. {a n b n c n ; n 1} zu akzeptieren. Wir führen jetzt ein Modell einer Maschine ein, die eine sehr starke Leistung hat, obwohl die Definition nicht komplizierter als die der Kellerautomaten ist: die Turingmaschinen. Diese Maschinen wurden von Alan Turing in den 1930 er als Formalisierung des intuitiven Begriffs des Algorithmus eingeführt. Turing versuchte zu zeigen, dass jeder Rechenprozess, den ein Mensch aufgrund einer (endlichen, eindeutigen) Anweisung durchführen kann, auch automatisch von einer Maschine durchgeführt werden kann. Was einem menschlichen Rechner zur Verfügung steht, ist eine endliche Liste von Instruktionen, die zusammen mit den Daten in seinem Gedächtnis eine endliche Menge von (inneren) Zuständen formt. Außerdem hat er einen unbeschränkten Raum, in dem er lesen, schreiben und überschreiben darf. Das kann (zweidimensional) durch einen beliebig erweiterbaren Papierstoß realisiert werden, oder äquivalent, falls alle Zeilen als Erweiterungen der ersten angesehen werden, als ein (eindimensionales) unendliches Band. Das formale Modell ist dann dem eines Kellerautomaten ähnlich: anstelle des Kellers gibt es hier ein Band, auf dem sich ein read-and-write-kopf unbeschränkt bewegt. Die Leistungsfähigkeit von Turingmaschinen ist trotzdem unvergleichlich größer als die der Kellerautomaten. Es zeigt sich, dass die Klasse aller Probleme, die mit Turingmaschinen gelöst werden können, dieselbe ist wie die Klasse aller Probleme, die moderne Rechner mit modernen Programmiersprachen lösen können. Die Churchsche These, die wir s0päter genauer erläutern, behauptet, dass die Turingmaschine sogar ein ganz allgemeines Modell des Begriffs des Algorithmus ist. Also kann ein Problem genau dann mit einem Algorithmus gelöst werden, wenn eine Turingmaschine es lösen kann. Diese These kann nicht bewiesen werden (der Begriff des Algorithmus ist eben doch nur intuitiv), aber sie wurde mehrmals überzeugend dadurch untermauert, dass andere oft grundsätzlich verschiedene Berechnungsmodelle dieselbe Klasse lösbarer Probleme ergeben. 3.1 Definition einer Turingmaschine Eine Turingmaschine besteht analog zum Kellerautomaten aus inneren Zuständen, externem Speicher und einer Betriebseinheit, die aufgrund des momentanen Zustandes und des gerade gelesenen Symbols entscheidet, welcher der nächste Zustand ist und wie der Speicher geändert wird. Im Vergleich zu Kellerautomaten hat hier der Speicher den Typ eines (unbeschränkten) Bandes, auf dem sich ein 79

80 KAPITEL 3. TURINGMASCHINEN Lese-/Schreibkopf frei bewegt:... a b b a... Kopf Band q 0 Betriebseinheit q 3 q 2 q 1 (Obwohl das Band unbeschränkt ist, ist zu jedem Zeitpunkt nur ein endlicher Teil beschrieben; der Rest ist leer.) Noch ein Unterschied im Vergleich zu den Kellerautomaten: wir arbeiten zuerst nur mit deterministischen Turingmaschinen, denn sie sind (wie im Fall der endlichen Automaten) genauso leistungsfähig wie die nichtdeterministischen. Das beweisen wir später. Die Übergangsfunktion δ einer Turingmaschine entscheidet aufgrund des momentanen Zustandes q und des gerade gelesenen Bandsymbols s, ob 1. sich der Zustand zu q ändert und sich der Kopf nach links (L) oder rechts (R) bewegt oder 2. sich der Zustand zu q ändert und der Kopf das momentane Bandsymbol mit einem neuen Symbol s überschreibt. Das beschreiben wir als Funktion δ(q, s) = (q, s ), wobei s = L, R oder s Σ ist. (Σ ist das gegebene Eingabealphabet). Wir müssen aber auch Bandfelder, die nicht beschriftet sind, behandeln. Dazu führen wir ein Spezialsymbol # (Blank) ein, das unbeschriftete Felder bezeichnet. In der Formel δ(q, s) = (q, s ) sind q und q also Zustände, s ein Symbol aus Σ {#} und s ein Symbol aus Σ {#,L,R}. Obwohl die Turingmaschine, wie wir sie jetzt definieren, deterministisch ist, gibt es neben 1. und 2. noch eine weitere Möglichkeit für ihr Verhalten, nämlich dass 3. die Maschine im Zustand q auf dem Bandsymbol s hält und die Berechnung endet. sectdefturingmaschine defturingmaschine Formal wird dies dadurch beschrieben, dass δ(q, s) nicht definiert ist. Hier ist δ also eine partielle Funktion. Es gibt einen wichtigen Grund für diesen dritten Fall: der Kopf der Turingmaschine ist kein read-only-kopf (wie im Fall der endlichen Automaten und Kellerautomaten). Der Impuls, eine Berechnung zu beenden, erfolgt hier also nicht durch das Ende der Eingabe. Im Vergleich mit den DEA oder Kellerautomaten ergibt sich eine kleine Vereinfachung: es genügt ein finaler Zustand, wir brauchen keine Menge F Q (vergleiche 3.2 unten). Notation. Wir bezeichnen Σ = Σ { } als die Menge aller Bandsymbole. Definition. Eine Turingmaschine (TM) ist ein Fünftupel M = (Q, Σ, δ, q 0, q F ) wobei

3.1. DEFINITION EINER TURINGMASCHINE 81 ectbspaltdreieinseins bspaltdreieinseins Q Σ δ q 0 Q q F Q eine endliche Menge (aller Zustände), eine endliche Menge (das Eingabealphabet), die die Symbole L, R und # nicht enthält, eine partielle Funktion (die Übergangsfunktion) mit Definitionsbereich Q (Σ {#}) und Wertebereich Q (Σ {#,L,R}), der Initialzustand und der Finalzustand ist. Notation. Wir schreiben statt δ(q, s) = (q, s ) oft nur (q, s) (q, s ) und sprechen von Übergangsregeln. Wenn s = L, bedeutet diese Regel, dass der Lesekopf nach links geht. Analog für s = R. Wenn s in Σ liegt, wird das gelesene Symbol s durch s überschrieben und der Kopf bewegt sich nicht. Beispiel 1. Teilbarkeit durch 5. Der Algorithmus, der für eine Zahl entscheidet, ob sie durch 5 teilbar ist, ist einfach: akzeptiert werden Zahlen mit der letzten Ziffer 0 oder 5. Wir lesen also die Eingabe s 1... s n bis wir das letzte beschriebene Feld s n erreichen (also: bis # erscheint und dann einen Schritt zurück). Falls s n = 0 oder 5, gehen wir in den Finalzustand q F über: (q 0, i) (q 0, R) für i = 0, 1,..., 9 (wir lesen weiter) (q 0, #) (q 1, L) einen Schritt zurück und in den neuen Zustand q 1 (q 1, 0) (q F, 0) (q 1, 5) (q F, 5) } falls s n = 0 oder 5, ist der letzte Zustand q F Genauer: die folgende TM M = ({q 0, q 1, q F }, {0, 1,..., 9}, δ, q 0, q F ), deren Übergangsregeln oben aufgelistet sind, akzeptiert die Sprache aller Wörter über Σ = {0, 1,..., 9}, die mit 0 oder 5 enden. Beispiel einer Berechnung: für die Eingabe 132 wird die TM die folgenden Schritte machen:... # # 1 3 2 # # # #... q 0 Initialkonfiguration... # # 1 3 2 # # # #... q 0... # # 1 3 2 # # # #... q 0... # # 1 3 2 # # # #... q 1 q 0... # # 1 3 2 # # # #... Haltekonfiguration Da kein Übergang (q 1, 2) definiert ist, hält hier die Turingmaschine. Die Eingabe 132 wird nicht akzeptiert, da q 1 nicht der Finalzustand ist.

82 KAPITEL 3. TURINGMASCHINEN Die Berechnung von Eingaben formalisieren wir jetzt. Konfigurationen: Eine Konfiguration einer Turingmaschine ist die vollständige Information über die TM zu einem Zeitpunkt der Berechnung; sie wird durch (1) den momentanen Zustand q, (2) den Inhalt des Bandes und (3) die Position des Kopfes bestimmt. Also ist (1) ein Element der Menge Q. Wir können (2) und (3) zusammenfassen, indem wir sagen, welches Wort u L links vom Kopf steht, welches Wort u R rechts steht und welches Symbol a aus Σ = Σ {#} der Kopf liest. Dabei ist u L entweder leer, oder hat das erste Symbol aus Σ und die weiteren aus Σ: Analog u R Σ Σ {ε}. u L Σ Σ {ε}. Eine Konfiguration ist also ein Quadrupel (q, u, a, v), wobei q Q, u Σ Σ {ε}, a Σ und v Σ Σ {ε}. Die Menge aller solcher Quadrupel heißt Konfigurationsmenge. K = Q (Σ Σ {ε}) Σ (Σ Σ {ε}) Die üblichere (und übersichtlichere) Schreibweise ist, u, a, v zu konkatenieren und a zu unterstreichen: (q, uav). In Beispiel 1 hat die Berechnung also die Konfigurationen (q 0, 132) (q 0, 132) (q 0, 132) (q 0, 132#) und (q 1, 132) Berechnung: Die Eingabe s 1 s 2... s n Σ wird immer so auf das Band geschrieben, dass die Buchstaben ohne Leerzeichen hintereinander stehen. Der Kopf wird auf den ersten Buchstaben gestellt und der Zustand ist initial. Mit anderen Worten heißt das: wir erwarten am Anfang, dass die Konfiguration die folgende Form hat: ( ) (q 0, s 1 s 2... s n ), wobei s 1... s n Σ. Der Fall der leeren Eingabe ε Σ (also n = 0) entspricht der Konfiguration (q 0, #). Konfigurationen der Form ( ) heißen Initialkonfigurationen. Falls die Turingmaschine eine Konfiguration (q, s 1 s 2... s i 1 s i s i+1... s n ) erreicht hat, gibt es zwei Möglichkeiten: entweder ist δ(q, s i ) nicht definiert, dann heißt die Konfiguration Haltekonfiguration, oder es gilt δ(q, s i ) = (q, s ) mit s {L,R} Σ, dann definieren wir die Folgekonfiguration wie folgt: 1. falls s =L, dann ist die Folgekonfiguration (q, s 1 s 2... s i 1 s i s i+1... s n ) 2. falls s =R, dann ist die Folgekonfiguration (q, s 1 s 2... s i 1 s i s i+1... s n ) 3. falls s Σ, dann ist die Folgekonfiguration (q, s 1 s 2... s i 1 s s i+1... s n ).

3.1. DEFINITION EINER TURINGMASCHINE 83 Konfiguration δ(q, s i ) Folgekonfiguration (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, L) (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, R) (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, s ) (q, s 1 s 2... s i 1 s s i+1... s n ) (q, s 1 s 2... s i 1 s i s i+1... s n ) nicht definiert keine (Haltekonfiguration) Tabelle 3.1: Definition tabfolgekonfiguration der Folgekonfiguration der TM TabFolgekonfiguration Diese Definition ist in Tabelle 3.1 zusammengefasst. Bemerkung 1. Wie ist der Fall 1 zu verstehen, falls i = 1 gilt? Die Folgekonfiguration zu (q 0, s 1... s n ) ist natürlich (q, #s 1... s n ). Analog folgt im Fall 2 aus i = n, dass die Folgekonfiguration (q, s 1... s n #) ist. Notation. Die Relation Folgekonfiguration auf der Menge K aller Konfigurationen bezeichnen wir mit dem Symbol. Also ergibt der 1. Fall (q, s 1 s 2... s i 1 s i s i+1... s n ) (q, s 1 s 2... s i 1 s i s i+1... s n ) usw. Die reflexive und transitive Hülle dieser Relation wird mit bezeichnet; d.h., K K bedeutet, dass K und K zwei Konfigurationen sind, die entweder gleich sind oder dass es Konfigurationen K = K 0, K 1,..., K n = K mit K i 1 K i für i = 1,..., n gibt. Wir sagen, dass die Konfiguration K von K berechenbar ist. ectdeftmkonfiguration deftmkonfigurationen In Beispiel 1 in Abschnitt 3.1 gilt (q 0, 132) (q 0, 132)... (q 1, 132) und, die letzte Konfiguration hat keine Folgekonfiguration, da sie eine Haltekonfiguration ist. Definition. Für jede Turingmaschine ist die Berechnung einer Eingabe s 1 s 2... s n Σ eine endliche oder unendliche Liste von Konfigurationen: K 0 K 1 K2... wobei 1. K 0 die Initialkonfiguration mit K 0 = (q 0, s 1 s 2... s n ) ist, und 2. falls die Liste endlich ist, ist die letzte Konfiguration eine Haltekonfiguration. Wir sagen, dass die Turingmaschine die Eingabe genau dann akzeptiert, wenn ihre Berechnung endlich ist und der Zustand der letzten Konfiguration final ist. Bemerkung 2. Die Berechnung einer Eingabe w hat also drei mögliche Ergebnisse: 1. die TM hält und akzeptiert w, 2. die TM hält und akzeptiert w nicht, 3. die TM hält nicht (und akzeptiert w deshalb nicht). Am Anfang ist die Eingabe kompakt, also ohne Unterbrechung (durch #) auf dem Band geschrieben. Im Verlauf der Berechnung kann # an jeder Stelle erscheinen.

84 KAPITEL 3. TURINGMASCHINEN sectdefspracheeinertm Beispiel 1. (Fortsetzung) Die Berechnung der Eingabe 132 haben wir beschrieben. Die letzte Konfiguration ist (q 1, 132). Da q 1 nicht final ist, wird 132 nicht akzeptiert. Auch das leere Wort wird nicht akzeptiert: hier haben wir eine 1-Schritt-Berechnung, denn (q 0, #) ist eine Haltekonfiguration, und q 0 ist nicht final. Diese Turingmaschine hält auf jede Eingabe (eine wichtige Eigenschaft, wie wir später erfahren werden) und akzeptiert genau die Eingaben, deren letztes Symbol 0 oder 5 ist. defspracheeinertm sectbspaltdreieinsdrei Definition. Für jede Turingmaschine M = (Q, Σ, δ, q 0, F ) bezeichnen wir mit L(M) die Sprache aller Wörter über Σ, die M akzeptiert. bspaltdreieinsdrei Beispiel 2. DEA als Turing-Maschine. Gegeben sei ein DEA, A = (Q, Σ, δ, q 0, F ), definieren wir eine TM wie folgt: Ā = (Q {q f }, Σ, δ, q 0, q f ) wobei q f / Q (a) jedem Übergang (q, s) q in A entspricht der Übergang (q, s) (q, R) in Ā und (b) für jeden Zustand q F, der in A final ist, den Übergang (q, ) (q f, ). Dann hat die Turing-Maschine dieselbe Berechnung einer Eingabe s 1... s n wie der DEA: wir starten in... s 1 s 2... s n... q 0 und für den Übergang (q 0, s 1 ) q 1 in A ist die nächste Konfiguration usw. Wenn wir die Konfiguration erreichen, dann... s 1 s 2... s n... q 1 s 1 s 2... s n...... q n q n final die nächste Konfiguration mit Zustand q f akzeptiert und q n nicht final keine weitere Konfiguration und die letzte akzeptiert nicht.

3.2. MODIFIKATIONEN VON TURINGMASCHINEN 85 Bemerkung 3. Für einen DEA von k Zuständen und m Eingaben hat die entsprechende TM km + 1 Zustände. Beispiel 3. Eine Turing-Maschine für die Sprache a + b + c + Da diese Sprache regulär ist, wird sie durch einen DEA akzeptiert: a q o a b q 1 b c q 2 c q 3 a,c a,b b,c q 5 a,b,c a,b,c Diesen DEA können wir als eine TM mit 5 3 + 1 = 16 Zuständen simulieren. Beispiel 4. Die Sprache aller Wörter der Form [a n b n c n ] mit n = 1, 2, 3,... ist nicht kontextfrei. (Beweis analog zu dem für a n b n c n.) Aber sie kann durch eine einfache TM akzeptiert werden. Die Simulieren den folgenden Algorithmus: 1. überprüfe, ob das innere Wort in der Sprache a + b + c + liegt: dann genügt die TM aus dem vorigen Beispiel. 2. rekursiv lösche ein a dann ein b und dann ein c solange bis der Inhalt des Bandes die Form [##... #] Wenn 2. gelungen ist, akzeptiere, sonst akzeptiere nicht. sectmodifikationentm subsecttmmehrerefinal 3.2 Modifikationen von Turingmaschinen Wir behaupteten in der Einleitung zu diesem Kapitel, dass Turingmaschinen zu einer starken Leistung fähig sind. Das ist auf den ersten Blick nicht leicht zu erkennen. Aber wir führen jetzt kompliziertere Maschinen ein, mit deren Hilfe schon recht komplizierte Sprachen akzeptiert werden können. Anschließend zeigen wir, dass sich alle diese neuen Maschinen auf den einfachen Fall reduzieren lassen. (Das ist keine Überraschung: erinnern wir uns an die Churchsche These, die behauptet, dass sich alle Berechnungsmodelle auf TM reduzieren lassen!) 3.2.1 TM mit mehreren finalen Zuständen Wir können das Konzept der Turingmaschinen zu einer Maschine M = (Q, Σ, δ, q 0, F ) verallgemeinern, die der obigen entspricht, nur ist F Q eine Menge finaler Zustände. Jede solche Maschine kann durch die folgende TM M = (Q {q F }, Σ, δ, q 0, q F ) simuliert werden: q F ist ein neuer Zustand, und δ besteht aus allen Übergangsregeln, die in δ enthalten sind, und zusätzlich werden in δ noch die folgenden Regeln

86 KAPITEL 3. TURINGMASCHINEN (q, s) (q F, s) aufgenommen, wobei q F ein Zustand ist, für den δ(q, s) undefiniert ist. (Also führen Haltekonfigurationen (q, s) von M, bei denen q final ist, zu Haltekonfigurationen (q F, s) von M.) Die Anzahl von Schritten, die M macht, ist n + 1 wenn M n Schritte macht. subsect-tm-gedaechtnis 3.2.2 TM mit zusätzlichem Gedächtnis Wir können die Definition einer TM so modifizieren, dass die Maschine in jedem Schritt zusätzlich einen Zugriff auf ein Gedächtnis hat, wobei Symbole eines endlichen Alphabets A gespeichert werden. Die Übergangsfunktion δ entscheidet jetzt aufgrund (1) des Zustandes, (2) des gelesenen Symbols aus Σ {#} und (3) des gespeicherten Symbols aus A. Die Übergänge haben jetzt die Form (q, a, s) (q, s ) mit q, q Q, a A, s Σ und s Σ L, R sectbspaltdreizweieins bspaltdreizweieins Für Initialkonfigurationen nehmen wir an, dass ein ausgewähltes Symbol a 0 A gemerkt wird. Beispiel 1. Die Sprache aller Wörter, deren erstes Symbol nie wieder vorkommt, also L = {s 1... s n Σ ; s 1 s i für i = 2,..., n}, kann durch eine TM mit zusätzlichem Gedächtnis wir folgt akzeptiert werden: die TM liest das erste Symbol und speichert es im Gedächtnis (also A = Σ, d.h., das zusätzliche Gedächtnis kann ein Symbol aus Σ speichern). Dies in Initialzustand q 0. Dann vergleicht die TM im Zustand q 1 die anschließend gelesenen Symbole mit dem gespeicherten und hält und akzeptiert nicht, falls sie eine Übereinstimmung feststellt. Sobald die TM das Blanksymbol liest, hält sie und akzeptiert im Zustand q 0, der initial sowie final ist. Diese TM braucht nur zwei Zustände: q 0, initial und final, in dem s 1 gespeichert wird, und q 1, in dem nach rechts gegangen und mit dem Speicher verglichen wird. Bemerkung 1. Eine TM mit zusätzlichem Gedächtnis ist eigentlich eine TM in dem vorher definierten Sinne, deren Zustandsmenge das kartesische Produkt Q A ist (d. h. die Menge aller Paare (q, a), wobei q ein Zustand und a A ist). Die Übergänge der Maschine sind also von (q, a) Q A und s S abhängig. Der Initialzustand ist (q 0, a 0 ), und alle Zustände (q F, a), a A, sind final. Zum Beispiel gilt für die Maschine aus Beispiel 1, dass A = Σ (mit s 0 Σ beliebig gewählt) und die Zustandsmenge Q = {q 0, q 1 } Σ ist. Wir können sie wie folgt als normale TM beschreiben, wobei der Initialzustand (q 0, s 0 ) und alle Zustände (q 0, s) final sind. So gibt es die folgenden Übergangsregeln: ((q 0, s 0 ), s) ((q 1, s), R) für alle s Σ ((q 1, s), s ) ((q 1, s), R) für alle s Σ, s s ((q 1, s), #) ((q 0, s 0 ), #). Zum Beispiel wird die Eingabe stt wie folgt berechnet: ((q 0, s 0 ), stt) ((q 1, s), stt) ((q 1, s), stt) ((q 1, s), stt#) ((q 0, s 0 ), stt#). Hier hält die TM und akzeptiert.

3.2. MODIFIKATIONEN VON TURINGMASCHINEN 87 subsecttmerwbandalph ectbspaltdreizweivier bspaltdreizweivier 3.2.3 TM mit erweitertem Bandalphabet Manchmal ist es geschickt, zusätzliche (Hilfs-)Symbole auf das Band schreiben zu dürfen, die nicht zum Eingabealphabet gehören. Das bedeutet, dass außer dem Eingabealphabet Σ noch ein Bandalphabet Γ mit Σ Γ gegeben wird und die Übergangsfunktion δ mit allen Symbolen aus Γ arbeitet, d.h., δ ist eine partielle Funktion mit Definitionsbereich Q (Γ {#}) und Wertebereich Q (Γ {#, L, R}). Eine TM mit erweitertem Bandalphabet ist also ein 6-Tupel M = (Q, Σ, Γ, δ, q 0, q F ) wobei Σ Γ das Eingabealphabet und δ Q (Γ {#}) Q (Γ {#, L, R}) eine partielle Funktion ist. Die Sprache, die M akzeptiert, ist die Sprache L(M) Σ aller Wörter über dem (kleineren) Eingabealphabet Σ, für die M im Finalzustand hält. Beispiel 2. Eine 1-Band TM, die die Sprache {a n b n c n ; n 1} akzeptiert. Hier haben wir Σ = {a, b, c}, und wir benutzen Γ = {a, b, c, [, ]}. Die TM wird erst die Eingabe mit [ und ] umklammern: (q 0, a) (q 0, L) (q 0, #) (q 0, [ ) (q 0, [ ) (q 1, R) (q 1, x) (q 1, R) für x = a, b, c (q 1, #) (q 1, ] ). Jetzt kann sie die TM von Beispiel 2 in Abschnitt 3.1 simulieren. Beispiel 3. Eine einfache TM für die Sprache a n b n c n (n 1). Wir löschen die Symbole nicht, sondern ersetzen sie mit einem neuen Symbol X. Die TM hat das Bandalphabet a, b, c, X und arbeitet wie folgt (der Kopf ignoriert das Symbol X): (1) Das gelesene a wird durch X ersetzt. (2) Kopf geht nach rechts zum ersten b, das mit X ersetzt wird. Wenn keine b gefunden wird oder erst c vorkommt, hält die TM und akzeptiert nicht. (3) Kopf geht nach rechts zum ersten c, das mit X ersetzt wird. Wenn kein c vor # gefunden wird, hält die TM und akzeptiert nicht. (4) Kopf geht nach links bis # und dann rechts bis (4a) ein a gefunden wird, dann wiederholt sich der Zyklus (1) - (3) oder (4b) b oder c gefunden wird, dann hält die TM und akzeptiert nicht oder (4c) # gefunden wird, dann hält die TM und akzeptiert. Bemerkung 2. Für jede TM mit erweitertem Bandalphabet M gibt es eine ( normale ) TM, die M simuliert. (a) Nehmen wir erst an, dass Γ eine Untermenge von Σ + ist. D.h. die neuen Symbole sind Wörter s 1... s k im ursprünglichen Alphabet Σ. Jeden Übergang (q, s 1... s k ) (q, s 1... s l )

88 KAPITEL 3. TURINGMASCHINEN der TM können wir durch eine Sequenz von Übergängen einer neuen TM mit Bandalphabet Σ simulieren: der Kopf, statt das Wort s 1... s k auf einmal zu lesen, liest es in k Schritten und speichert es im zusätzlichen Gedächtnis. Dann Schreibt der Kopf, statt s 1... s l auf einmal, das Wort in l Schritten, indem er s 1... s k im zusätzlichen Gedächtnis zur Verfügung hat. (b) Wenn Γ ein beliebiges Alphabet ist, können wir es mit Wörtern aus Σ codieren: da die Menge Γ endlich ist und die Menge Σ + unendlich ist, gibt es eine injektive Funktion γ Γ Σ + mit γ(s) = s für alle s Σ( Γ). Dann können wir, statt Γ, mit der gleichmächtigen Menge Γ = γ(γ), die Untermenge von Σ + ist, arbeiten und den Fall (a) anwenden. subsecttmmehrspur 3.2.4 TM mit mehrspurigem Band Wir arbeiten hier mit einer Modifikation von TM, die darin besteht, dass das Band in k Spuren unterteilt wird, die alle gleichzeitig gelesen werden. Stellen wir uns erst vor, dass k = 2 ist. Wir schreiben Symbole aus dem Eingabealphabet Σ = Σ 1 auf Spur 1 und Symbole eines Hilfsalphabetes Σ 2 auf Spur 2:... # 0 1 0 0 1 # # #...... # # a # b # # a #... sectbspaltdreizweizwei bspaltdreizweizwei Die Maschine entscheidet in jedem Schritt abhängig vom Zustand und dem Inhalt beider Spuren (1) was der nächste Zustand wird und (2) ob sich der Kopf bewegt oder beide Spuren gleichzeitig überschrieben werden. Eine 2-Spur-TM ist eigentlich eine TM im vorher definierten Sinne, deren Bandalphabet aus Paaren (s 1, s 2 ), mit s 1 Σ 1 und s 2 Σ 2, geformt wird. Die einzige Ausnahme ist das Paar (#, #), das jetzt als Blank-Symbol dient. Also ist eine 2- Spur-TM einfach eine TM mit dem Eingabealphabet Σ = Σ 1 Σ 2 {(#, #)}. Analoges gilt für k-spurige Maschinen, die auf der i-ten Spur Symbole aus Σ i tragen (i = 1,..., k): das sind also die normalen TM mit Eingabealphabet Σ = Σ 1 Σ 2 Σ k {(#, #,..., #)} und mit dem Blanksymbol (#, #,..., #). Beispiel 4. Primzahltest Wir zeigen, wie man eine 3-spurige TM konstruiert, die die Sprache L aller Primzahlen (in binärer Darstellung) akzeptiert. Hiermit kann man auch gut die Idee von Turing illustrieren, dass jeder Algorithmus mit einer TM automatisiert werden kann. Wir verwenden hier den primitiven Algorithmus, der jede Zahl n durch alle Testzahlen 2, 3, 4,..., n 1 teilt und n akzeptiert, falls alle Divisionen einen positiven Rest ergeben. EINGABESPUR TESTZAHLSPUR HILFSSPUR... 1 0 1 1 1...... 1 0 1...... 1 0 1 1 1... q 0 Die Spuren der TM sind (1) Eingabespur, die während der Berechnung unverändert bleibt, (2) Testzahlspur, die am Anfang mit 1 beschriftet wird und in jedem Berech-

3.2. MODIFIKATIONEN VON TURINGMASCHINEN 89 nungsdurchgang um eins vergrößert wird (sodass in dem ersten Berechnungsdurchgang durch 2 dividiert wird, im zweiten mit 3, usw.) und (3) eine Hilfsspur. Wir schreiben am Anfang also die gegebene Zahl n = 1, 2, 3,... auf Spur 1, die Zahl 1 auf Spur 2 und nichts auf Spur 3. Der Initialzustand q 0 überprüft (durch Vergleich mit Spur 2), ob auf Spur 1 eine Zahl n 2 steht. Im Fall von n = 0 oder n = 1, wird der Zustand q 0 zu q, einem nicht-finalen Haltezustand verändert. (Also werden 0 und 1 nicht akzeptiert.) Falls n 2 ist, werden Berechnungsdurchgänge rekursiv durchgeführt, die man wie folgt beschreiben kann: Anfang eines Berechnungsdurchganges: Spur 1 wird auf Spur 3 kopiert. Die Zahl auf Spur 2 wird um 1 vergrößert. Die Spuren 1 und 2 werden verglichen und falls die Zahlen gleich sind, wird der Zustand zu q +, einem finalen Haltezustand geändert (die Eingabe wird also akzeptiert, denn keine Zahl kleiner n, die n teilt, wurde gefunden). Rumpf eines Berechnungsdurchganges: Die Zahl von Spur 3 wird durch die auf Spur 2 dividiert (z.b. durch wiederholte Subtraktion). Ende eines Berechnungsdurchganges: Jetzt steht auf Spur 3 der Rest der Eingabe modulo der Testzahl. Falls der Rest 0 ist, wird der Zustand zu q verändert. Falls der Rest positiv ist, wird der Kopf nach links zum ersten Symbol 1 von Spur 1 geschoben und ein neuer Berechnungsdurchgang beginnt. Es ist leicht einzusehen, dass sich diese informale Beschreibung der Turingmaschine relativ einfach durch eine formal definierte TM realisieren lässt. 3.2.5 TM mit mehreren Bändern Die nächste Modifikation von TM ist eine Maschine, die mehrere Bänder hat und bei der auf jedem Band ein Lese-/Schreibkopf steht. Die k Köpfe bewegen sich unabhängig voneinander und schreiben auch unabhängig voneinander auf ihren individuellen Bändern. Die Kontrolle ist aber zentral (durch den gegebenen Zustand): Band 1 Band 2...... Kopf 1...... Kopf 2 q 0 q q 1 4 q 3 q 2 sectdefkbandtm SCHEMA EINER 2-BAND TM Das bedeutet, dass der Übergangsfunktion δ hier der Zustand q und die k gelesenen Symbole (s 1, s 2,..., s k ) Σ k zur Verfügung stehen. (Wir bezeichnen mit A k = A A A die Menge aller k-tupel von Elementen aus A). Hier ist Σ die Menge aller Bandsymbole von allen k Bändern. Als Ergebnis haben wir einen neuen Zustand q und ein k-tupel von Symbolen aus {L,R} Σ {#}. Das heißt, dass δ eine partielle Funktion mit Urbildbereich Q (Σ {#}) k und Wertebereich Q (Σ {#,L,R}) k ist. defkbandtm Definition. Eine k-band-turingmaschine ist ein Fünftupel M = (Q, Σ, δ, q 0, q F ), die wie eine TM definiert wird, nur ist δ jetzt eine partielle Funktion mit Urbildbereich Q (Σ) k und Wertebereich Q (Σ {L,R}) k.

90 KAPITEL 3. TURINGMASCHINEN sectbspaltdreizweidrei bspaltdreizweidrei Die Berechnung durch eine k-band TM ist analog zum Fall einer 1-Band TM definiert. Eine Konfiguration hat die Form (q, u 1 a 1 v 1, u 2 a 2 v 2,..., u k a k v k ), wobei q der Zustand und u i a i v i der Inhalt des i-ten Bandes bezeichnet. Falls δ(q, a 1... a k ) definiert ist, wird die Folgekonfiguration individuell auf jedem Band berechnet. Falls δ(q, a 1... a k ) undefiniert ist, heißt die Konfiguration Haltekonfiguration. Band 1 dient als Eingabeband, das heißt, die Initialkonfiguration für eine Eingabe s 1... s n ist (q 0, s 1... s n, #, #,..., #) (k 1) mal Die Eingabe wird akzeptiert, falls die Maschine eine Haltekonfiguration mit dem finalen Zustand erreicht. Beispiel 5. Eine 2-Band TM, die die Sprache {a n b n c n ; n 1} akzeptiert. Die TM hat ein Eingabeband (Band 1) und ein Hilfsband (Band 2). Band 1 bleibt unverändert, Band 2 ist am Anfang leer. Band 1 a a... a b b... b c c... c # # Band 2 # # #... Initialkonfiguration Erste Etappe der Berechnung: Solange der Kopf 1 a liest, schreibt Kopf 2 a, und beide Köpfe bewegen sich ein Feld nach rechts. Nur am Anfang schreibt Kopf 2 ein x anstelle von a. Band 1 a a... a b b... b c c... c # # Band 2 x a... a # # #... Zweite Etappe: Hier bewegen sich Kopf 1 und Kopf 2 gleichzeitig in entgegengesetzte Richtungen: Kopf 1 nach rechts und Kopf 2 nach links, bis Kopf 1 c und Kopf 2 x liest. Falls Kopf 1 während dieser Bewegung immer b und Kopf 2 immer a liest, gehen wir zur dritten Etappe über; falls nicht, hält die TM in einem nicht-finalen Zustand (Eingabe nicht akzeptiert). Band 1... ## a a... a b b... b c c... Band 2... # x a... a # # #... Dritte Etappe: Beide Köpfe bewegen sich gleichzeitig nach rechts, bis Kopf 1 # liest. Falls in jedem dieser Schritte außer dem letzten Kopf 1 c und Kopf 2 a liest und

3.2. MODIFIKATIONEN VON TURINGMASCHINEN 91 falls beide Köpfe im letzten Schritt # lesen, dann hält die TM im finalen Zustand q F (Eingabe akzeptiert). Falls nicht, hält die TM und akzeptiert nicht. Formal können wir die Übergänge wie folgt beschreiben: Erste Etappe: (q 0, a, #) (q 1, a, x) (q 1, a, x) (q 1, R, R) (q 1, a, #) (q 1, a, a) (q 1, a, a) (q 1, R, R) Zweite Etappe: (q 1, b, #) (q 2, R, L) (q 2, b, a) (q 2, R, L) (q 2, c, x) (q 2, R, R) Dritte Etappe: (q 2, c, a) (q 2, R, R) (q 2, #, #) (q F, #, #). Das sind alle Übergänge für die 2-Band TM mit Bandalphabet ˆΣ = {a, b, c, x} und Eingabealphabet Σ = {a, b, c}, die die Sprache aller a n b n c n (n 1) akzeptiert. (Vergleichen Sie das mit Beispiel 2 in Abschnitt 3.1). Beispiele von Berechnungen: Die Eingabe aabbcc wird wie folgt berechnet: (q 0, aabbcc, #) (q 0, aabbcc, x) (q 0, aabbcc, x#) (q 0, aabbcc, xx) (q 0, aabbcc, xx#) (q 0, aabbcc, xx#) (q 0, aabbcc, xx#) (q 0, aabbcc, xx#) (q 0, aabbcc#, xx#) (q F, aabbcc#, xx#) und wird akzeptiert. Die Eingabe aabcc wird wie folgt berechnet: (q 0, aabcc, #) (q 0, aabcc, x) (q 0, aabcc, x#) (q 0, aabcc, xx) (q 0, aabcc, xx#) (q 0, aabcc, xx) (q 0, aabcc, xx#) und wird nicht akzeptiert. Bemerkung 3. Simulation einer 2-Band-TM durch eine 1-Band-TM Sei M = (Q, Σ, δ, q 0, F ) eine 2-Band-TM. Wir konstruieren eine 1-Band-TM mit zusätzlichem Gedächtnis, M, die die Maschine M Schritt für Schritt simuliert. Das Band von M ist 4-spurig: Band 1 Band 2 a a b a a 0 1 0 Maschine M... a a b a a # # # #...... # # # # # # # #...... 0 1 0 # # # # # #...... # # # # # # # # Maschine M... Band 1 der Maschine M wird auf die Spur 1 von M kopiert, die Kopfposition des Kopfes von Band 1 steht auf der Spur 2. Analog wird Band 2 auf Spur 3 von M kopiert und die Kopfposition des Bandes auf Spur 4. Das Eingabealphabet von M

92 KAPITEL 3. TURINGMASCHINEN ist also Σ = (Σ {#}) {, #} (Σ {#}) {, #} {(#, #, #, #)}, wobei (#, #, #, #) das Blank-Symbol ist. Die Zustände von M und M sind dieselben. Die Maschine M muss sich die letzten von Kopf 1 und Kopf 2 gelesenen Symbole merken, also hat sie ein zusätzliches Gedächtnis der Form (s 1, s 2, x), wobei s i Σ i {#} das aktuelle Symbol von Band i (= 1, 2) der Turingmaschine M ist und x {l, r} aussagt, ob Kopf 2 (also das Symbol auf Spur 4)links oder rechts von Kopf 1 (dem Symbol auf Spur 2) steht. 1. Anfang der Simulation: Auf Spur 1 steht die Eingabe v 1 v 2... v n von M, die Spuren 2-4 sind leer. Wir schreiben je ein auf die Spuren 2 und 4 unter v 1 von Spur 1. SPUR 1 SPUR 2 SPUR 3 SPUR 4... # v 1 v 2... v n #............ # #... # # #... # #............ 2. Berechnungsschritt: Am Anfang der Simulation einers Schrittes von M steht der Kopf von M unter dem Symbol auf Spur 2. Das gerade gelesene Symbol von Spur 1 wird als s 1 im zusätzlichen Gedächtnis gespeichert. Danach sucht der Kopf von M das Symbol auf Spur 4: entweder stehen die beiden Symbole untereinander, sonst suchen wir links bzw. rechts, falls im zusätzlichen Gedächtnis x = l bzw. x = r steht. Sobald gefunden ist, wird das gerade gelesene Symbol von Spur 3 als s 2 gespeichert. Aufgrund des Zustandes q von M und des Paares (s 1, s 2 ) im zusätzlichen Gedächtnis werden jetzt die Kopfpositionssymbole auf den Spuren 3 und 4 so bewegt, wie die Maschine M die Köpfe bewegt, und die Symbole auf den Spuren 1 und 3 werden so überschrieben, wie M die Symbole auf beiden Bändern überschreibt. (Das geschieht in endlich vielen Schritten der Kopfbewegung von M.) Die Eingabe x {l, r} im Gedächtnis wir aktualisiert und der Kopf wird nach auf Spur 2 bewegt. uivalenzkbandtmeinbandtm uivalenzkbandtmeinbandtm 3. Ende der Simulation: Die Maschine M hält genau dann, wenn eine Haltekonfiguration von M erreicht wird. Und M akzeptiert genau dann, wenn M akzeptiert. Satz 1. Für jede k-band-tm gibt es eine (1-Band-) TM, die dieselbe Sprache akzeptiert. Beweis. Für k = 2 folgt der Beweis aus der gerade beschriebenen Simulation und dem Fakt, dass eine 4-spurige TM mit zusätzlichem Gedächtnis durch eine TM simuliert werden kann (siehe Kapitel 3.2.2). Für k > 2 ist der Beweis analog und wird dem Leser überlassen. 3.3 Nichtdeterministische Turingmaschinen inistischeturingmaschine inistischeturingmaschine Analog zum Fall nichtdeterministischer Automaten führen wir hier nichtdeterministische TM ein. Statt einer partiellen Funktion δ Q Σ Q Σ {L,R} haben wir hier eine Relation δ: Definition. Eine nichtdeterministische Turingmaschine M (NTM) ist ein Fünftupel M = (Q, Σ, δ, q 0, q F ), das wie eine TM definiert wird, außer dass hier δ

3.3. NICHTDETERMINISTISCHE TURINGMASCHINEN 93 eine Relation δ [Q Σ] [Q (Σ {L,R})] ist. Wir schreiben, wie oben, (q, s) (q, s ) falls die Relation δ das Quadrupel (q, s, q, s ) enthält. Der ganze Unterschied bezüglich der Notation zwischen einer TM und einer nichtdeterministischen TM ist, dass für eine deterministische TM für zwei beliebige Übergangsregeln (q, s) (q, s ) und (q, s) (q, s ) gilt, dass, falls die linken Seiten gleich sind (q = q und s = s), auch die rechten Seiten gleich sein müssen (q = s und s = s ). Für nichtdeterministische TM gilt keine solche Einschränkung. Beispiel 1. stochastischer Zahlengenerator. Wir beschreiben eine nichtdeterministische Turingmaschine M, die auf ihr Band entweder eine beliebige Zahl n 1 (in binärer Form) schreibt und hält oder nie hält. Im Initialzustand q 0 schreibt M eine 1 und geht zum Zustand q 1, in dem die folgende Wahl getroffen wird: entweder wird der Haltezustand q F erreicht, oder es wird ein neues Symbol 0, 1 geschrieben und (unter Verwendung eines Hilfezustandes q 2 ) der Kopf nach rechts bewegt. Formal: M = ({q 0, q 1, q 2, q F }, {0, 1}, δ, q 0, q F ) wobei δ durch die folgenden Übergangsregeln beschrieben wird: (q 0, #) (q 0, 1) (q 0, 1) (q 1, R) (q 1, #) (q 2, 0) Beispiel: (q 1, #) (q 2, 1) (q 1, #) (q F, #) (q 2, i) (q 1, R) für i = 0, 1.

94 KAPITEL 3. TURINGMASCHINEN sectdeftmakzeptiertw deftmakzeptiertw sectbspaltdreivierzwei bspaltdreivierzwei...... q 0... 1... q 0... 1... q 1... 1 0... q 2... 1 0... q 1... 1 0 1... q 2... 1 0 1... q 1... 1 0 1... q F Konfigurationen und die Berechnung von Eingaben sind genauso definiert wie für die (deterministischen) TM. Hier hat eine Eingabe natürlich nicht nur eine, sondern mehrere Berechnungen. Definition. Eine nichtdeterministische Turingmaschine M akzeptiert die Eingabe w Σ, falls es für w mindestens eine Berechnung gibt, so dass M nach endlich vielen Schritten eine Haltekonfiguration mit dem finalen Zustand erreicht. Die Sprache aller Eingaben, die M akzeptiert, wird mit L(M) bezeichnet. Bemerkung 1. Die k-band-tm lassen sich analog zu den nichtdeterministischen k-band-tm verallgemeinern: hier ist δ eine Relation δ [Q Σ k ] [Q (Σ {L,R}) k ]. Beispiel 2. Test der Zerlegbarkeit. Wir zeigen eine nichtdeterministische 3-Band-TM, die die Sprache L { } aller zerlegbarer Zahlen, also Zahlen der Form n = pq mit p > 1 und q > 1 akzeptiert. Wie in Beispiel 4 in Abschnitt 3.2.4 hat M ein Eingabeband, ein Testzahlband und ein Hilfsband. Im Initialzustand schreibt M die Zahl zwei ( ) auf Band 2 (jede Testzahl ist größer oder gleich ) und verändert den Zustand zu q 1. In q 1, dem einzigen nichtdeterministischen Zustand, gibt es zwei Möglichkeiten: entweder wird ein neuer Strich auf Band 2 geschrieben, und der Zustand q 1 bleibt, oder der Zustand verändert sich zu q 2. Im Zustand q 2 wird wie folgt deterministisch berechnet:

3.3. NICHTDETERMINISTISCHE TURINGMASCHINEN 95 1. Die Zahl n auf Band 1 wird mit der Zahl m auf Band 2 verglichen. Falls n m ist, hält die Maschine, ohne zu akzeptieren. 2. Falls n > m, wird n auf Band 3 kopiert. 3. Band 2 wird von Band 3 abgezogen, bis auf Band 3 der Rest der Division von n durch die Testzahl steht. Dann hält die Maschine. 4. Falls Band 3 leer ist, wird die Eingabe akzeptiert, falls Band 3 nicht leer ist, wird sie nicht akzeptiert. ectbspaltdreivierdrei bspaltdreivierdrei Wir sehen, dass die Testzahl m eine beliebige Zahl m = 2, 3, 4,... sein kann. Die Eingabe n wird genau dann akzeptiert, wenn es ein m < n gibt, das n teilt. Beispiel 3. Simulation eines Kellerautomaten Wir können einfach jeden Kellerautomaten durch eine nichtdeterministische 2- Band-Turingmaschine M simulieren, bei der auf Band 1 die Eingabe des Kellerautomaten und auf Band 2 der Kellerinhalt steht. M hat ein zusätzliches Gedächtnis, in dem die Übergangsregeln des Kellerautomaten notiert werden. Am Anfang schreibt die NTM das Symbol k 0 auf Band 2. Jede Übergangsregel (q, s, k) (q, k 1... k n ), s Σ, des Kellerautomaten wird wie folgt simuliert: Band 1... s s... s Übergang... s s... s Band 2... k k k... k 1... k n k k... Falls die Maschine M im Zustand q die Symbole s (Band 1) und k (Band 2) liest, ändert sie ihren Zustand zu q, bewegt den Kopf 1 einen Schritt nach rechts und macht folgendes auf Band 2: 1. Falls n 0 (also k 1... k n ε), wird k von k n überschrieben, und der Kopf 2 schreibt, sich nach links bewegend, die Symbole k n 1,..., k 1. 2. Falls n = 0, löscht Kopf 2 das Symbol k und bewegt sich einen Schritt nach rechts. zsimulationntmdurchtm zsimulationntmdurchtm Analog wird jede spontane Übergangsregel (q, #, k) (q, k 1... k n ) simuliert: der einzige Unterschied ist, dass hierbei Kopf 1 stehenbleibt. Satz 1. Jede NTM kann durch eine (deterministische) TM simuliert werden. Beweis. Sei M eine NTM, und sei r eine Zahl, so dass es für jedes Paar (q, s) aus Q (Σ {#}) höchstens r Übergänge (q, s) (q, s ) gibt. Dann können wir die Übergänge durchnummerieren: (q, s) (q i, s i) für i = 1, 2,..., r (Wiederholungen sind erlaubt). Die einzige Ausnahme ist δ(q, s) = (Haltekonfiguration). Wir simulieren M mit einer 4-Band-TM wie folgt: Band 1 ist das Eingabeband mit einem read-only Kopf. Auf Band 2 werden systematisch alle Zahlen k = 0, 1, 2, 3,...

96 KAPITEL 3. TURINGMASCHINEN geschrieben, sie geben die Länge der Berechnung vor. Auf Band 3 werden systematisch alle k-tupel aus Zahlen 1,..., r erzeugt (k = 1, 2, 3,... ). Auf Band 4 werden für jeden Eintrag i 1 i 2... i k von Band 3 die ersten k Takte der Maschine M simuliert, aber in jedem Takt wählen wir den Übergang, dessen Index auf Band 2 steht. Also wird im Takt n der Übergang (q, s) (q i n, s i n ) gewählt, wobei q der momentane Zustand ist und s das gerade gelesene Symbol. In einer Haltekonfiguration von M mit q = q F hält M und akzeptiert die Eingabe, andernfalls, also auch bei Haltekonfigurationen mit q /= q F wird k erhöht und die Simulation fortgesetzt. Es gibt also die folgenden Möglichkeiten für die Berechnung einer Eingabe w: 1. M hält auf w nach k Schritten für irgendeine Zahl k und akzeptiert w, d.h., es gibt eine akzeptierende Berechnung der Länge k von w. Dann hält auch M auf w und akzeptiert w (mit einem der r k möglichen Inhalte von Band 3); 2. M akzeptiert w nicht, d.h., alle von M bei Eingabe w erreichbaren Haltekonfigurationen haben einen von q F verschienedenen Zustand. Dann hält M nie, denn M schreibt immer länger werdende k-tupel (k = 1, 2, 3,... ) auf Band 2. Damit gehört w weder zu L(M) noch zu L(M). Es folgt, dass L(M) = L(M). sectentscheidrek defrekursivesprache sectbspaltdreidreieins bspaltdreidreieins 3.4 Rekursiv aufzählbare Sprachen Definition. Eine Sprache L heißt rekursiv aufzählbar oder semientscheidbar, falls es eine Turingmaschine M gibt, die L akzeptiert. Beispiel 1. Die folgenden Sprachen sind rekursiv aufzählbar, denn die oben konstruierten TM akzeptieren sie: 1. Die Sprache aller durch 5 teilbaren Zahlen (siehe Beispiel 1 in Abschnitt 3.1). 2. Die Sprache aller Primzahlen (siehe Beispiel 4 in Abschnitt 3.2.4). 3. Die Sprache {a n b n c n ; n 1} (siehe Beispiel 5 in Abschnitt 3.2.5 und Satz 1 in Abschnitt 3.2.5). sectbspaltdreidreizwei bspaltdreidreizwei 4. Jede kontextfreie Sprache (siehe Beispiel 3 in Abschnitt 3.3). Beispiel 2. Eine Sprache L code, die nicht rekursiv aufzählbar ist. Es ist nicht möglich, ein natürliches Beispiel einer nicht rekursiv aufzählbaren Sprache zu finden, da alle natürlichen Beispiele durch irgendeinen Algorithmus beschrieben werden. Aber vorausgesetzt, dass wir eine Codierung für alle TM mit dem Bandalphabet {0, 1} haben (eine solche Codierung wird in Kapitel 5.1 ausführlich beschrieben), können wir eine konkrete Sprache, die nicht rekursiv aufzählbar ist, konstruieren. Wir nehmen also an, dass es für jede Turingmaschine M mit Bandalphabet {0, 1} ein Wort c(m) über {0, 1} gibt, sodass der Code c(m) die Sprache der Turingmaschine M vollständig beschreibt. Das heißt, dass für alle Turingmaschinen M und M gilt: c(m) = c(m ) L(M) = L(M ). Mit L code bezeichnen wir die Sprache aller Codewörter w = c(m) solcher Turingmaschinen M, die ihr eigenes Codewort nicht akzeptieren: L code = {w; w = c(m) für eine Turingmaschine M mit w L(M)}. Diese Sprache ist nicht rekursiv aufzählbar.

3.5. REKURSIVE SPRACHEN 97 tsatzllstrichrekursiv satzllstrichrekursiv Beweis. Die Annahme, dass es eine Turingmaschine ˆM mit L( ˆM) = L code gibt, führt zu einem Widerspruch. Für das Codewort ŵ = c( ˆM) dieser Maschine ˆM zeigen wir nämlich, dass (a) aus ŵ L code folgt ŵ L code und (b) aus ŵ L code folgt ŵ L code. Dann ist weder ŵ L code noch ŵ L code wahr. Zu (a): Da ŵ L( ˆM) und ŵ = c( ˆM), folgt aus der Definition von L code, dass ŵ L code. Zu (b): Da ŵ L code, gibt es M mit ŵ = c(m) und ŵ L(M). Aus c(m) = c( ˆM) folgt aber L(M) = L( ˆM); es gilt also ŵ L( ˆM) = L code. Satz 1. Falls L und L rekursiv aufzählbaren Sprachen sind, sind auch die Sprachen L L, L L, LL und L rekursiv aufzählbar. Beweis. Sei M eine TM, die L akzeptiert, und M eine TM, die L akzeptiert. Wir nehmen an, dass M und M auf jede Eingabe halten. (1) L + L. Diese Sprache wird von einer 2-Band TM akzeptiert, die auf Band 1 die Maschine M und gleichzeitig auf Band 2 die Maschine M simuliert. Falls beide Maschinen halten, ist der Zustand der neuen Maschine genau dann final, wenn einer der entsprechenden Zustände (von M oder M ) final ist. (2) L L. Der Beweis ist analog zu 1., nur ist ein Zustand genau dann final, wenn beide Zustände (von M sowie von M ) final sind. 3.5 Rekursive Sprachen Wie oben erwähnt, repräsentiert eine TM eine formale Darstellung des Begriffs eines Algorithmus, indem sie eine beliebige Eingabe berechnet (und entweder akzeptiert oder nicht). Die Frage ist, ob wir nur terminierende Algorithmen betrachten dürfen, oder ob wir auch Algorithmen erlauben, die unendlich lange berechnen. Im Berechnungsmodell der TM entsprechen den terminierenden Algorithmen die TM, die auf jede Eingabe halten. Das bedeutet, dass das Nichtakzeptieren immer dadurch erfolgt, dass die TM in einem nichtfinalen Zustand hält. Die allgemeineren, nicht terminierenden Algorithmen werden von allgemeinen TM repräsentiert. Probleme, die ein terminierender Algorithmus löst, heißen entscheidbar. Die entsprechenden formalen Sprachen werden entweder entscheidbar oder rekursiv genannt. Definition. Eine Sprache heißt rekursiv oder entscheidbar wenn sie von einer TM, die auf jede Eingabe hält, akzeptiert wird. Beispiel 1. Alle bisher konstruierten TM halten auf jede Eingabe. Deswegen sind alle obere rekursiv aufzählbaren Sprachen eigentlich rekursiv. Bemerkung 1. Um ein Beispiel einer Sprache, die zwar rekursiv aufzählbar aber nicht rekursiv zeigen zu können, werden wir erst die Eigenschaften von rekursiven Sprachen erforschen. Merken Sie, dass in Satz 1 von Abschnitt 3.4 (über Eigenschaften von rekursiv aufzählbaren Sprachen) nichts über Komplement L = Σ L behauptet wurde? Dies ist ein entscheidender Unterschied zu rekursiven Sprachen.: Satz 1. Wenn L und L rekursive Sprachen im Alphabet Σ sind, sind auch die Sprachen L L, L L, LL, L und L = Σ L rekursiv.

98 KAPITEL 3. TURINGMASCHINEN Beweis. (1) L L und L L : der Beweis ist gleich zu dem im Satz 1 von Abschnitt 3.4. (2) LL. Hier benutzen wir eine 4-Band-Turingmaschine M. Band 1 ist ein Eingabeband mit einem read-only-kopf. Auf Band 2 steht die Zahl i der Etappe (am Anfang i = 0). Auf Band 3 wird M simuliert, und auf Band 4 wird M simuliert. Jede Eingabe s 1... s n der Länge n wird in n + 1 Etappen berechnet. Die i-te Etappe besteht daraus, dass das Wort s 1... s i auf Band 3 und das Wort s i+1... s n auf Band 4 kopiert werden, und dann simuliert unsere TM die Maschine M auf Band 2 und die Maschine M auf Band 3, bis beide Maschinen M und M halten. Falls sie beide akzeptieren, hält auch M und akzeptiert. Falls M oder M nicht akzeptiert und i < n, wird die nächste Etappe mit i = i+1 durchgeführt. Falls M oder M nicht akzeptiert und i = n, hält M und akzeptiert nicht. (3) L. Dieser Beweis ist analog zu 3. Zunächst prüft M, ob das Eingabeband leer ist und akzeptiert gegebenenfalls. Ansonsten erzeugen wir auf Band 2, statt nur einer Zahl i allein, alle möglichen aufsteigenden Listen (i 0, i 1,..., i r ) von Zahlen mit 0 = i 0 < i 1 < i 2 < < i r = n wobei r = 1,..., n. Band 3 simuliert M: wir kopieren erst s 1 s 2... s i1 auf Band 3 und, falls die Simulation in einem finalen Zustand von M hält, s i1+1s i1+2... s i2 auf Band 3 und, falls die Simulation wieder in einem finalen Zustand hält, s i2+1... s i3 auf Band 3 usw. Falls alle Simulationen in finalen Zuständen von M halten, wird die Eingabe von M akzeptiert. Falls irgendeine der Simulationen in einem nichtfinalen Zustand hält, beginnt eine neue Etappe (mit der nächsten Liste auf Band 2). Wenn alle Listen auf Band 2 durchgegangen worden sind, ohne dass bis dahin M akzeptiert hat, hält M in einem nichtfinalen Zustand. (4) L: Gegeben sei eine TM, M, die L akzeptiert, bezeichnen wir durch M dieselbe TM, nur alle Zustände außer q F sind final und q F ist nicht-final. Wenn M ein Wort nicht akzeptiert, dann akzeptiert es M: hier ist wichtig, dass M auf die Eingabe hält! Dann hält sie in einem Zustand q q F der in M final ist. Es gibt also L( M) = Σ L(M). Bemerkung 2. Es ist erstaunlich, dass die Implikation L rekursiv L rekursiv die folgende Umkehrung hat: Satz 2. Wenn eine rekursiv aufzählbare Sprache L Σ auch rekursiv das aufzählbare Komplement L = Σ L besitzt, dann ist L rekursiv. Beweis. Gegeben sind TM M für die Sprache L und M für die Sprache L Wir konstruieren eine TM, M 1, die L akzeptiert und auf jede Eingabe hält: M 1 ist eine 2-Band TM, die auf Band 1 die Maschine M und auf Band 2 die Maschine M simuliert. Die Maschine M 1 rechnet so lange, bis auf Band 1 oder Band 2 die Berechnung hält. Wenn das passiert, dann (a) M 1 akzeptiert genau wenn M auf Band 1 akzeptiert (falls M hält) und

3.5. REKURSIVE SPRACHEN 99 (b) M 1 akzeptiert genau wenn M auf Band 2 nicht akzeptiert (falls M hält). Die einzige Frage ist: hält M 1 auf jede Eingabe w 2? Ja! Wenn w L, hält die Maschine M. Und wenn w L(= L( M)), dann hält die Maschine M. Bemerkung 3. Jede rekursive Sprache ist selbstverständlich rekursiv aufzählbar, und jede kontextfreie Sprache ist rekursiv, wie sofort bewiesen wird. REGULÄR KONTEXTFREI REKURSIV REKURSIV AUFZÄHLBAR ALLE SPRACHEN Beispiel 5 in Abschnitt 3.2.5 zeigt, dass die Sprache L = {a n b n c n ; n 1} rekursiv (aber nicht kontextfrei) ist. Ein Beispiel einer Sprache, die rekursiv aufzählbar aber nicht rekursiv ist, wird in Kapitel 5 vorgeführt. Dort zeigen wir, dass ein solches Beispiel die Sprache L halt aller Wörter c(m)w ist, wobei M eine Turingmaschine und w ein Eingabewort ist, auf das die Turingmaschine M hält. (Das bedeutet, dass das Halteproblem nicht entscheidbar ist.)