2x2 - Theoretische Informatik - Universität Duisburg-Essen
2x2 - Theoretische Informatik - Universität Duisburg-Essen
2x2 - Theoretische Informatik - Universität Duisburg-Essen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Vorlesung “Berechenbarkeit und Komplexität”<br />
alias<br />
“<strong>Theoretische</strong> <strong>Informatik</strong>: Komplexitätstheorie und<br />
effiziente Algorithmen”<br />
Wintersemester 2013/14<br />
Prof. Barbara König<br />
Übungsleitung: Henning Kerstan & Sebastian Küpper<br />
Willkommen zu<br />
“Berechenbarkeit und Komplexität”<br />
(Bachelor Angewandte <strong>Informatik</strong> – Ingenieur- und<br />
Medieninformatik, <strong>Duisburg</strong>)<br />
“<strong>Theoretische</strong> <strong>Informatik</strong>: Komplexitätstheorie und effiziente<br />
Algorithmen”<br />
(Bachelor Angewandte <strong>Informatik</strong> – Systems Engineering &<br />
Lehramt, <strong>Essen</strong>)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 1<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 2<br />
Wer sind wir?<br />
Das heutige Programm<br />
Organisatorisches<br />
Vorstellung<br />
Ablauf der Vorlesung und der Übungen<br />
Prüfung<br />
Literatur & Folien<br />
Einführung und Motivation: Berechenbarkeit und Komplexität<br />
Inhalt der weiteren Vorlesung<br />
Dozentin: Prof. Barbara König<br />
Raum LF 264 (Campus <strong>Duisburg</strong>)<br />
E-Mail: barbara koenig@uni-due.de<br />
Sprechstunde: nach Vereinbarung<br />
Übungsleitung: Henning Kerstan & Sebastian Küpper<br />
Raum LF 261 (Campus <strong>Duisburg</strong>)<br />
E-Mail: henning.kerstan@uni-due.de,<br />
sebastian.kuepper@uni-due.de<br />
Web-Seite:<br />
www.ti.inf.uni-due.de/teaching/ws201314/beko/<br />
Barbara König BeKo/TI 3<br />
Barbara König BeKo/TI 4
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Vorlesungstermine<br />
Termine der Übungsgruppen/Tutorien<br />
Termine:<br />
Donnerstag, 14:15-15:45 Uhr<br />
Jeweils im Raum LB 134 (<strong>Duisburg</strong>) bzw. S07 S00 D07 (<strong>Essen</strong>)<br />
Videoübertragung in beide Räume<br />
Dozentin ist im Wechsel in <strong>Duisburg</strong> und <strong>Essen</strong> (genauer Plan bis<br />
Weihnachten: siehe Webseite)<br />
Übungsgruppen in <strong>Duisburg</strong>:<br />
Mittwoch, 8:00 - 10:00 Uhr, Raum LC 137 (Gruppe D1)<br />
Donnerstag, 12:00 - 14:00 Uhr, Raum LC 137 (Gruppe D2)<br />
Donnerstag, 16:00 - 18:00 Uhr, Raum LC 137 (Gruppe D3)<br />
Übungsgruppen in <strong>Essen</strong>:<br />
Dienstag, 8:30 - 10:00 Uhr, Raum SH 403 (Gruppe E1)<br />
Donnerstag, 12:00 - 14:00 Uhr, Raum SH 403 (Gruppe E2)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Hinweise zu den Übungen<br />
Barbara König BeKo/TI 5<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Hinweise zu den Übungen<br />
Barbara König BeKo/TI 6<br />
Bitte versuchen Sie, sich möglichst gleichmäßig auf die<br />
Übungen zu verteilen.<br />
Besuchen Sie die Übungen und machen Sie die Hausaufgaben!<br />
Diesen Stoff kann man nur durch regelmäßiges Üben erlernen.<br />
Auswendiglernen hilft nicht besonders viel.<br />
Die Übungen beginnen in der dritten Semesterwoche am 28.<br />
Oktober.<br />
Das Übungsblatt wird jeweils am Montag ins Netz gestellt.<br />
Das erste Übungsblatt wird am 21.10. bereitgestellt.<br />
Die schriftlichen Aufgaben müssen bis spätestens Montag,<br />
12 Uhr, der darauffolgenden Woche abgegeben werden.<br />
In dieser Woche wird dann auch das Übungsblatt besprochen.<br />
Abgabe durch<br />
Elektronische Abgabe über die Lernplattform Moodle<br />
oder<br />
Einwurf in einen Briefkasten:<br />
<strong>Duisburg</strong>: Briefkasten neben dem Raum LF259.<br />
<strong>Essen</strong>: im Moment ist kein Briefkasten vorgesehen<br />
Barbara König BeKo/TI 7<br />
Barbara König BeKo/TI 8
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Hinweise zu den Übungen<br />
Lernplattform Moodle<br />
Wir verwenden Moodle, um:<br />
Bitte geben Sie auf Ihrer Lösung oben deutlich Ihren Namen,<br />
Ihre Gruppennummer, Ihre Matrikelnummer und das Fach an.<br />
Bitte heften Sie die Blätter ordentlich zusammen.<br />
Elektronische Abgaben sind nur als PDF zulässig! Bitte<br />
benennen Sie Dateien nach folgendem Schema (um eine<br />
eindeutige Namenswahl zu gewährleisten):<br />
-.pdf<br />
Sie dürfen in Zweier-Gruppen abgeben.<br />
Plagiate oder das Kopieren alter Musterlösungen sind<br />
selbstverständlich nicht erlaubt! In diesem Fall vergeben wir<br />
keine Punkte.<br />
die Aufgabenblätter zur Verfügung zu stellen,<br />
Hausaufgaben elektronisch abzugeben und<br />
Video-Mitschnitte der Vorlesung (vom WS 12/13) zur<br />
Verfügung zu stellen.<br />
Moodle-2-Plattform an der <strong>Universität</strong> <strong>Duisburg</strong>-<strong>Essen</strong>:<br />
http://moodle2.uni-due.de/ (siehe auch Link auf der<br />
Webseite)<br />
Bitte legen Sie dort einen Zugang an (falls noch nicht vorhanden)<br />
und tragen Sie sich in den Kurs “Berechenbarkeit und<br />
Komplexität/<strong>Theoretische</strong> <strong>Informatik</strong>” (Ingenieurwissenschaften →<br />
<strong>Informatik</strong> und Angewandte Kognitionswissenschaft) ein.<br />
Zugangsschlüssel: . . .<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mündliche Prüfung/Klausur<br />
Barbara König BeKo/TI 9<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mündliche Prüfung/Klausur<br />
Barbara König BeKo/TI 10<br />
Es gibt mehrere Möglichkeiten, die Vorlesung prüfen zu lassen . . .<br />
Mündliche Prüfung (nur für Bachelor <strong>Duisburg</strong>)<br />
Mündliche Prüfung des Moduls “<strong>Theoretische</strong> <strong>Informatik</strong>”<br />
(“Automaten und Formale Sprachen”, zusammen mit<br />
“Berechenbarkeit und Komplexität”)<br />
Statt dieser mündlichen Prüfung kann man alternativ auch eine<br />
mündliche Prüfung in “Rechnernetze und Sicherheit” absolvieren.<br />
Termine: 24.-28. Februar 2014<br />
Schriftliche Prüfung<br />
Klausur am Ende des Semesters (für alle Studierenden, auch<br />
Bachelor <strong>Duisburg</strong>, die die mündliche Prüfung nicht absolvieren)<br />
Termin: Donnerstag, 13. Februar 2014, 14:00–16:00 Uhr<br />
Anmeldung in beiden Fällen (schriftlich, mündlich) über das<br />
Prüfungsamt (ab 11.11.)<br />
Für die <strong>Essen</strong>er Bachelorstudiengänge ist die Nachklausur<br />
voraussichtlich am Donnerstag, 3. April 2014, 14:00-16:00 Uhr<br />
Barbara König BeKo/TI 11<br />
Barbara König BeKo/TI 12
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mündliche Prüfung/Klausur<br />
Mündliche Prüfung/Klausur<br />
Für beide Prüfungsformen gibt es eine Bonusregelung:<br />
Wenn Sie 50% der Hausaufgabenpunkte erzielt haben, so<br />
erhalten Sie einen Bonus für die Klausur und für die<br />
Modulprüfung. (Für das Vorrechnen in der Übung gibt es 10<br />
Extrapunkte.)<br />
Auswirkung: Verbesserung um eine Notenstufe; z.B. von 2,3<br />
auf 2,0<br />
Für die mündliche Bachelor-Modulprüfung “<strong>Theoretische</strong><br />
<strong>Informatik</strong>” (<strong>Duisburg</strong>): die Bonus-Voraussetzungen sind für<br />
jede Teilvorlesung (“Automaten und Formale Sprachen” &<br />
“Berechenbarkeit und Komplexität”) zu erfüllen.<br />
Staatsexamen<br />
Lehramtsstudierende, die Staatsexamen machen wollen, melden<br />
sich bitte (rechtzeitig) über das Landesprüfungsamt an.<br />
Die Prüfung wird in diesem Fall vom Landesprüfungsamt<br />
organisiert, wir kümmern uns nur um die Aufgabenstellung (und<br />
korrigieren die Klausur).<br />
Literatur<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Die Vorlesung basiert im<br />
wesentlichen auf folgendem<br />
Buch:<br />
Uwe Schöning: <strong>Theoretische</strong><br />
<strong>Informatik</strong> – kurz gefasst.<br />
Spektrum, 2008.<br />
(5. Auflage)<br />
Barbara König BeKo/TI 13<br />
Barbara König BeKo/TI 15<br />
Literatur<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Weitere relevante Bücher:<br />
Neuauflage eines alten<br />
Klassikers:<br />
Hopcroft, Motwani, Ullman:<br />
Introduction to Automata<br />
Theory, Languages, and<br />
Computation,<br />
Addison-Wesley, 2001.<br />
Barbara König BeKo/TI 14<br />
Auf Deutsch:<br />
Hopcroft, Motwani, Ullman:<br />
Einführung in die<br />
Automatentheorie, Formale<br />
Sprachen und<br />
Komplexitätstheorie,<br />
Pearson, 2002.<br />
Barbara König BeKo/TI 16
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Literatur<br />
Literatur<br />
Vossen, Witt: Grundkurs<br />
<strong>Theoretische</strong> <strong>Informatik</strong>,<br />
vieweg, 2006.<br />
Asteroth, Baier:<br />
<strong>Theoretische</strong> <strong>Informatik</strong>,<br />
Pearson, 2003.<br />
Literatur<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 17<br />
Folien<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 18<br />
Sipser: Introduction to the<br />
Theory of Computation,<br />
Thomson, 2006.<br />
Folien werden<br />
im Web als PDF bereitgestellt<br />
regelmäßig aktualisiert<br />
Die Folien werden sich gegenüber dem letzten Jahr relativ wenig<br />
verändern. Von daher macht es Sinn, sich die Folien des Vorjahres<br />
schon einmal anzusehen (Link: siehe Vorlesungs-Webseite).<br />
Barbara König BeKo/TI 19<br />
Barbara König BeKo/TI 20
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Inhalt der Vorlesung<br />
Inhalt der Vorgänger-Vorlesung “Automaten und Formale<br />
Sprachen”: die untersten beiden Stufen der Chomsky-Hierarchie<br />
Reguläre Sprachen (Chomsky Typ-3)<br />
reguläre Grammatiken, (deterministische und<br />
nichtdeterministische) endliche Automaten, reguläre Ausdrücke,<br />
Pumping-Lemma, Minimalautomat, Abschlusseigenschaften,<br />
Entscheidbarkeitsresultate<br />
Kontextfreie Sprachen (Chomsky Typ-2)<br />
kontextfreie Grammatiken, Normalformen, Pumping-Lemma,<br />
Abschlusseigenschaften, CYK-Algorithmus, Kellerautomaten,<br />
deterministisch kontextfreie Sprachen, Entscheidbarkeitsresultate<br />
Chomsky-Hierarchie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 21<br />
Inhalt der Vorlesung<br />
Und was kommt jetzt?<br />
Wir beschäftigen uns mit den verbleibenden beiden Stufen der<br />
Chomsky-Hierarchie: Chomsky Typ-1 und Chomsky Typ-0.<br />
Die Theorie der Typ-0-Sprachen ist im wesentlichen<br />
Berechenbarkeitstheorie: Welche Sprachen sind überhaupt mit<br />
(informatischen) Maschinen akzeptierbar? Welche Funktionen<br />
sind überhaupt berechenbar?<br />
Bei Berechenbarkeitstheorie: Fokus liegt etwas mehr auf<br />
berechenbaren Funktionen<br />
Und als letztes Kapitel: Komplexitätstheorie<br />
Welche Sprachen kann man akzeptieren, wenn die Resourcen<br />
(Zeit, Platz) beschränkt sind? Beispielsweise: was kann man<br />
alles in polynomieller Zeit erreichen?<br />
Chomsky-Hierarchie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 22<br />
Grammatik (Wiederholung)<br />
Eine Grammatik G ist ein 4-Tupel G = (V , Σ, P, S), das folgende<br />
Bedingungen erfüllt:<br />
V ist eine endliche Menge von Nicht-Terminalen bzw.<br />
Variablen<br />
Σ ist das (endliche) Alphabet bzw. die Menge der<br />
Terminal(symbol)e.<br />
P ist eine endliche Menge von Regeln bzw. Produktionen mit<br />
P ⊆ (V ∪ Σ) + × (V ∪ Σ) ∗ .<br />
S ∈ V ist die Startvariable bzw. das Axiom.<br />
Die von einer Grammatik erzeugte Sprache (Wiederholung)<br />
Die von einer Grammatik G = (V , Σ, P, S) erzeugte Sprache ist<br />
L(G) = {w ∈ Σ ∗ | S ⇒ ∗ G w}.<br />
(Menge aller Wörter aus Alphabetsymbolen, die aus der<br />
Startvariable S ableitbar sind.)<br />
Barbara König BeKo/TI 23<br />
Barbara König BeKo/TI 24
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-Hierarchie<br />
Chomsky-Hierarchie<br />
Beispiel: Die Grammatik G = ({S, A, B}, {a, b}, P, S) mit<br />
folgender Produktionenmenge P:<br />
S → ABS | ε AB → BA BA → AB A → a B → b<br />
erzeugt die Sprache:<br />
L = {w ∈ {a, b} ∗ | # a (w) = # b (w)}.<br />
(# a (w): Anzahl der a’s im Wort w)<br />
Typ-0-Grammatiken:<br />
keine Einschränkung<br />
Typ-1-Grammatiken:<br />
|linke Seite| ≤<br />
|rechte Seite|<br />
(Wortproblem ist hier<br />
noch entscheidbar.)<br />
Eine Sprache L ⊆ Σ ∗ ist vom<br />
Typ i, wenn sie von einer<br />
Typ-i-Grammatik erzeugt<br />
wird.<br />
Menge aller Sprachen<br />
Typ-0-Sprachen<br />
semi-entscheidbare Sprachen<br />
Typ-1-Sprachen<br />
kontextsensitive Sprachen<br />
Typ-2-Sprachen<br />
kontextfreie Sprachen<br />
Typ-3-Sprachen<br />
reguläre Sprachen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Barbara König BeKo/TI 25<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Barbara König BeKo/TI 26<br />
Was bedeutet es überhaupt im allgemeinen, dass eine<br />
Funktion berechenbar oder eine Sprache akzeptierbar ist?<br />
Wie kann man ein generelles Berechnungsmodell definieren?<br />
Was ist das Maschinenmodell für Chomsky-0-Sprachen?<br />
Im Laufe der Zeit sind mehrere Berechnungsmodelle entwickelt<br />
worden, die jedoch alle zueinander äquivalent sind:<br />
Turing-Maschinen (benannt nach Alan Turing)<br />
While-Programme, Goto-Programme<br />
µ-rekursive Funktionen<br />
Turing-Maschinen mit entsprechender Beschränkung dienen auch<br />
als Maschinenmodell für Chomsky-1-Sprachen<br />
Barbara König BeKo/TI 27<br />
Barbara König BeKo/TI 28
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Unentscheidbarkeit<br />
Unentscheidbarkeit<br />
Gibt es Sprachen, für die das Wortproblem (w ∈ L?) nicht<br />
entscheidbar ist?<br />
Antwort: ja<br />
Kann man Funktionen definieren, die nicht berechenbar sind? Das<br />
heißt, es gibt keine Turing-Maschine/kein While-Programm/keine<br />
µ-rekursive Funktion, die diese Funktion berechnet?<br />
Antwort: ja<br />
Außerdem: Wie zeigt man diese negativen Resultate?<br />
Die “Mutter” aller unentscheidbaren Probleme: das Halteproblem<br />
Gegeben sei eine Turing-Maschine (oder einfach ein Programm) M<br />
und eine Eingabe w ∈ Σ ∗ .<br />
Frage: Terminiert M bei Eingabe w?<br />
Das Halteproblem ist unentscheidbar, das heißt, es gibt kein<br />
Verfahren, das – gegeben M und w – immer entscheidet, ob M<br />
mit Eingabe w terminiert oder nicht.<br />
Wir werden die Unentscheidbarkeit des Halteproblems im Rahmen<br />
der Vorlesung zeigen. (Der Beweis ist überraschend kurz und<br />
elegant.)<br />
Unentscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 29<br />
Unentscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 30<br />
Intuition: Warum ist das Halteproblem unentscheidbar?<br />
Man könnte doch einfach M mit Eingabe w laufenlassen und<br />
nachsehen was passiert ....<br />
Wenn M nach einer endlichen Anzahl von Schritten von<br />
terminiert, dann hat man Gewissheit.<br />
Aber: wenn M nach 10.000 Schritten noch nicht terminiert<br />
hat, was dann? Nochmal 10.000 Schritte weiterlaufen lassen?<br />
Neben dem Halteproblem gibt es noch viele andere wichtige<br />
unentscheidbare Probleme, z.B., das Schnittproblem für<br />
kontextfreie Sprachen.<br />
Gegeben zwei kontextfreie Grammatiken für Sprachen L 1 , L 2 . Gilt<br />
L 1 ∩ L 2 = ∅?<br />
Beweistechnik: Man zeigt die Unentscheidbarkeit solcher Probleme<br />
meistens durch einen Widerspruchsbeweis. “Wenn dieses Problem<br />
entscheidbar wäre, dann wäre auch das Halteproblem<br />
entscheidbar.”<br />
Dazu kodiert man das Halteproblem so um, dass daraus eine<br />
Instanz eines solchen Problems wird.<br />
Barbara König BeKo/TI 31<br />
Barbara König BeKo/TI 32
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Schematische Darstellung einer Turing-Maschine:<br />
Kopf kann sich nach links und rechts<br />
bewegen und Zeichen überschreiben<br />
e i n g a b e<br />
Automat mit<br />
endlich vielen<br />
Zuständen<br />
Signal für<br />
Endzustand<br />
Turingmaschinen<br />
Eigenschaften von Turing-Maschinen:<br />
Wie endliche Automaten lesen Turing-Maschinen eine Eingabe<br />
von einem Band und haben endlich viele Zustände.<br />
Unterschied zu endlichen Automaten: der Lesekopf kann sich<br />
nach links und rechts bewegen und auch Zeichen<br />
überschreiben.<br />
Falls nur Zeichen der Eingabe überschrieben werden:<br />
Turing-Maschine heißt linear beschränkt (Maschinenmodell für<br />
Chomsy-1-Sprachen).<br />
Falls der Lesekopf auch über den linken und rechten Rand<br />
hinauslaufen und dort schreiben kann: allgemeine<br />
Turingmaschine mit unbeschränktem Band (Maschinenmodell<br />
für Chomsy-0-Sprachen).<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turing-Maschinen und Computer:<br />
Barbara König BeKo/TI 33<br />
Das Konzept der Turing-Maschine wurde von Alan Turing<br />
1936 erfunden, noch bevor die ersten echten Computer gebaut<br />
wurden.<br />
Es ist nicht nur aus historischen Gründen interessant, sondern<br />
auch, weil es ein sehr einfaches Berechnungsmodell darstellt.<br />
Wenn man zeigen will, dass etwas nicht berechenbar ist, dann<br />
ist es viel besser, dies mit einem möglichst einfachen<br />
Berechnungsmodell zu tun. (Natürlich sollte man vorher<br />
sicherstellen, dass dieses Berechnungsmodell äquivalent zu<br />
komplexeren Modellen ist.)<br />
Analogie zu einem heutigen Computer:<br />
Kontrolle mit endlich vielen Zuständen Programm<br />
(Eingabe-)Band Speicher<br />
Barbara König BeKo/TI 35<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 34<br />
Beispiel 1: Turing-Maschine, die eine Binärzahl auf dem Band um<br />
eins inkrementiert.<br />
Idee:<br />
Kopf der Turing-Maschine steht zunächst auf dem am<br />
weitesten links befindlichen (höchstwertigen) Bit der<br />
Binärzahl.<br />
Kopf nach rechts laufen lassen, bis ein Leerzeichen gefunden<br />
wird.<br />
Dann wieder nach links laufen und jede 1 durch 0 ersetzen,<br />
solange bis eine 0 oder ein Leerzeichen auftaucht.<br />
Dieses Zeichen dann durch 1 ersetzen, bis zum Zahlanfang<br />
laufen und in einen Endzustand übergehen.<br />
Barbara König BeKo/TI 36
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Turingmaschinen<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Barbara König BeKo/TI 37<br />
Barbara König BeKo/TI 37
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Turingmaschinen<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
Zustand:<br />
Zahlende finden<br />
z 0<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Simulation<br />
□ 1 0 1 1 1 □<br />
Simulation<br />
□ 1 0 1 1 0 □<br />
Zustand: 1<br />
durch 0 ersetzen<br />
z 1<br />
Zustand: 1<br />
durch 0 ersetzen<br />
z 1<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Barbara König BeKo/TI 37<br />
Barbara König BeKo/TI 37
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Turingmaschinen<br />
Simulation<br />
□ 1 0 1 0 0 □<br />
Simulation<br />
□ 1 0 0 0 0 □<br />
Zustand: 1<br />
durch 0 ersetzen<br />
z 1<br />
Zustand: 1<br />
durch 0 ersetzen<br />
z 1<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Simulation<br />
□ 1 1 0 0 0 □<br />
Simulation<br />
□ 1 1 0 0 0 □<br />
Zustand: zurück<br />
zum Zahlanfang<br />
z 2<br />
Zustand: zurück<br />
zum Zahlanfang<br />
z 2<br />
□: Leerzeichen auf dem Band<br />
□: Leerzeichen auf dem Band<br />
Barbara König BeKo/TI 37<br />
Barbara König BeKo/TI 37
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Simulation<br />
□ 1 1 0 0 0 □<br />
Zustand:<br />
Ende<br />
z e<br />
□: Leerzeichen auf dem Band<br />
Turingmaschinen<br />
Beispiel 2: Turing-Maschinen zur Spracherkennung<br />
Wir suchen eine Turing-Maschine, die die Sprache<br />
L = {0 2n | n ≥ 0} (nicht kontextfrei) erkennt.<br />
Idee:<br />
Kopf steht zunächst am Beginn der Folge von Nullen.<br />
Anfang und Ende der Folge von Nullen markieren. Links neben<br />
der Folge von Nullen die Binärzahl 0 aufs Band schreiben.<br />
Nullen nacheinander durch ein anderes Zeichen (#) ersetzen.<br />
Nach jeder Ersetzung nach links zum Zähler laufen und diesen<br />
um eins inkrementieren.<br />
Sobald alle Nullen verschwunden sind (Endmarker ist<br />
erreicht), überprüfen, ob der Zähler die Form 10 . . . 0 hat.<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 37<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 38<br />
Turingmaschine (Definition)<br />
Eine (deterministische) Turingmaschine M ist ein 7-Tupel<br />
M = (Z, Σ, Γ, δ, z 0 , □, E), wobei<br />
Z die endliche Menge der Zustände,<br />
Σ das Eingabealphabet,<br />
Γ mit Γ ⊃ Σ das Arbeitsalphabet oder Bandalphabet,<br />
z 0 ∈ Z der Startzustand,<br />
δ : Z × Γ → Z × Γ × {L, R, N} die Überführungsfunktion,<br />
□ ∈ Γ\Σ das Leerzeichen oder Blank und<br />
E ⊆ Z die Menge der Endzustände ist.<br />
Bedeutung der Überführungsfunktion: sei δ(z, a) = (z ′ , b, x) mit<br />
x ∈ {L, R, N}.<br />
Falls die Turingmaschine im Zustand z auf dem Symbol a steht, so<br />
wechselt sie in den Zustand z ′ ,<br />
überschreibt a durch b und<br />
führt folgende Kopfbewegung aus.<br />
Kopf einen Schritt nach links, falls x = L.<br />
Kopf bleibt stehen, falls x = N.<br />
Kopf einen Schritt nach rechts, falls x = R.<br />
Abkürzung: TM<br />
Barbara König BeKo/TI 39<br />
Barbara König BeKo/TI 40
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Turingmaschinen<br />
Wir fordern noch folgende Bedingung für Turingmaschinen:<br />
Bedingung für Endzustände<br />
Für z ∈ E gilt für alle a ∈ Σ<br />
δ(z, a) = (z, a, N)<br />
D.h., in einem Endzustand werden die Kopfposition, das Band und<br />
der Zustand nicht mehr verändert.<br />
Neben deterministischen Turingmaschinen gibt es auch<br />
nichtdeterministische Turingmaschinen.<br />
Überführungsfunktion für nichtdeterministische Turingmaschinen:<br />
δ : Z × Γ → P(Z × Γ × {L, R, N}).<br />
Jedem Zustand und Bandsymbol wird eine (eventuell leere) Menge<br />
von möglichen Aktionen zugeordnet.<br />
Dabei gilt auch, dass es in einem Endzustand keine Veränderungen<br />
mehr geben darf. Das heißt für z ∈ E gilt:<br />
(z ′ , b, x) ∈ δ(z, a) ⇒ z = z ′ und a = b und x = N<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 41<br />
Beispiel: Turingmaschine zur Inkrementierung einer Binärzahl<br />
M = ({z 0 , z 1 , z 2 , z e }, {0, 1}, {0, 1, □}, δ, z 0 , □, {z e })<br />
Überführungsfunktion: Zahlende finden<br />
δ(z 0 , 0) = (z 0 , 0, R)<br />
δ(z 0 , 1) = (z 0 , 1, R)<br />
δ(z 0 , □) = (z 1 , □, L)<br />
Überführungsfunktion: 1 durch 0 ersetzen<br />
δ(z 1 , 0) = (z 2 , 1, L)<br />
δ(z 1 , 1) = (z 1 , 0, L)<br />
δ(z 1 , □) = (z e , 1, N)<br />
mit<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Überführungsfunktion: zurück zum Zahlanfang<br />
Barbara König BeKo/TI 42<br />
δ(z 2 , 0) = (z 2 , 0, L)<br />
δ(z 2 , 1) = (z 2 , 1, L)<br />
δ(z 2 , □) = (z e , □, R)<br />
Der Vollständigkeit halber: Überführungsregeln für den Endzustand<br />
Überführungsfunktion: Endzustandsregeln<br />
δ(z e , 0) = (z e , 0, N)<br />
δ(z e , 1) = (z e , 1, N)<br />
δ(z e , □) = (z e , □, N)<br />
Barbara König BeKo/TI 43<br />
Barbara König BeKo/TI 44
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Wie bei anderen Maschinenmodellen gibt es auch bei<br />
Turingmaschinen den Begriff einer Konfiguration, d.h., einer<br />
Momentaufnahme einer Turingmaschinen-Berechnung<br />
Konfiguration (Definition)<br />
Eine Konfiguration einer Turingmaschine ist gegeben durch ein<br />
Wort<br />
k ∈ Γ ∗ ZΓ ∗ .<br />
Bedeutung: k = αzβ<br />
Turingmaschinen<br />
Definition einer Übergangsrelation ⊢, die beschreibt, welche<br />
Konfigurationsübergänge möglich sind.<br />
Keine Bewegung<br />
Es gilt: a 1 . . . a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m z ′ cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, N) (m ≥ 0, n ≥ 1).<br />
a 1 . . . a m b 2 . . . b n<br />
b 1<br />
Barbara König BeKo/TI 46<br />
α ∈ Γ ∗ ist der Teil des Bandes rechts vom Kopf.<br />
β ∈ Γ ∗ ist der Teil des Bandes links vom Kopf. Der Kopf steht<br />
auf dem ersten Zeichen von β.<br />
z ∈ Z ist der aktuelle Zustand.<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 45<br />
Definition einer Übergangsrelation ⊢, die beschreibt, welche<br />
Konfigurationsübergänge möglich sind.<br />
Keine Bewegung<br />
Es gilt: a 1 . . . a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m z ′ cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, N) (m ≥ 0, n ≥ 1).<br />
Zustand: z<br />
Turingmaschinen<br />
Schritt nach links<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Es gilt: a 1 . . . a m−1 a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m−1 z ′ a m cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, L) (m ≥ 1, n ≥ 1).<br />
a m b 1 b 2 . . . b n<br />
a 1 . . . a m−1<br />
Barbara König BeKo/TI 47<br />
a 1 . . . a m c b 2 . . . b n<br />
Zustand: z<br />
Zustand: z ′ Barbara König BeKo/TI 46
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Schritt nach links<br />
Es gilt: a 1 . . . a m−1 a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m−1 z ′ a m cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, L) (m ≥ 1, n ≥ 1).<br />
a 1<br />
. . . a m−1 a m c b 2 . . . b n<br />
Zustand: z ′<br />
Turingmaschinen<br />
Definition einer Übergangsrelation ⊢, die beschreibt, welche<br />
Konfigurationsübergänge möglich sind.<br />
Schritt nach rechts<br />
Es gilt: a 1 . . . a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m cz ′ b 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, R) (m ≥ 0, n ≥ 2).<br />
a 1 . . . a m b 2 . . . b n<br />
b 1<br />
Barbara König BeKo/TI 48<br />
Zustand: z<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 47<br />
Definition einer Übergangsrelation ⊢, die beschreibt, welche<br />
Konfigurationsübergänge möglich sind.<br />
Schritt nach rechts<br />
Es gilt: a 1 . . . a m zb 1 b 2 . . . b n ⊢ a 1 . . . a m cz ′ b 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, R) (m ≥ 0, n ≥ 2).<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Sonderfälle: Bandende erreicht zusätzliches Leerzeichen muss<br />
hinzugefügt werden<br />
Linkes Bandende<br />
Es gilt: zb 1 b 2 . . . b n ⊢ z ′ □cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, L).<br />
a 1 . . . a m c b 2 . . . b n<br />
Zustand: z ′<br />
Zustand: z<br />
b 1<br />
b 2 . . . b n<br />
Barbara König BeKo/TI 48<br />
Barbara König BeKo/TI 49
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Sonderfälle: Bandende erreicht zusätzliches Leerzeichen muss<br />
hinzugefügt werden<br />
Linkes Bandende<br />
Es gilt: zb 1 b 2 . . . b n ⊢ z ′ □cb 2 . . . b n ,<br />
falls δ(z, b 1 ) = (z ′ , c, L).<br />
Turingmaschinen<br />
Rechtes Bandende<br />
Es gilt: a 1 . . . a m zb 1 ⊢ a 1 . . . a m cz ′ □,<br />
falls δ(z, b 1 ) = (z ′ , c, R).<br />
. . .<br />
□ c<br />
Zustand: z ′<br />
b 2 . . . b n<br />
Zustand: z<br />
a 1 a m b 1<br />
Barbara König BeKo/TI 50<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 49<br />
Turingmaschinen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Rechtes Bandende<br />
Es gilt: a 1 . . . a m zb 1 ⊢ a 1 . . . a m cz ′ □,<br />
falls δ(z, b 1 ) = (z ′ , c, R).<br />
a 1 . . . a m c □<br />
Akzeptierte Sprache (Definition)<br />
Sei M = (Z, Σ, Γ, δ, z 0 , □, E) eine Turingmaschine. Dann ist die<br />
von M akzeptierte Sprache:<br />
T (M) = {x ∈ Σ ∗ | z 0 x ⊢ ∗ αzβ für α, β ∈ Γ ∗ und z ∈ E}.<br />
Akzeptierte Sprache: Alle Eingabe-Wörter, mit denen die<br />
Turing-Maschine in einen Endzustand gelangen kann. Dabei startet<br />
die Turing-Maschine im Anfangszustand z 0 , der Kopf befindet sich<br />
auf dem ersten Zeichen des Eingabe-Wortes.<br />
Zustand: z ′ Barbara König BeKo/TI 50<br />
Wenn eine Maschine M für ein Eingabewort w in einen<br />
Endzustand gelangt, dann sagt man auch, dass M auf w hält.<br />
Barbara König BeKo/TI 51
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turingmaschinen<br />
Linear beschränkte Turingmaschinen<br />
Für nicht-deterministische Turingmaschinen müssen die<br />
Definitionen folgendermaßen angepaßt werden:<br />
Falls sich die Turingmaschine im Zustand z befindet und das<br />
Zeichen b auf dem Band steht, sind alle<br />
Konfigurationsübergänge möglich, die durch die Menge δ(z, b)<br />
beschrieben werden.<br />
Ein Wort ist akzeptiert, wenn es eine mögliche Folge von<br />
Konfigurationen gibt, die zu einem Endzustand führt, auch<br />
wenn andere Folgen in Sackgassen geraten oder unendlich<br />
lang sind, ohne dabei je einen Endzustand zu erreichen.<br />
Wir definieren nun das Maschinenmodell für Chomsky-1-Sprachen<br />
(erzeugt durch monotone Grammatiken): linear beschränkte<br />
Turingmaschinen, die niemals außerhalb der Eingabe arbeiten<br />
dürfen.<br />
Problem: Turingmaschine muss erkennen können, dass sie sich am<br />
Ende der Eingabe befindet.<br />
(Für den Anfang der Eingabe besteht dasselbe Problem, aber<br />
diesen kann sie sich zu Beginn selbst markieren.)<br />
Lösung: das Eingabealphabet Σ wird erweitert, für jedes Zeichen<br />
a ∈ Σ wird noch ein Zeichen â hinzugenommen. Das letzte Zeichen<br />
a n der Eingabe wird dann durch â n ersetzt.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Linear beschränkte Turingmaschinen<br />
Barbara König BeKo/TI 52<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-1-Sprachen<br />
Barbara König BeKo/TI 53<br />
Linear beschränkte Turingmaschinen<br />
Eine nichtdeterministische Turingmaschine heißt linear beschränkt,<br />
wenn für alle a 1 . . . a n ∈ Σ + und für alle Konfigurationen αzβ mit<br />
z 0 a 1 . . . â n ⊢ ∗ αzβ gilt:<br />
|αβ| = n.<br />
Die von einer linear beschränkten Turingmaschine M akzeptierte<br />
Sprache ist<br />
Wir zeigen nun, dass die von linear beschränkten Turingmaschinen<br />
akzeptierten Sprachen genau den Typ-1-Sprachen entsprechen.<br />
Monotone Grammatiken → linear beschränkte Turingmaschinen<br />
Zu jeder monotonen Grammatik G gibt es eine linear beschränkte<br />
Turingmaschine M mit L(G) = T (M).<br />
T (M) = {a 1 . . . a n ∈ Σ + | z 0 a 1 . . . â n ⊢ ∗ αzβ<br />
für α, β ∈ Γ ∗ und z ∈ E}.<br />
Barbara König BeKo/TI 54<br />
Barbara König BeKo/TI 55
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-1-Sprachen<br />
Chomsky-1-Sprachen<br />
Linear beschränkte Turingmaschinen → monotone Grammatiken<br />
Zu jeder linear beschränkten Turingmaschine M gibt es eine<br />
monotone Grammatik G mit L(G) = T (M).<br />
Beweisidee: die Übergangsregeln der Turingmaschine werden durch<br />
Produktionen ersetzt, die im wesentlichen Konfigurationen in<br />
Nachfolge-Konfigurationen überführen.<br />
Problem: die “Berechnungsrichtung” ist verschieden bei<br />
Turingmaschinen und Grammatiken<br />
Turingmaschinen beginnen mit einem Wort auf dem Band und<br />
modifizieren dieses so lange, bis ein Endzustand erreicht ist.<br />
Grammatiken beginnen mit der Startvariable S und leiten<br />
daraus das Wort ab.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-1-Sprachen<br />
Lösung:<br />
Barbara König BeKo/TI 56<br />
Die Grammatik “rät” zu Beginn ein Wort und überprüft dann,<br />
ob es in der Sprache liegt.<br />
Allerdings ist dieses Wort nach Simulation der<br />
Turingmaschinen-Berechnung überschrieben oder modifiziert.<br />
Daher: Einführung neuer Symbole, bei denen jedes Zeichen<br />
doppelt gespeichert wird. Die Turingmaschinen-Berechnung<br />
arbeitet dann nur auf einer Kopie jedes Zeichens. Die andere<br />
Kopie wird erhalten und kann nach erfolgreicher Berechnung<br />
wiederhergestellt werden.<br />
Eine echte Kopie des ganzen Wortes kann nicht angefertigt<br />
werden, denn dann müßte man am Ende der Berechnung,<br />
beim Wiederherstellen des Wortes, Zeichen löschen und<br />
nicht-monotone Regeln verwenden.<br />
Barbara König BeKo/TI 58<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-0-Sprachen<br />
Turingmaschinen und Chomsky-0-Sprachen<br />
Barbara König BeKo/TI 57<br />
Zu jeder Chomsky-0-Grammatik G gibt es eine<br />
Turingmaschine M mit L(G) = T (M).<br />
Zu jeder Turingmaschine M gibt es eine<br />
Chomsky-0-Grammatik G mit L(G) = T (M).<br />
Barbara König BeKo/TI 59
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Chomsky-0-Sprachen<br />
Ergebnisse für Chomsky-1- und Chomsky-0-Sprachen<br />
Beweisidee: durch Modifikation des Beweises für linear beschränkte<br />
Turingmaschinen und monotone Grammatiken.<br />
Grammatiken → Turingmaschinen: hier muss bei der Simulation<br />
der Grammatik auf dem Turingmaschinen-Band bei<br />
verkürzenden Regeln (linke Seite ist länger als rechte<br />
Seite) der Bandinhalt auseinandergeschoben werden.<br />
Turingmaschinen → Grammatiken: hier muss dafür gesorgt<br />
werden, dass die Grammatik bei Simulation der<br />
Turingmaschine links und rechts Leerzeichen<br />
erzeugen kann und diese nach erfolgreicher<br />
Berechnung auch wieder löscht.<br />
Abschluss unter Komplement von Typ-1-Sprachen<br />
(Immerman, Szelepcsényi)<br />
Wenn L eine Typ-1-Sprache ist, dann ist auch L = Σ ∗ \L eine<br />
Typ-1-Sprache.<br />
(Ohne Beweis)<br />
Abschluss unter Komplement von Typ-0-Sprachen<br />
Wenn L eine Typ-0-Sprache ist, dann ist L = Σ ∗ \L nicht<br />
notwendigerweise eine Typ-0-Sprache.<br />
(Begründung und Beispiele später im Kapitel<br />
Berechenbarkeitstheorie.)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 60<br />
Ergebnisse für Chomsky-1- und Chomsky-0-Sprachen<br />
Determinismus und Nichtdeterminismus bei Turingmaschinen<br />
Zu jeder nichtdeterministischen Turingmaschine gibt es eine<br />
deterministische Turingmaschine, die dieselbe Sprache akzeptiert.<br />
Beweisidee: die deterministische Turingmaschine simuliert mit Hilfe<br />
von Breitensuche alle Verzweigungen der nichtdeterministischen<br />
Turingmaschine.<br />
Determinismus und Nichtdeterminismus bei linear beschränkten<br />
Turingmaschinen (LBA-Problem)<br />
Für linear beschränkten Turingmaschinen ist nicht bekannt, ob die<br />
deterministischen und nichtdeterministischen Maschinenmodelle<br />
gleich ausdrucksmächtig sind.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechenbarkeit: Motivation<br />
Barbara König BeKo/TI 61<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Nach der Beantwortung der Frage, welche Sprachen maschinell<br />
akzeptierbar sind, beschäftigen wir uns mit der Frage, welche<br />
Funktionen berechenbar sind.<br />
Wir betrachten folgende Typen von Funktionen:<br />
(mehrstellige) Funktionen auf natürlichen Zahlen (die Null ist<br />
eingeschlossen):<br />
f : N k 0 → N 0<br />
Funktionen auf Wörtern:<br />
f : Σ ∗ → Σ ∗<br />
Erlaubt sind auch partielle Funktionen, die nicht notwendigerweise<br />
überall definiert sind.<br />
Barbara König BeKo/TI 62<br />
Barbara König BeKo/TI 63
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Berechenbarkeit: Motivation<br />
Berechenbarkeit: Motivation<br />
Intuitiver Berechenbarkeitsbegriff<br />
Eine Funktion f : N k 0 → N 0 soll als berechenbar angesehen werden,<br />
wenn es ein Rechenverfahren/einen Algorithmus/ein Programm<br />
gibt, das f berechnet, d.h.<br />
das Verfahren erhält (n 1 , . . . , n k ) als Eingabe,<br />
terminiert nach endlich vielen Schritten, falls die Funktion auf<br />
dieser Eingabe definiert ist<br />
und gibt f (n 1 , . . . , n k ) aus.<br />
Falls die Funktion auf (n 1 , . . . , n k ) nicht definiert ist, so soll das<br />
Verfahren nicht stoppen (z.B., durch eine unendliche Schleife).<br />
Die Äquivalenz vieler Berechnungsmodelle (das wird noch gezeigt)<br />
und das intuitive Verständnis des Begriff der Berechenbarkeit<br />
führen zu folgender (nicht beweisbaren) These.<br />
Churchsche These<br />
Die durch die formale Definition der<br />
Turingmaschinen-Berechenbarkeit (äquivalent:<br />
While-Berechenbarkeit, Goto-Berechenbarkeit, µ-Rekursivität)<br />
erfasste Klasse von Funktionen stimmt genau mit der Klasse der<br />
im intuitiven Sinne berechenbaren Funktionen überein.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechenbarkeit: Motivation<br />
Barbara König BeKo/TI 64<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechenbarkeit: Motivation<br />
Barbara König BeKo/TI 65<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Bemerkungen:<br />
Ein Berechnungsmodell, das äquivalent zu Turingmaschinen<br />
ist, nennt man auch Turing-mächtig. Der entsprechende<br />
Berechenbarkeitsbegriff heißt Turing-Berechenbarkeit.<br />
Fast alle Programmiersprachen sind Turing-mächtig.<br />
Heute ist man – mehr als früher – neben der Berechenbarkeit<br />
von Funktionen auch an eher interaktiven und reaktiven<br />
Berechnungsmodellen (z.B. Prozesskalküle) interessiert, bei<br />
denen der Benutzer auch während der Berechnung mit dem<br />
System interagieren kann. Diese werden von Turingmaschinen<br />
nicht so gut repräsentiert, ihre Existenz ist aber auch kein<br />
Widerspruch zur Churchschen These, die sich nur auf<br />
berechenbare Funktionen bezieht.<br />
Wir wiederholen kurz den Begriff der Abzählbarkeit:<br />
Abzählbarkeit<br />
Eine Menge M heißt abzählbar, wenn es eine surjektive Abbildung<br />
f : N 0 → M gibt. Das heißt es gibt eine (nicht notwendigerweise<br />
konstruktive) Aufzählung f (0), f (1), f (2), . . . aller Elemente von<br />
M, in der jedes Element von M mindestens einmal vorkommt.<br />
Barbara König BeKo/TI 66<br />
Barbara König BeKo/TI 67
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Berechenbarkeit: Motivation<br />
Berechenbarkeit: Motivation<br />
Nicht-berechenbare Funktionen<br />
Es gibt Funktionen der Form f : N 0 → N 0 , die nicht berechenbar<br />
sind.<br />
Beweisidee: wir wählen ein beliebiges Berechnungsmodell und<br />
stellen nur eine Anforderung:<br />
Programme bzw. Maschinen in diesem<br />
Berechnungsmodell, können als Wörter über einem<br />
endlichen Alphabet kodiert werden.<br />
Dann gilt: es gibt höchstens abzählbar viele<br />
Maschinen/Programme.<br />
Aber: es gibt überabzählbar viele (totale) Funktionen.<br />
Wir zeigen dies durch einen Widerspruchsbeweis: angenommen die<br />
Menge aller totalen Funktionen F auf natürlichen Zahlen ist<br />
abzählbar. Das heißt, es gibt eine surjektive Abbildung F : N 0 → F.<br />
Wir konstruieren die (totale) Funktion g : N 0 → N 0 mit<br />
g(n) = f n (n) + 1,<br />
wobei f n = F (n).<br />
Da F surjektiv ist, muss es eine natürliche Zahl i geben mit<br />
F (i) = g. Für dieses i gilt dann: g(i) = f i (i). Aber das ist ein<br />
Widerspruch zur Definition von g mit g(i) = f i (i) + 1.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechenbarkeit: Motivation<br />
Barbara König BeKo/TI 68<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Veranschaulichung: wir stellen F dadurch dar, indem wir zu jedem<br />
n die Funktion f n als Folge f n (0), f n (1), f n (2), . . . notieren.<br />
Zum Beispiel:<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechenbarkeit: Motivation<br />
Barbara König BeKo/TI 69<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Veranschaulichung: wir stellen F dadurch dar, indem wir zu jedem<br />
n die Funktion f n als Folge f n (0), f n (1), f n (2), . . . notieren.<br />
Alle Zahlen auf der Diagonale verwenden . . .<br />
n<br />
f n (0) f n (1) f n (2) f n (3) f n (4) . . .<br />
n<br />
f n (0) f n (1) f n (2) f n (3) f n (4) . . .<br />
0<br />
7<br />
20<br />
33<br />
0<br />
12<br />
0<br />
7<br />
20<br />
33<br />
0<br />
12<br />
1<br />
12<br />
33<br />
94<br />
2<br />
17<br />
1<br />
12<br />
33<br />
94<br />
2 17<br />
2<br />
99<br />
101<br />
16<br />
11<br />
22<br />
2<br />
99<br />
101<br />
16<br />
11 22<br />
3<br />
2<br />
0<br />
14<br />
99<br />
42<br />
3<br />
2<br />
0<br />
14<br />
99<br />
42<br />
4<br />
17<br />
5<br />
77<br />
7<br />
11<br />
4<br />
17<br />
5<br />
77<br />
7<br />
11<br />
. . .<br />
. . .<br />
Barbara König BeKo/TI 70<br />
Barbara König BeKo/TI 70
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Berechenbarkeit: Motivation<br />
Veranschaulichung: wir stellen F dadurch dar, indem wir zu jedem<br />
n die Funktion f n als Folge f n (0), f n (1), f n (2), . . . notieren.<br />
. . . und um eins erhöhen. Dadurch erhält man g.<br />
Berechenbarkeit: Motivation<br />
Veranschaulichung: wir stellen F dadurch dar, indem wir zu jedem<br />
n die Funktion f n als Folge f n (0), f n (1), f n (2), . . . notieren.<br />
Die Funktion g kann aber aufgrund dieser Konstruktion mit keiner<br />
der anderen Funktionen übereinstimmen.<br />
n<br />
0<br />
1<br />
2<br />
3<br />
4<br />
. . .<br />
f n (0) f n (1) f n (2) f n (3) f n (4) . . .<br />
8 20 33 0 12<br />
12 34 94 2 17<br />
99 101 17 11 22<br />
2 0 14 100 42<br />
17 5 77 7 12<br />
n<br />
0<br />
1<br />
2<br />
3<br />
4<br />
. . .<br />
f n (0) f n (1) f n (2) f n (3) f n (4) . . .<br />
8 20 33 0 12<br />
12 34 94 2 17<br />
99 101 17 11 22<br />
2 0 14 100 42<br />
17 5 77 7 12<br />
Diese Art von<br />
“selbstbezüglichen”<br />
Beweisen nennt man<br />
aufgrund ihrer<br />
Veranschaulichung<br />
durch solche<br />
Diagramme oft Diagonalisierungsbeweise.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turing-Berechenbarkeit<br />
Barbara König BeKo/TI 70<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turing-Berechenbarkeit<br />
Barbara König BeKo/TI 70<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Nach dem intuitiven Berechenbarkeitsbegriff beschäftigen wir uns<br />
nun mit dem formalen Berechenbarkeitsbegriff, zunächst basierend<br />
auf Turingmaschinen.<br />
Wir wissen bereits, was es bedeutet, dass eine Turingmaschine eine<br />
Sprache akzeptiert. Nun definieren wir, was es bedeutet, dass eine<br />
Turingmaschine eine Funktion berechnet.<br />
Turing-berechenbare Funktionen auf natürlichen Zahlen<br />
Eine Funktion f : N k 0 → N 0 heißt Turing-berechenbar, falls es eine<br />
(deterministische) Turingmaschine M = (Z, Σ, Γ, δ, z 0 , □, E) gibt,<br />
so dass für alle n 1 , . . . , n k , m ∈ N 0 gilt:<br />
f (n 1 , . . . , n k ) = m<br />
⇐⇒<br />
z 0 bin(n 1 )#bin(n 2 )# . . . #bin(n k ) ⊢ ∗ □ . . . □z e bin(m)□ . . . □<br />
wobei z e ∈ E.<br />
Dabei bezeichnet bin(n) die Binärdarstellung einer Zahl n ∈ N 0 .<br />
Barbara König BeKo/TI 71<br />
Barbara König BeKo/TI 72
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Turing-Berechenbarkeit<br />
Turing-Berechenbarkeit<br />
Intuition: wenn man die Zahlen n 1 , . . . , n k in Binärdarstellung –<br />
voneinander getrennt durch # – aufs Band schreibt, so berechnet<br />
die Turingmaschine daraus die Zahl f (n 1 , . . . , n k ) (möglicherweise<br />
umgeben von Leerzeichen) und geht in einen Endzustand über.<br />
Dabei muss der Kopf auf dem ersten Zeichen der Ausgabe stehen.<br />
Turing-berechenbare Funktionen auf Wörtern<br />
Eine Funktion f : Σ ∗ → Σ ∗ heißt Turing-berechenbar, falls es eine<br />
(deterministische) Turingmaschine M = (Z, Σ, Γ, δ, z 0 , □, E) gibt,<br />
so dass für alle x, y ∈ Σ ∗ gilt:<br />
wobe z e ∈ E.<br />
f (x) = y<br />
⇐⇒<br />
z 0 x ⊢ ∗ □ . . . □z e y□ . . . □,<br />
Intuition: wenn man das Wort x aufs Band schreibt, so berechnet<br />
die Turingmaschine daraus das Wort y (möglicherweise umgeben<br />
von Leerzeichen) und geht in einen Endzustand über.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turing-Berechenbarkeit<br />
Barbara König BeKo/TI 73<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Turing-Berechenbarkeit<br />
Barbara König BeKo/TI 74<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Was muss eine Turingmaschine tun, wenn der Funktionswert nicht<br />
definiert ist?<br />
Die beiden obigen Definitionen drücken aus, dass in diesem<br />
Fall nie eine Konfiguration wie oben beschrieben erreicht<br />
werden darf.<br />
Da die Maschine deterministisch ist, gibt es jedoch immer<br />
einen Nachfolgezustand.<br />
Das bedeutet, dass die Turingmaschine entweder nicht hält<br />
(d.h. keinen Endzustand erreicht) oder in einer inkorrekten<br />
Konfiguration hält (z.B. steht der Kopf nicht am Beginn der<br />
Ausgabe).<br />
Beispiele für Turing-berechenbare Funktionen:<br />
Beispiel 1: die Nachfolgerfunktion n ↦→ n + 1 ist<br />
Turing-berechenbar (siehe die im vorherigen Kapitel angegebene<br />
Turingmaschine, die auf Binärdarstellungen arbeitet).<br />
Beispiel 2: sei Ω die überall undefinierte Funktion. Diese ist auch<br />
Turing-berechenbar, durch eine Turingmaschine, die keinen<br />
Endzustand hat. Beispielsweise durch eine Turingmaschine mit der<br />
Übergangsregel<br />
δ(z 0 , a) = (z 0 , a, R) für alle a ∈ Γ.<br />
(Statt nach rechts kann die Turingmaschine alternativ auch nach<br />
links laufen oder auf dem Band stehenbleiben.)<br />
Barbara König BeKo/TI 75<br />
Barbara König BeKo/TI 76
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Turing-Berechenbarkeit<br />
Beispiel 3: gegeben sei eine Typ-0-Sprache L. Wir betrachten die<br />
sogenannte “halbe” charakteristische Funktion von L:<br />
χ L : Σ ∗ → {0, 1}<br />
{ 1 falls w ∈ L<br />
χ L (w) =<br />
undefiniert sonst<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mehrband-Turingmaschine<br />
Barbara König BeKo/TI 77<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Turing-Berechenbarkeit<br />
Idee für eine Turingmaschine, die χ L berechnet:<br />
Wir verwenden die Turingmaschine aus der Transformation<br />
“(Monotone) Grammatik → (linear beschränkte)<br />
Turingmaschine”.<br />
Wenn diese Turingmaschine in einen Endzustand übergehen<br />
sollte (da Startsymbol S erreicht und damit w ∈ L), dann<br />
überschreibt sie S mit 1 und geht in einen Endzustand über.<br />
In allen anderen Fällen (w ∉ L) muss die Turingmaschine<br />
nicht terminieren.<br />
Hierbei handelt es sich um eine nicht-deterministische<br />
Turingmaschine, da nicht-deterministisch die nächste,<br />
rückwärts anzuwendende, Produktion gewählt wird. Wegen<br />
der Äquivalenz von deterministischen und<br />
nicht-deterministischen Turingmaschinen könnte man sie auch<br />
in eine deterministische Turingmaschine umwandeln.<br />
Barbara König BeKo/TI 78<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mehrband-Turingmaschine<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Wir führen jetzt mehrere neue Berechnungsmodelle ein und zeigen,<br />
dass sie alle äquivalent zu Turingmaschinen sind. Das erste davon<br />
ist die sogenannte Mehrband-Turingmaschine.<br />
Mehrband-Turingmaschine<br />
Eine Mehrband-Turingmaschine besitzt k (k ≥ 1) Bänder mit<br />
k unabhängigen Köpfen, aber nur einen Zustand.<br />
Aussehen der Übergangsfunktion:<br />
δ : Z × Γ k → Z × Γ k × {L, R, N} k<br />
Mehrband-Turingmaschinen → Turingmaschinen<br />
Zu jeder Mehrband-Turingmaschine M gibt es eine<br />
(Einband-)Turingmaschine M ′ , die dieselbe Sprache akzeptiert<br />
bzw. dieselbe Funktion berechnet.<br />
(ein Zustand, k Bandsymbole, k Bewegungen)<br />
Die Ein- und Ausgabe stehen jeweils auf dem ersten Band. Zu<br />
Beginn sind die restlichen Bänder leer.<br />
Barbara König BeKo/TI 79<br />
Barbara König BeKo/TI 80
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Mehrband-Turingmaschine<br />
Beweisidee: wir beginnen mit der Darstellung einer typischen<br />
Konfiguration einer Mehrband-Turingmaschine<br />
Mehrband-Turingmaschine<br />
Simulation durch Einband-Turingmaschine durch Erweiterung des<br />
Alphabets<br />
Wir fassen die übereinanderliegenden Bandeinträge zu einem Feld<br />
zusammen<br />
M<br />
a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10<br />
b 1 b 2 b 3 b 4 b 5 b 6 b 7 b 8 b 9 b 10<br />
c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 c 10<br />
a 1 a 2 a 3 a 4 a 5 a 6 a 7<br />
M ′ b 1 b 2 b 3 b 4 b 5 b 6 b 7 b 8 b 9 b 10<br />
a 8 a 9 a 10<br />
♦ ♦ * ♦ ♦ ♦ ♦ ♦ ♦ ♦<br />
♦ ♦ ♦ ♦ ♦ ♦ ♦ * ♦ ♦<br />
c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 c 10<br />
♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦<br />
*<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mehrband-Turingmaschine<br />
Neues Bandalphabet:<br />
Bedeutung:<br />
Barbara König BeKo/TI 81<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Γ ′ = Γ ∪ (Γ ∪ {∗, ♦}) 2k<br />
Mit Hilfe von Symbolen aus Γ wird die Eingabe dargestellt.<br />
Diese wird dann in einem ersten Durchlauf in die<br />
“Mehrband-Kodierung” umgewandelt.<br />
Ein Alphabetsymbol der Form<br />
(a, ∗, b, ♦, c, ∗, . . . ) ∈ (Γ ∪ {∗, ♦}) 2k hat die Bedeutung:<br />
Entsprechende Felder sind mit a, b, c, . . . belegt,<br />
1. und 3. Kopf sind anwesend. (∗: Kopf anwesend, ♦: Kopf<br />
nicht anwesend)<br />
Barbara König BeKo/TI 83<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Mehrband-Turingmaschine<br />
Barbara König BeKo/TI 82<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Problem: Eine Einband-Turingmaschine hat nur einen Kopf und<br />
der kann nur an einer Stelle stehen Simulation eines Übergangs<br />
der Mehrband-Turingmaschine in mehreren Schritten.<br />
Simulation:<br />
Zu Beginn der Simulation eines Schritts steht der Kopf der<br />
Einband-Turingmaschine M ′ links von allen ∗-Markierungen.<br />
Dann läuft der Kopf nach rechts, überschreitet alle<br />
∗-Markierungen und merkt sich die unter jedem Kopf<br />
stehenden Zeichen. (Dazu benötigt man viele Zustände.)<br />
Sobald alle diese Zeichen bekannt sind, kann man mit Hilfe<br />
der δ-Funktion die notwendigen Aktionen bestimmen.<br />
Dann läuft der Kopf wieder zurück nach links und führt alle<br />
notwendigen Änderungen aus.<br />
Barbara König BeKo/TI 84
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-, While-, Goto-Berechenbarkeit<br />
Wir betrachten nun ein weiteres Berechnungsmodell, das im<br />
wesentlichen eine einfache Programmiersprache mit verschiedenen<br />
Konstrukten darstellt.<br />
Diese Programme haben Variablen, die mit natürlichen Zahlen<br />
belegt sind. Diesen Variablen dürfen arithmetische Ausdrücke<br />
(mit Konstanten, Variablen und Operatoren +, −) zugewiesen<br />
werden.<br />
Außerdem enthalten die Programme verschiedene<br />
Schleifenkonstrukte.<br />
Loop-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 85<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-, While-, Goto-Berechenbarkeit<br />
Insbesondere betrachten wir folgende Typen von Programmen:<br />
Loop-Programme<br />
Enthalten nur Loop- bzw. For-Schleifen, bei denen bereits bei<br />
Eintritt feststeht, wie oft sie durchlaufen werden.<br />
While-Programme<br />
Enthalten nur While-Schleifen mit einer immer wieder zu<br />
evaluierenden Abbruchbedingung.<br />
Goto-Programme<br />
Enthalten Gotos (unbedingte Sprünge) und<br />
If-Then-Else-Anweisungen.<br />
Wir interessieren uns vor allem für die Funktionen, die von solchen<br />
Programmen berechnet werden.<br />
Loop-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 86<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Syntaktische Komponenten für Loop-Programme<br />
Variablen: x 0 x 1 x 2 . . .<br />
Konstanten: 0 1 2 . . .<br />
Trennsymbole: ; :=<br />
Operatorsymbole: + −<br />
Schlüsselwörter: Loop Do End<br />
Induktive Syntax-Definition<br />
Ein Loop-Programm ist von der Form<br />
Wertzuweisung: x i := x j + c bzw. x i := x j − c<br />
(mit c ∈ N 0 )<br />
Sequentielle Komposition: P 1 ; P 2<br />
(wobei P 1 , P 2 Loop-Programme sind)<br />
Loop: Loop x i Do P End<br />
(wobei P ein Loop-Programm ist)<br />
Barbara König BeKo/TI 87<br />
Barbara König BeKo/TI 88
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-Programme<br />
(Informelle) Beschreibung der Semantik<br />
Ein Loop-Programm, das eine k-stellige Funktion berechnen<br />
soll, startet mit den Parametern in den Variablen x 1 , . . . , x k .<br />
Alle anderen Variablen haben den Startwert 0. Das Ergebnis<br />
liegt bei Terminierung in x 0 .<br />
Interpretation der Wertzuweisungen:<br />
x i := x j + c – wie üblich<br />
x i := x j − c – modifizierte Subtraktion, falls c > x j , so ist<br />
das Resultat gleich 0<br />
Sequentielle Komposition P 1 ; P 2 : erst P 1 , dann P 2 ausführen.<br />
Loop x i Do P End: das Programm P wird so oft<br />
ausgeführt, wie die Variable x i zu Beginn angibt.<br />
Loop-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 89<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-Programme können aber gewisse Programmkonstrukte<br />
simulieren, die in der Syntax nicht enthalten sind.<br />
Loop-Programme<br />
Loop-Berechenbarkeit (Definition)<br />
Eine Funktion f : N k 0 → N 0 heißt Loop-berechenbar, falls es ein<br />
Loop-Programm P gibt, das<br />
gestartet mit n 1 , . . . , n k ∈ N 0 in den Variablen x 1 , . . . , x k<br />
stoppt mit f (n 1 , . . . , n k ) in der Variablen x 0 .<br />
Alle Loop-Programme stoppen nach endlicher Zeit alle<br />
Loop-berechenbaren Funktionen sind total.<br />
Wir werden später zeigen, dass es aber sogar totale<br />
Turing-berechenbare Funktionen gibt, die nicht Loop-berechenbar<br />
sind.<br />
Loop-Berechenbarkeit ist schwächer als<br />
Turing-Berechenbarkeit!<br />
Loop-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 90<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-Programme können aber gewisse Programmkonstrukte<br />
simulieren, die in der Syntax nicht enthalten sind.<br />
If-Then-Else<br />
Simulation von If x = 0 Then A End<br />
Addition<br />
Simulation von x 0 := x 1 + x 2<br />
Barbara König BeKo/TI 91<br />
Barbara König BeKo/TI 91
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Loop-Programme<br />
Loop-Programme können aber gewisse Programmkonstrukte<br />
simulieren, die in der Syntax nicht enthalten sind.<br />
Multiplikation<br />
Simulation von x 0 := x 1 · x 2<br />
Wir werden im folgenden solche Konstrukte in Programmen verwenden.<br />
Wir nehmen dann an, dass sie – wie oben – geeignet simuliert<br />
werden.<br />
Analog: Ganzzahlige Division (x Div y) und Divisionsrest<br />
(x Mod y).<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
While-Programme<br />
Barbara König BeKo/TI 91<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
While-Programme<br />
Syntax und Semantik von While-Programmen<br />
Statt Loop-Schleifen verwenden wir While-Schleifen der Form<br />
While x i ≠ 0 Do P End<br />
Programm P wird so lange ausgeführt bis der Wert von x i gleich 0<br />
ist.<br />
Eine Loop-Schleife<br />
Loop x Do P End<br />
kann simuliert werden durch<br />
y := x;<br />
While y ≠ 0 Do y := y − 1; P End<br />
Wichtig: dabei ist y eine neue Variable, die insbesondere in P nicht<br />
vorkommt.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
While-Programme<br />
Barbara König BeKo/TI 92<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
While-Berechenbarkeit (Definition)<br />
Eine Funktion f : N k 0 → N 0 heißt While-berechenbar, falls es ein<br />
While-Programm P gibt, das<br />
gestartet mit n 1 , . . . , n k ∈ N 0 in den Variablen x 1 , . . . , x k<br />
stoppt mit f (n 1 , . . . , n k ) in der Variablen x 0 , falls<br />
f (n 1 , . . . , n k ) definiert ist.<br />
Ansonsten terminiert P nicht.<br />
While-Programme → Turingmaschinen<br />
Jede While-berechenbare Funktion ist auch Turing-berechenbar.<br />
Anders ausgedrückt: Turingmaschinen können While-Programme<br />
simulieren.<br />
Barbara König BeKo/TI 93<br />
Barbara König BeKo/TI 94
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
While-Programme<br />
While-Programme<br />
Beweisidee:<br />
Wir verwenden eine Mehrband-Turingmaschine, bei der auf<br />
jedem Band eine andere Variable in Binärdarstellung<br />
gespeichert wird.<br />
k Variablen k Bänder<br />
x i := x j + c kann von der Turingmaschine durchgeführt<br />
werden, indem die Inkrementierungsfunktion (+1) c-mal<br />
ausgeführt wird.<br />
x i := x j − c funktioniert ähnlich.<br />
Sequentielle Komposition P 1 ; P 2 : wir bestimmen<br />
Turingmaschinen M 1 , M 2 für P 1 , P 2 .<br />
Diese modifizieren wir wie folgt zu einer Turingmaschine für<br />
P 1 ; P 2 :<br />
Vereinigung der Zustandsmengen, Bandalphabete und<br />
Übergangsfunktionen<br />
Anfangszustand ist Anfangszustand von M 1 . Endzustände<br />
sind Endzustände von M 2 .<br />
Statt in einen Endzustand von M 1 wird ein Übergang in<br />
den Anfangszustand von M 2 gemacht. (Vergleiche mit<br />
der Konkatenationskonstruktion für endliche Automaten.)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
While-Programme<br />
Barbara König BeKo/TI 95<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 96<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
While-Schleife While x i ≠ 0 Do P End: Bestimme<br />
zunächst eine Turingmaschine M für P.<br />
Modifiziere M wie folgt:<br />
Im neuen Anfangszustand wird zunächst überprüft,<br />
ob 0 auf dem i-ten Band steht.<br />
Falls ja: Übergang in Endzustand<br />
Falls nein: M wird ausgeführt<br />
Statt Übergang in Endzustand: Übergang in den<br />
neuen Anfangszustand.<br />
Syntax von Goto-Programmen<br />
Mögliche Anweisungen für Goto-Programme:<br />
Wertzuweisung: x i := x j + c bzw. x i := x j − c (mit c ∈ N 0 )<br />
Unbedingter Sprung: Goto M i<br />
Bedingter Sprung: If x i = c Then Goto M i<br />
Stopanweisung: Halt<br />
Ein Goto-Programm besteht aus einer Folge von Anweisungen<br />
A i , vor denen sich jeweils eine (Sprung-)Marke M i befindet.<br />
M 1 : A 1 ; M 2 : A 2 ; . . . ; M k : A k<br />
(Wenn Marken nicht angesprungen werden, werden wir sie<br />
manchmal einfach weglassen.)<br />
Barbara König BeKo/TI 97<br />
Barbara König BeKo/TI 98
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Goto-Programme<br />
Semantik von Goto-Programmen<br />
If-Anweisungen werden wie üblich interpretiert.<br />
Goto M springt an die entsprechende Marke des Programms.<br />
Halt-Anweisungen beenden Goto-Programme. (Die letzte<br />
Anweisung eines Programms sollte ein Halt oder ein<br />
unbedingter Sprung sein.)<br />
Wie While-Programme können auch Goto-Programme in<br />
unendliche Schleifen geraten.<br />
Goto-berechenbare Funktionen sind analog zu<br />
While-berechenbaren Funktionen definiert.<br />
While-Programme → Goto-Programme<br />
Jedes While-Programm kann durch ein Goto-Programm<br />
simuliert werden. Das heißt, jede While-berechenbare Funktion<br />
ist Goto-berechenbar.<br />
Eine While-Schleife<br />
While x ≠ 0 Do P End<br />
kann simuliert werden durch<br />
M 1 : If x = 0 Then Goto M 2 ;<br />
P;<br />
Goto M 1 ;<br />
M 2 : . . .<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 99<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 100<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Auch die – nicht ganz so offensichtliche – Umkehrung gilt:<br />
Goto-Programme → While-Programme<br />
Jedes Goto-Programm kann durch ein While-Programm<br />
simuliert werden. Das heißt, jede Goto-berechenbare Funktion ist<br />
While-berechenbar.<br />
Das ist einer der Gründe dafür, warum in modernen<br />
Programmiersprachen im allgemeinen keine Gotos verwendet<br />
werden.<br />
Weitere Gründe:<br />
Edsger W. Dijkstra: “Go To Statement Considered Harmful”<br />
(1968)<br />
(siehe http://www.acm.org/classics/oct95/)<br />
Spaghetti-Code bei Verwendung von Gotos<br />
Barbara König BeKo/TI 101<br />
Die Simulation von Goto-Programmen durch While-Programme<br />
verwendet nur eine While-Schleife.<br />
Das bedeutet: ein While-Programm kann durch Umwandlung in<br />
ein Goto-Programm und Zurückumwandlung in ein äquivalentes<br />
While-Programm mit einer While-Schleife umgewandelt werden.<br />
Dabei muss man allerdings annehmen, dass die Sprache auch<br />
If-Anweisungen zur Verfügung stellt.<br />
(Kleenesche Normalform für While-Programme)<br />
Barbara König BeKo/TI 102
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Goto-Programme<br />
Welche Transformationen haben wir bisher durchgeführt?<br />
Goto While TM<br />
Loop<br />
Um die Äquivalenz von Goto-, While- und<br />
Turing-Berechenbarkeit zu zeigen, fehlt uns noch die Richtung<br />
TM → Goto-Programme<br />
Jede Turingmaschine kann durch ein Goto-Programm simuliert<br />
werden. Das heißt, jede Turing-berechenbare Funktion ist<br />
Goto-berechenbar.<br />
TM → Goto<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 103<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 104<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Beweisidee:<br />
Sei k die Anzahl der Zustände und m die Anzahl der Bandsymbole<br />
der Turingmaschine.<br />
Eine Konfiguration a 1 . . . a p zb 1 . . . b q wird in drei Variablen x 1 , x 2 ,<br />
x 3 gespeichert. Dabei enthält:<br />
x 1 den Bandinhalt vor dem Kopf, dabei wird a 1 . . . a p als Zahl<br />
zur Basis b = m + 1 interpretiert. Also:<br />
x 1 =<br />
p∑<br />
pos(a i ) · b p−i ,<br />
i=1<br />
wobei pos(a i ) die Position des Bandsymbols a i im<br />
Bandalphabet ist (Bandsymbole sind von 1 bis m<br />
durchnummeriert).<br />
Barbara König BeKo/TI 105<br />
x 2 den Bandinhalt ab dem Kopf, dabei wird b q . . . b 1 (in<br />
umgekehrter Reihenfolge!) als Zahl zur Basis b interpretiert.<br />
x 3 ist eine Zahl zwischen 1 und k und repräsentiert den<br />
aktuellen Zustand.<br />
Barbara König BeKo/TI 106
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Goto-Programme<br />
Simulation von Turingmaschinenoperationen:<br />
Kopf liest Zeichen: y := x 2 Mod b<br />
Zeichen a j aufs Band schreiben: x 2 := (x 2 Div b) · b + j<br />
(falls a j das j-te Bandsymbol ist)<br />
Kopf nach links: x 2 := x 2 · b + (x 1 Mod b); x 1 := x 1 Div b<br />
Kopf nach rechts: x 1 := x 1 · b + (x 2 Mod b); x 2 := x 2 Div b<br />
Das zu erstellende Goto-Programm besteht nun aus folgenden<br />
drei Programmteilen:<br />
1. Teil: Die in den Variablen befindlichen Parameter werden<br />
in Binärdarstellung transformiert und es wird eine<br />
Darstellung der Startkonfiguration mit Hilfe von x 1 ,<br />
x 2 , x 3 erzeugt.<br />
2. Teil: Die Turingmaschinenberechnung wird durch<br />
Manipulation von x 1 , x 2 , x 3 simuliert.<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 107<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Goto-Programme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 108<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schema:<br />
M 2 : y := x 2 Mod b; (Zeichen einlesen)<br />
If (x 3 = 1) And (y = 1) Then Goto M 1,1 ;<br />
If (x 3 = 1) And (y = 2) Then Goto M 1,2 ;<br />
. . .<br />
M 1,1 : P 1,1 ; (Aktion δ(z 1 , a 1 ) ausführen)<br />
Goto M 2 ;<br />
M 1,2 : P 1,2 ; (Aktion δ(z 1 , a 2 ) ausführen)<br />
Goto M 2 ;<br />
. . .<br />
Im Programmteil P i,j wird die durch δ(z i , a j )<br />
beschriebene Aktion ausgeführt, wobei z i der i-te<br />
Zustand und a j das j-te Bandsymbol ist.<br />
Dabei wird – wie oben beschrieben – das Zeichen,<br />
auf dem der Kopf steht, überschrieben und bei<br />
Bedarf ein Schritt nach links oder rechts ausgeführt.<br />
3. Teil: Die Endkonfiguration gespeichert in x 1 , x 2 , x 3 wird in<br />
die eigentliche Ausgabe in der Variablen x 0 überführt.<br />
Bemerkung: Nur der 2. Teil hängt von der Überführungsfunktion δ<br />
ab.<br />
Barbara König BeKo/TI 109<br />
Barbara König BeKo/TI 110
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Loop-, While- und Goto-Programme sind vereinfachte<br />
imperative Programme und stehen für imperative<br />
Programmiersprachen, bei denen Programme als Folgen von<br />
Befehlen aufgefaßt werden.<br />
Parallel dazu gibt es jedoch auch funktionale Programme, deren<br />
Hauptbestandteil die Definition rekursiver Funktionen ist. Es gibt<br />
auch Berechnungsbegriffe, die sich eher an funktionalen<br />
Programmen orientieren.<br />
Zum Beispiel:<br />
λ-Kalkül (Alonzo Church, 1932)<br />
µ-rekursive und primitiv rekursive Funktionen (werden hier in<br />
der Vorlesung betrachtet)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 111<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Primitiv rekursive Funktionen (Definition, Fortsetzung)<br />
Jede Funktion f , die durch primitive Rekursion aus primitiv<br />
rekursiven Funktionen entsteht ist primitiv rekursiv.<br />
Das heißt f : N k+1<br />
0<br />
→ N 0 muss folgende Gleichungen erfüllen<br />
(für primitiv rekursive Funktionen g : N k 0 → N 0,<br />
h : N k+2<br />
0<br />
→ N 0 ):<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Wir definieren nun Klassen von Funktionen der Form f : N k 0 → N 0.<br />
Primitiv rekursive Funktionen (Definition)<br />
Die Klasse der primitiv rekursiven Funktionen ist induktiv wie folgt<br />
definiert:<br />
Alle konstanten Funktionen der Form c : N 0 → N 0 mit<br />
c(n) = m (für ein festes m ∈ N 0 ) sind primitiv rekursiv.<br />
(Auch 0-stellige konstante Funktionen sind zugelassen.)<br />
Alle Projektionen der Form π k i<br />
: N k 0 → N 0 mit<br />
π k i (n 1, . . . , n k ) = n i sind primitiv rekursiv.<br />
Die Nachfolgerfunktion s : N 0 → N 0 mit s(n) = n + 1 ist<br />
primitiv rekursiv.<br />
Jede Funktion, die durch Einsetzung/Komposition von<br />
primitiv rekursiven Funktionen entsteht, ist primitiv rekursiv.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 112<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Beispiele für primitiv rekursive Funktionen:<br />
Additionsfunktion<br />
Die Funktion add : N 2 0 → N 0 mit add(n, m) = n + m ist primitiv<br />
rekursiv.<br />
f (0, n 1 , . . . , n k ) = g(n 1 , . . . , n k )<br />
f (n + 1, n 1 , . . . , n k ) = h(f (n, n 1 , . . . , n k ), n, n 1 , . . . , n k )<br />
Anschaulich: bei primitiver Rekursion wird die Definition von<br />
f (n + 1, . . . ) zurückgeführt auf f (n, . . . ). Das bedeutet, dass<br />
primitive Rekursion immer terminiert.<br />
Berechnungsmodell analog zu Loop-Programmen.<br />
Barbara König BeKo/TI 113<br />
Barbara König BeKo/TI 114
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Beispiele für primitiv rekursive Funktionen:<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Beispiele für primitiv rekursive Funktionen:<br />
Multiplikationsfunktion<br />
Die Funktion mult : N 2 0 → N 0 mit mult(n, m) = n · m ist primitiv<br />
rekursiv.<br />
Dekrementierung<br />
Die Funktion dec : N 0 → N 0 mit dec(n) = n − 1 (modifizierte<br />
Subtraktion) ist primitiv rekursiv.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 114<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 114<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Primitiv rekursive Funktionen ↔ Loop-berechenbare Funktionen<br />
Die Klasse der primitiv rekursiven Funktionen stimmt genau mit<br />
der Klasse der Loop-berechenbaren Funktionen überein.<br />
(Ohne Beweis)<br />
Wir definieren nun ein weitere Klasse, die gleichmächtig zu<br />
While-Programmen, Goto-Programmen und Turingmaschinen<br />
ist.<br />
µ-rekursive Funktionen (Definition)<br />
Die µ-rekursiven Funktionen verwenden die gleichen<br />
Basisfunktionen (konstante Funktionen, Projektionen,<br />
Nachfolgerfunktion) und Operatoren (Einsetzung, primitive<br />
Rekursion) wie primitiv rekursive Funktionen.<br />
Zusätzlich darf noch der µ-Operator verwendet werden.<br />
Barbara König BeKo/TI 115<br />
Barbara König BeKo/TI 116
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
µ-rekursive Funktionen (Definition, Fortsetzung)<br />
Der µ-Operator verwandelt eine Funktion f : N k+1<br />
0<br />
→ N 0 in eine<br />
Funktion µf : N k 0 → N 0 mit<br />
µf (x 1 , . . . , x k ) = min{n | f (n, x 1 , . . . , x k ) = 0<br />
Dabei gilt min ∅ = undefiniert.<br />
und für alle m < n ist f (m, x 1 , . . . , x k )<br />
definiert}<br />
Intuitive Berechnung von µf (x 1 , . . . , x k ):<br />
Berechne f (0, x 1 , . . . , x k ), f (1, x 1 , . . . , x k ), . . .<br />
Falls für ein n gilt f (n, x 1 , . . . , x k ) = 0, so gib n als<br />
Funktionswert zurück.<br />
Falls f (m, x 1 , . . . , x k ) undefiniert ist (ohne, dass vorher einmal<br />
der Funktionswert gleich 0 war), oder der Funktionswert 0 nie<br />
erreicht wird: die intuitive Berechnung terminiert nicht.<br />
In diesem Fall gilt auch µf (x 1 , . . . , x k ) = min ∅ = undefiniert.<br />
Analogie zu While-Programmen: es ist nicht klar, ob die<br />
Abbruchbedingung jemals erfüllt wird.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 117<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Durch den µ-Operator können nun auch echt partielle Funktionen<br />
erzeugt werden.<br />
Überall undefinierte Funktion<br />
Die Funktion Ω: N 0 → N 0 mit Ω(n) = undefiniert für alle n ∈ N 0<br />
ist µ-rekursiv.<br />
Verwende die 2-stellige Funktion f : N 2 0 → N 0 mit f (x, y) = 1 für<br />
alle x, y. Es gilt f = k ◦ π1 2 , wobei k die konstante 1-stellige<br />
Funktion ist, die alles auf 1 abbildet.<br />
Dann gilt Ω = µf .<br />
Barbara König BeKo/TI 119<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 118<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Weiteres Beispiel:<br />
Wurzelfunktion<br />
Die Funktion sqrt : N 0 → N 0 mit sqrt(n) = ⌈ √ n⌉ ist µ-rekursiv.<br />
(Dabei rundet ⌈. . . ⌉ eine reelle Zahl auf die nächstgrößere (oder<br />
gleiche) ganze Zahl auf.)<br />
Sei f (m, n) = n − m · m. (Die Multiplikationsfunktion ist primitiv<br />
rekursiv und die Subtraktionsfunktion kann durch iterierte<br />
Anwendung der Dekrementierungsfunktion erhalten werden.)<br />
Dann gilt sqrt = µf .<br />
Diese Funktion ist jedoch auch primitiv rekursiv. Intuition: bei<br />
Berechnung von sqrt(n) sind immer höchstens n Iterationen<br />
notwendig.)<br />
Barbara König BeKo/TI 120
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Die Klasse der µ-rekursiven Funktionen stimmt genau mit der<br />
Klasse der While-(Goto-, Turing-)berechenbaren Funktionen<br />
überein.<br />
(Ohne Beweis)<br />
Totale, nicht Loop-berechenbare Funktionen<br />
Es gibt totale (Turing-)berechenbare Funktionen, die nicht<br />
Loop-berechenbar sind.<br />
Wir zeigen die Existenz solcher Funktionen durch einen<br />
Diagonalisierungsbeweis.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 121<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 122<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Diagonalisierungsbeweis:<br />
1. Schritt: Wir sehen Loop-Programme als Wörter über einem<br />
endlichen Alphabet Σ (bestehend aus den Zeichen :=, +, −,<br />
Loop, x 0 , x 1 , . . . ) an. Damit kann man sie der Länge nach und<br />
alphabetisch anordnen und erhält eine Aufzählung aller<br />
Loop-Programme.<br />
2. Schritt: Die Funktion p, die einer natürlichen Zahl n das n-te<br />
Loop-Programm in dieser Aufzählung zuordnet, ist berechenbar.<br />
Beispielsweise kann man nacheinander alle Wörter aus Σ ∗<br />
alphabetisch geordnet aufzählen, überprüfen, ob sie gültige<br />
Loop-Programme sind und das n-te gültige Programm ausgeben.<br />
3. Schritt: Wir definieren eine Funktion g : N 0 → N 0 , deren<br />
Funktionswert bei Eingabe von n folgendermaßen bestimmt wird:<br />
Das Loop-Programm P = p(n) wird mit n als Eingabe, d.h.,<br />
n in der Variablen x 1 , alle anderen Variablen mit 0 belegt,<br />
gestartet.<br />
Der bei Terminierung in der Variablen x 0 befindliche Wert<br />
wird um eins inkrementiert und ist dann der Funktionswert<br />
g(n). Das heißt g(n) = P(n) + 1 (wobei P(n) der Wert in x 0<br />
bei Terminierung ist).<br />
Diese Funktion ist (Turing-)berechenbar und da jedes<br />
Loop-Programm terminiert, ist sie auch total.<br />
Barbara König BeKo/TI 123<br />
Barbara König BeKo/TI 124
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
4. Schritt: Wir zeigen nun, dass g nicht Loop-berechenbar sein<br />
kann. Angenommen, es gibt ein Loop-Programm P, das g<br />
berechnet. Sei i der Index von P in der Aufzählung, d.h., P = p(i).<br />
Es gilt aufgrund der Wahl von P und der Definition von g:<br />
Das ist jedoch ein Widerspruch!<br />
P(i) = g(i) = P(i) + 1<br />
Bemerkung:<br />
Dieser Beweis funktioniert auch für jedes andere<br />
Berechnungsmodell, das nur totale Funktionen berechnet und<br />
dessen syntaktisch korrekte Programme/Maschinen systematisch<br />
aufgezählt werden können. (Man sagt auch, dass die Menge der<br />
Programme rekursiv aufzählbar ist, dazu später mehr).<br />
D.h., es ist nicht möglich, ein sinnvolles Berechnungsmodell zu<br />
definieren, das genau die totalen berechenbaren Funktionen<br />
beschreibt.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 125<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 126<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Ein klassisches Beispiel für eine totale<br />
Turing-berechenbare/µ-rekursive Funktion, die jedoch nicht<br />
primitiv rekursiv ist, ist die sogenannte Ackermannfunktion.<br />
Ackermannfunktion a: N 2 0 → N 0<br />
a(0, y) = y + 1<br />
a(x, 0) = a(x − 1, 1), falls x > 0<br />
a(x, y) = a(x − 1, a(x, y − 1)), falls x, y > 0<br />
Diese Funktion ist Turing-berechenbar und man kann auch<br />
nachweisen, dass sie immer einen definierten Wert zurückgibt<br />
(d.h., die Rekursion terminiert). Daher ist diese Funktion total.<br />
Wertetabelle der Ackermannfunktion für kleine Werte:<br />
y = 0 1 2 3 4 . . . a(x, y)<br />
x = 0 1 2 3 4 5 . . . y + 1<br />
x = 1 2 3 4 5 6 . . . y + 2<br />
x = 2 3 5 7 9 11 . . . 2y + 3<br />
x = 3 5 13 29 61 125 . . . 2 y+3 − 3<br />
x = 4 13 65533 > 10 19727 . .2<br />
2.<br />
2} {{ } −3<br />
y + 3 Zweier<br />
. . .<br />
Barbara König BeKo/TI 127<br />
Barbara König BeKo/TI 128
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Primitiv rekursive und µ-rekursive Funktionen<br />
Unentscheidbarkeit<br />
Ackermannfunktion (Satz)<br />
Die Ackermannfunktion ist Turing-berechenbar, aber nicht primitiv<br />
rekursiv bzw. nicht Loop-berechenbar.<br />
(Ohne Beweis)<br />
Intuition:<br />
1 Die Ackermannfunktion ist intuitiv berechenbar und damit<br />
auch Turing-berechenbar.<br />
2 Die Ackermannfunktion wächst stärker als jede primitiv<br />
rekursive Funktion.<br />
Worum geht es in diesem Abschnitt?<br />
Zunächst einmal definieren wir formal den Begriff<br />
Entscheidbarkeit. Was bedeutet es überhaupt, dass ein<br />
Problem entscheidbar ist?<br />
Dann kommen wir zum Begriff Semi-Entscheidbarkeit. Hier<br />
wird erlaubt, dass das Entscheidungsverfahren bei einer<br />
negativen Antwort nicht terminiert und keine Antwort liefert.<br />
Anschließend geht es um negative Resultate: wie kann man<br />
zeigen, dass ein Problem nicht entscheidbar ist?<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 129<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 130<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit (Definition)<br />
Eine Sprache A ⊆ Σ ∗ heißt entscheidbar, falls die charakteristische<br />
Funktion von A, nämlich χ A : Σ ∗ → {0, 1} mit<br />
{ 1 falls w ∈ A<br />
χ A (w) =<br />
0 falls w ∉ A<br />
berechenbar ist.<br />
Eine Sprache, die nicht entscheidbar ist, heißt unentscheidbar.<br />
Intuitiv: eine Sprache A ist entscheidbar, wenn es eine Maschine<br />
M A gibt, die sich bei Eingabe von w ∈ Σ ∗ folgendermaßen verhält:<br />
w M A<br />
Ja (Ausgabe 1, falls w ∈ A)<br />
Nein (Ausgabe 0, falls w ∉ A)<br />
Bei jeder Eingabe rechnet die Maschine endliche Zeit und gibt<br />
dann entweder “Ja” (falls w ∈ A) oder “Nein” (falls w ∉ A) aus.<br />
Barbara König BeKo/TI 131<br />
Barbara König BeKo/TI 132
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Bei Semi-Entscheidbarkeit erlaubt man, dass die charakteristische<br />
Funktion im negativen Fall undefiniert ist. Bei konkreten<br />
Berechnungsmodellen entspricht das der Nicht-Terminierung.<br />
Semi-Entscheidbarkeit (Definition)<br />
Eine Sprache A ⊆ Σ ∗ heißt semi-entscheidbar, falls die “halbe”<br />
charakteristische Funktion von A, nämlich χ ′ A : Σ∗ → {0, 1} mit<br />
berechenbar ist.<br />
Entscheidbarkeit<br />
{<br />
χ ′ 1<br />
A (w) = undefiniert<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
falls w ∈ A<br />
falls w ∉ A<br />
Barbara König BeKo/TI 133<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Semi-Entscheidbarkeit und Chomsky-0-Sprachen<br />
Eine Sprache A ist semi-entscheidbar genau dann, wenn sie vom<br />
Typ-0 ist.<br />
Beweisidee: Die Chomsky-0-Sprachen sind genau die Sprachen, die<br />
von einer Turingmaschine akzeptiert werden.<br />
Turingmaschinen, die eine “halbe” charakteristische Funktion<br />
berechnen, akzeptieren auch die entsprechende Sprache, da sie<br />
nach Schreiben der 1 in einen Endzustand übergehen.<br />
Eine (deterministische) Turingmaschine, die eine Sprache<br />
akzeptiert, kann leicht in eine Turingmaschine umgewandelt<br />
werden, die die “halbe” charakteristische Funktion berechnet,<br />
indem sie beim Übergang in einen Endzustand das Band löscht<br />
und eine 1 schreibt.<br />
Barbara König BeKo/TI 135<br />
Entscheidbarkeit<br />
Intuitiv: eine Sprache A ist semi-entscheidbar, wenn es eine<br />
Maschine M A gibt, die sich bei Eingabe von w ∈ Σ ∗<br />
folgendermaßen verhält:<br />
w M A<br />
Ja (Ausgabe 1, falls w ∈ A)<br />
??? (Nicht-Terminierung, falls w ∉ A)<br />
Bei jeder Eingabe rechnet die Maschine und gibt – falls w ∈ A gilt<br />
– nach endlicher Zeit “Ja” aus. Falls w ∉ A gilt, so terminiert die<br />
Maschine nie.<br />
Das heißt, man kann sich nie sicher sein, ob nicht doch irgendwann<br />
“Ja” ausgegeben wird, da die Antwortzeit der Maschine nicht<br />
beschränkt ist.<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Zur Erinnerung: die Chomsky-Hierarchie<br />
Barbara König BeKo/TI 134<br />
Menge aller Sprachen<br />
Typ-2-Sprachen<br />
kontextfreie Sprachen<br />
Typ-3-Sprachen<br />
reguläre Sprachen<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Typ-0-Sprachen<br />
semi-entscheidbare Sprachen<br />
Typ-1-Sprachen<br />
kontextsensitive Sprachen<br />
Barbara König BeKo/TI 136
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Bemerkungen:<br />
Im Zusammenhang mit Fragestellungen der Entscheidbarkeit<br />
werden Sprachen oft auch als Probleme bezeichnet.<br />
Auch wenn charakteristische Funktionen Wörter als<br />
Argumente haben, kann man sie leicht als Funktionen über<br />
natürlichen Zahlen auffassen und so mit While- bzw.<br />
Goto-Programmen berechnen. Jedes Wort aus Σ ∗ kann als<br />
Zahl zur Basis b aufgefasst werden, wobei b > |Σ|.<br />
(Siehe auch die Umwandlung “Turingmaschinen →<br />
Goto-Programme”.)<br />
Außerdem: Wir werden als Probleme im folgenden auch<br />
Teilmengen von N 0 bzw. N k 0 betrachten. Denn jede natürliche<br />
Zahl kann in Binärkodierung als Wort über Σ = {0, 1}<br />
betrachtet werden.<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 137<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des allgemeinen Wortproblems (Satz)<br />
Falls es eine Grammatik G gibt, für die das (spezielle)<br />
Wortproblem L(G) unentscheidbar ist, so ist auch das allgemeine<br />
Wortproblem unentscheidbar.<br />
Beweis: Sei G eine Grammatik, für die das Wortproblem L(G)<br />
unentscheidbar ist. Falls das allgemeine Wortproblem A<br />
entscheidbar wäre, so wäre auch L(G) entscheidbar. Für ein<br />
gegebenes Wort w müßte man dann nur überprüfen, ob<br />
(w, G) ∈ A gilt. Widerspruch!<br />
Barbara König BeKo/TI 139<br />
Entscheidbarkeit<br />
Typische Beispiele für Probleme:<br />
Beispiel 1: das (spezielle) Wortproblem<br />
Gegeben sei eine feste Chomsky-Grammatik G und das Problem sei<br />
A = L(G). Wir wissen bereits, dass A entscheidbar ist, falls G eine<br />
Chomsky-1-Grammatik ist. Außerdem gibt es Grammatiken, für die<br />
L(G) nicht entscheidbar ist (noch ohne Beweis).<br />
Beispiel 2: das allgemeine Wortproblem<br />
Das allgemeine Wortproblem ist die Menge<br />
A = {(w, G) | w ∈ L(G), G Chomsky-Grammatik über<br />
dem Alphabet Σ},<br />
wobei die Paare (w, G) geeignet als Zeichenketten kodiert werden<br />
müssen.<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 138<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Das heißt, aus einer Maschine zur Lösung des allgemeinen<br />
Wortproblems könnte man eine Maschine zur Lösung eines<br />
(speziellen) Wortproblems bauen. Da es letztere aber nicht für alle<br />
Grammatiken G gibt, kann es auch erstere nicht geben.<br />
w<br />
G<br />
Maschine für<br />
allgemeines<br />
Wortproblem<br />
Maschine für (spezielles) Wortproblem<br />
Ja<br />
Nein<br />
Argumentationen dieser Art (“wenn es ein Verfahren für A gibt,<br />
dann kann man daraus ein Verfahren für B konstruieren”)<br />
bezeichnet man als Reduktionen. Wir werden sie im folgenden<br />
häufiger anwenden.<br />
Barbara König BeKo/TI 140
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Entscheidbarkeit<br />
Beispiel 3: das Schnittproblem<br />
Das Schnittproblem für kontextfreie Grammatiken ist die Menge<br />
A = {(G 1 , G 2 ) | G 1 , G 2 kontextfreie Grammatiken<br />
L(G 1 ) ∩ L(G 2 ) = ∅},<br />
Entscheidbarkeit und Semi-Entscheidbarkeit (Satz)<br />
Eine Sprache A ist entscheidbar, wenn sowohl A als auch A (das<br />
Komplement von A) semi-entscheidbar sind.<br />
Das Schnittproblem ist unentscheidbar (noch ohne Beweis).<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 141<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 142<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Rekursive Aufzählbarkeit (Definition)<br />
Eine Sprache A ⊆ Σ ∗ heißt rekursiv aufzählbar, falls A = ∅ oder es<br />
gibt eine totale und berechenbare Funktion f : N 0 → Σ ∗ mit<br />
Bemerkungen:<br />
A = {f (n) | n ∈ N 0 } = {f (0), f (1), f (2), . . . }.<br />
Sprechweise: die Funktion f zählt die Sprache A auf.<br />
Äquivalente Definition von rekursiver Aufzählbarkeit: es gibt<br />
eine totale, berechenbare und surjektive Funktion f : N 0 → A.<br />
Abzählbarkeit: der mathematische Begriff der Abzählbarkeit<br />
ist ganz ähnlich definiert. Nur fordert man dort nicht, dass f<br />
berechenbar ist. Daraus folgt:<br />
A rekursiv aufzählbar ⇒ A abzählbar.<br />
Barbara König BeKo/TI 143<br />
Rekursive Aufzählbarkeit und Semi-Entscheidbarkeit (Satz)<br />
Eine Sprache A ist rekursiv aufzählbar, genau dann, wenn sie<br />
semi-entscheidbar ist.<br />
Barbara König BeKo/TI 144
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Entscheidbarkeit<br />
Rekursive Aufzählbarkeit → Semi-Entscheidbarkeit:<br />
Gegeben: rekursiv aufzählbare Sprache L ⊆ Σ ∗ , beschrieben<br />
durch eine Funktion f .<br />
Zu zeigen: es gibt eine Turingmaschine, die bestimmt, ob ein<br />
Wort w ∈ Σ ∗ in L liegt (und nicht terminiert, falls w nicht in<br />
L liegt).<br />
Lösung: Berechne f (0), f (1), f (2), . . . , solange bis w = f (i)<br />
für ein i gilt. In diesem Fall gibt die Turingmaschine 1 aus,<br />
ansonsten terminiert sie nicht.<br />
Semi-Entscheidbarkeit → Rekursive Aufzählbarkeit:<br />
Gegeben: semi-entscheidbare Sprache L ⊆ Σ ∗ , beschrieben<br />
durch eine Turingmaschine M, die die “halbe”<br />
charakteristische Funktion berechnet.<br />
Zu zeigen: es gibt eine weitere Turingmaschine, die eine<br />
Funktion f berechnet, wie sie in der Definition der rekursiven<br />
Aufzählbarkeit beschrieben ist.<br />
Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 145<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Lösung: Berechnung des Funktionswertes f (i).<br />
Verwende zwei Zähler, j und l, die zu Beginn beide auf 0<br />
gesetzt sind. Der Zähler l wird sukzessive erhöht und für<br />
jeden Wert von l wird folgendes durchgeführt:<br />
Simuliere die Maschine M l Schritte lang auf allen<br />
Wörtern der Länge kleiner gleich l.<br />
(Reihenfolge: zunächst Wörter der Länge 0, dann<br />
Länge 1, . . . , dann Länge l. Innerhalb von Wörtern<br />
der gleichen Länge wird die alphabetische Ordnung<br />
gewählt.)<br />
Für jedes Wort, bei dem der Wert 1 ausgegeben wird, wird der<br />
Zähler j um eins erhöht. Sobald i = j gilt, wird das nächste<br />
akzeptierte Wort als Funktionswert f (i) zurückgegeben.<br />
Barbara König BeKo/TI 147<br />
Entscheidbarkeit<br />
Begründung:<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 146<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Sei w ein Wort der Sprache L. Wir nehmen an, dass w die<br />
Länge n hat (|w| = n) und von M innerhalb von k Schritten<br />
akzeptiert wird.<br />
Dann wird w akzeptiert, wenn der Zähler l irgendwann<br />
max{n, k} erreicht. Daher gibt es einen Index i, bei dem w<br />
zurückgegeben wird.<br />
Bemerkung: es kann passieren, dass bestimmte Wörter mehrfach<br />
ausgegeben werden. Das ist nach Definition der rekursiven<br />
Aufzählbarkeit erlaubt.<br />
Barbara König BeKo/TI 148
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Entscheidbarkeit<br />
Halteproblem/Kodierung von Turingmaschinen<br />
Daraus ergibt sich, dass folgende Aussagen für eine Sprache A<br />
äquivalent sind.<br />
Semi-Entscheidbarkeit und äquivalente Begriffe<br />
A ist semi-entscheidbar.<br />
A ist rekursiv aufzählbar<br />
A ist vom Typ-0.<br />
A = T (M) für eine Turing-Maschine M.<br />
χ ′ A<br />
ist (Turing, While-, Goto-)berechenbar.<br />
Unser Ziel ist es nun zu zeigen, dass das sogenannte Halteproblem<br />
unentscheidbar ist.<br />
Halteproblem (informell)<br />
Eingabe: Turing-Maschine M mit Eingabe w.<br />
Ausgabe: Hält M auf w?<br />
Dazu werden wir jedoch zunächst genauer definieren, wie eine<br />
Turing-Maschine kodiert werden kann, um als Eingabe einer<br />
berechenbaren (charakteristischen) Funktion verwendet zu werden.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 149<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Halteproblem/Kodierung von Turingmaschinen<br />
Ziel: Kodierung von Turing-Maschinen über dem Alphabet {0, 1}.<br />
Annahme: alle Elemente von Γ (Bandalphabet) bzw. Z<br />
(Zustandsmenge) sind durchnummeriert<br />
Γ = {a 1 , . . . , a k }<br />
Z = {z 1 , . . . , z n }<br />
Die wichtigste Teil einer Turingmaschine ist die<br />
Überführungsfunktion. Diese kann folgendermaßen kodiert werden:<br />
Jeder δ-Regel der Form δ(z i , a j ) = (z i ′, a j ′, y) ordnen wir das Wort<br />
w ∈ {0, 1, #} ∗ zu, wobei<br />
w = ##bin(i)#bin(j)#bin(i ′ )#bin(j ′ )#bin(cod(y)).<br />
⎧<br />
⎨ 0 falls y = L<br />
Dabei ist cod(y) = 1 falls y = R<br />
⎩<br />
2 falls y = N<br />
Barbara König BeKo/TI 151<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 150<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Halteproblem/Kodierung von Turingmaschinen<br />
Die Konkatenation aller zu δ gehörenden Wörter (zusammen mit<br />
der Kodierung der restlichen Komponenten) ergibt eine Kodierung<br />
der Turingmaschine über dem Alphabet {0, 1, #}.<br />
Umwandlung in Kodierung über dem Alphabet {0, 1} durch<br />
folgende Ersetzungen:<br />
0 ↦→ 00<br />
1 ↦→ 01<br />
# ↦→ 11<br />
Bemerkungen: Viele der Festlegungen bei dieser Kodierung sind<br />
hochgradig willkürlich. Es gibt viele andere Möglichkeiten,<br />
Turing-Maschinen zu kodieren. Wichtig ist hier nur, dass es eine<br />
mögliche Kodierung gibt.<br />
Barbara König BeKo/TI 152
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Halteproblem/Kodierung von Turingmaschinen<br />
Dekodierung: Sei w ∈ {0, 1} ∗ und ̂M eine beliebige aber feste<br />
Turingmaschine. Mit M w bzeichnen wir die Turingmaschine, die<br />
die Kodierung w hat.<br />
Falls w nicht die Kodierung einer Turingmaschine ist, so setzen wir<br />
M w = ̂M. (Das ist erforderlich, damit die Dekodierungsfunktion<br />
total ist.)<br />
Halteproblem/Kodierung von Turingmaschinen<br />
Damit können wir nun zwei verschiedene Varianten des<br />
Halteproblems definieren.<br />
Halteproblem<br />
Das (allgemeine) Halteproblem ist die Sprache<br />
Spzielles Halteproblem<br />
H = {w#x | M w angesetzt auf x hält}.<br />
Das spezielle Halteproblem ist die Sprache<br />
K = {w | M w angesetzt auf w hält}.<br />
Man beachte die Selbstbezüglichkeit! Hier wird eine<br />
Turingmaschine auf ihre eigene Kodierung angesetzt.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 153<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des Halteproblems<br />
Unentscheidbarkeit des Halteproblems (Satz)<br />
Das spezielle Halteproblem K ist nicht entscheidbar.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 154<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des Halteproblems<br />
(Zum Widerspruch führende) Konstruktion der Turingmaschine M ′ :<br />
w<br />
M ′<br />
Endlosschleife (M ′ hält nicht)<br />
Ja (Ausgabe 1)<br />
TM M,<br />
die spez. Halteproblem<br />
löst<br />
Nein (Ausgabe 0)<br />
Ja (Ausgabe 1)<br />
(M ′ hält)<br />
Barbara König BeKo/TI 155<br />
Die Maschine M ′ erhält als Eingabe ihre eigene Kodierung w ′ .<br />
M ′ hält auf w ′ ⇒ M gibt bei Eingabe w ′ “Nein” aus ⇒ M ′ hält<br />
nicht auf w ′<br />
M ′ hält nicht auf w ′ ⇒ M gibt bei Eingabe w ′ “Ja” aus ⇒ M ′<br />
hält auf w ′ (Widerspruch!)<br />
Barbara König BeKo/TI 156
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des Halteproblems<br />
Es handelt sich hierbei um einen Diagonalisierungsbeweis. Diesen<br />
werden wir im folgenden veranschaulichen.<br />
Sei w 0 , w 1 , w 2 , . . . eine Aufzählung aller Wörter aus {0, 1} ∗ ,<br />
beispielsweise w 0 = ε, w 1 = 0, w 2 = 1, w 3 = 00, . . .<br />
Wir tragen in eine Tabelle folgendes ein: “Wie verhält sich M wi auf<br />
w j ?” Es gibt zwei Möglichkeiten: H (M wi hält) oder HN (M wi hält<br />
nicht).<br />
Unentscheidbarkeit des Halteproblems<br />
w<br />
M w 0 w 1 w 2 ...<br />
M w1 ... H ... ...<br />
M w0 H<br />
...<br />
...<br />
...<br />
...<br />
HN<br />
...<br />
...<br />
...<br />
M ′ = M w<br />
′<br />
HN HN H<br />
w ′<br />
?<br />
M w2<br />
Barbara König BeKo/TI 158<br />
...<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 157<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des Halteproblems<br />
Unentscheidbarkeit des Halteproblems<br />
Die konstruierte Turingmaschine M ′ und ein w ′ mit M ′ = M w ′ sind<br />
in die Tabelle eingetragen.<br />
Aufgrund der Konstruktion von M ′ : die Felder in der Diagonalen<br />
bedingen die Felder in der Zeile von M ′ .<br />
Problem: nichts passt an die Stelle des Fragezeichens!<br />
es kann keine Turingmaschine geben, die das Halteproblem löst.<br />
Semi-Entscheidbarkeit des speziellen Halteproblems (Satz)<br />
Das spezielle Halteproblem K ist semi-entscheidbar.<br />
Beweis: Berechne die “halbe” charakteristische Funktion<br />
χ ′ K : Σ∗ → {0, 1} wie folgt<br />
Bei Eingabe von w simuliere die Turingmaschine M w mit<br />
Eingabe w.<br />
Falls M w angesetzt auf w hält, so lösche das Band und<br />
schreibe 1.<br />
Ansonsten hält M w nicht und die Funktion χ ′ K<br />
ist an dieser<br />
Stelle undefiniert.<br />
Barbara König BeKo/TI 159<br />
Barbara König BeKo/TI 160
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit<br />
Ein Comic zu unentscheidbaren Probleme (aus Garey/Johnson:<br />
“Computers and Intractability”):<br />
Nicht so gut . . .<br />
Unentscheidbarkeit<br />
Besser . . .<br />
“I can’t find an efficient algorithm. I guess I’m just too dumb.”<br />
“I can’t find an efficient algorithm, because no such algorithm is<br />
possible.”<br />
Reduktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 161<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Reduktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 162<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Wir haben nun die Unentscheidbarkeit eines Problems, des<br />
speziellen Halteproblems, nachgewiesen. Daraus sollen weitere<br />
Unentscheidbarkeitsresultate gewonnen werden.<br />
Dies erfolgt mit Argumentationen folgender Art:<br />
1 Wenn man Problem B lösen könnte, dann könnte man auch A<br />
lösen. (Reduktionsschritt)<br />
2 Daraus folgt, dass B mindestens so schwierig bzw. mindestens<br />
so allgemein ist wie A. (A ≤ B)<br />
3 Wir wissen jedoch bereits, dass A unentscheidbar ist.<br />
4 Also muss das mindestens so schwierige Problem B auch<br />
unentscheidbar sein.<br />
Reduktion/Reduzierbarkeit (Definition)<br />
Gegeben seien Sprachen A ⊆ Σ ∗ , B ⊆ Γ ∗ . Dann heißt A auf B<br />
reduzierbar (in Zeichen A ≤ B), falls es eine totale und<br />
berechenbare Funktion f : Σ ∗ → Γ ∗ gibt, so dass für alle x ∈ Σ ∗<br />
gilt:<br />
x ∈ A ⇐⇒ f (x) ∈ B.<br />
Barbara König BeKo/TI 163<br />
Barbara König BeKo/TI 164
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Reduktionen<br />
Reduktionen<br />
Anschaulich: A ≤ B, falls man aus einer (hypothetischen)<br />
Maschine M B für B und einer berechenbaren Funktion f eine<br />
Maschine M A für A bauen kann. Das heißt, M B wird nach einer<br />
Vorverarbeitung der Eingabe durch f als Unterprozedur aufgerufen.<br />
Alternative Definition mit Hilfe der charakteristischen Funktionen:<br />
Für A ⊆ Σ ∗ , B ⊆ Γ ∗ gilt<br />
A ≤ B,<br />
w f<br />
f (w)<br />
M B<br />
M A<br />
Ja<br />
Nein<br />
falls es eine totale und berechenbare Funktion f : Σ ∗ → Γ ∗ gibt mit<br />
für alle x ∈ Σ ∗ .<br />
χ A (x) = χ B (f (x))<br />
Reduktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 165<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Reduktionen<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 166<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Reduktionen und Entscheidbarkeit<br />
Es sei A ≤ B.<br />
Falls B entscheidbar ist, dann ist auch A entscheidbar.<br />
Falls A unentscheidbar ist, dann ist auch B unentscheidbar.<br />
Kochrezept um die Unentscheidbarkeit eines Problems B zu zeigen<br />
Finde ein geeignetes Problem A, von dem bekannt ist, dass es<br />
unentscheidbar ist.<br />
(Bisher kennen wir nur das spezielle Halteproblem K, wir<br />
werden allerdings bald weitere geeignete Probleme<br />
kennenlernen.)<br />
Finde eine geeignete berechenbare Funktion f , mit Hilfe derer<br />
A auf B reduziert werden kann und beweise, dass sie korrekt<br />
ist.<br />
Dann folgt daraus unmittelbar, dass B unentscheidbar ist.<br />
Barbara König BeKo/TI 167<br />
Barbara König BeKo/TI 168
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unentscheidbarkeit des Halteproblems<br />
Unentscheidbarkeit des Halteproblems<br />
Unentscheidbarkeit des Halteproblems (Satz)<br />
Das (allgemeine) Halteproblem H ist nicht entscheidbar.<br />
Halteproblem auf leerem Band (Definition)<br />
Das Halteproblem auf leerem Band ist die Sprache<br />
H 0 = {w | M w hält angesetzt auf ein leeres Band}.<br />
Unentscheidbarkeit des Halteproblems auf leerem Band (Satz)<br />
Das Halteproblem auf leerem Band H 0 ist nicht entscheidbar.<br />
Satz von Rice<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 169<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Satz von Rice<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 170<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Das nächste Resultat zeigt, dass es unentscheidbar ist, ob die<br />
Funktion, die von einer Turingmaschine M berechnet wird, eine<br />
bestimmte Eigenschaft S hat.<br />
Das bedeutet, es gibt keine Methode, mit der man für alle<br />
Turingmaschinen verläßliche Aussagen über die von ihnen<br />
berechneten Funktionen machen kann.<br />
Satz von Rice<br />
Sei R die Klasse aller Turing-berechenbaren Funktionen und sei S<br />
eine beliebige Teilmenge hiervon (mit Ausnahme von S = ∅ und<br />
S = R).<br />
Dann ist die Sprache<br />
C(S) = {w | die von M w berechnete Funktion liegt in S}<br />
unentscheidbar.<br />
Barbara König BeKo/TI 171<br />
Barbara König BeKo/TI 172
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Satz von Rice<br />
Konsequenzen aus dem Satz von Rice: folgende Probleme sind<br />
unentscheidbar<br />
Konstante Funktion: {w | M w berechnet eine konstante Funktion}<br />
Identität: {w | M w berechnet die Identitätsfunktion}<br />
Totale Funktion: {w | M w berechnet eine totale Funktion}<br />
Überall undefinierte Funktion: {w | M w berechnet Ω}<br />
Dieses Unentscheidbarkeitsresultat bezieht sich jedoch nur auf die<br />
Eigenschaften der von einer Turingmaschine berechneten Funktion,<br />
nicht jedoch auf andere Eigenschaften einer Turingmaschine (wie<br />
beispielsweise die Anzahl ihrer Zustände oder das Bandalphabet).<br />
Satz von Rice<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 173<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Satz von Rice<br />
Der Satz von Rice und seine Varianten gelten natürlich auch für<br />
andere Berechnungsmodelle.<br />
Halteproblem für Goto-/While-Programme (Satz)<br />
Für ein gegebenes Goto-/While-Programm und Anfangswerte<br />
für die Variablen ist es nicht entscheidbar, ob das Programm auf<br />
dieser Eingabe hält.<br />
Beweisidee: Das Halteproblem für Turingmaschinen ist auf dieses<br />
Problem reduzierbar. Dazu muss nur die Turingmaschine in das<br />
entsprechende Goto-/While-Programm und die Eingabe der<br />
Maschine in die entsprechenden Variablenbelegungen übersetzt<br />
werden.<br />
(Transformation “Turingmaschine → Goto-Programm” als<br />
Funktion f .)<br />
Satz von Rice<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 174<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Es ist bereits folgendes Problem unentscheidbar:<br />
Halteproblem für Goto-Programme mit zwei Variablen (Satz)<br />
Für ein gegebenes Goto-Programm mit zwei Variablen, die beide<br />
mit 0 vorbelegt sind, ist es nicht entscheidbar, ob das Programm<br />
hält.<br />
(Ohne Beweis)<br />
Für Goto-Programme mit nur einer Variablen ist das<br />
Halteproblem übrigens entscheidbar, denn eine Variable kann durch<br />
einen Kellerautomaten simuliert werden.<br />
Konsequenz des Satzes von Rice auf die Verifikation von<br />
Programmen: Kein Programm kann automatisch die Korrektheit<br />
von Software überprüfen.<br />
Die Lage ist jedoch keineswegs hoffnungslos und es gibt<br />
verschiedene Möglichkeiten:<br />
Testen<br />
Mich interessiert nicht die vollständige Korrektheit von Software,<br />
mir reicht es aus, zu wissen, dass das Programm mit einer (relativ)<br />
hohen Wahrscheinlichkeit fehlerfrei ist.<br />
Testen: Finden/Erzeugen von Testfällen und Überprüfung des<br />
korrekten Verhaltens des Programms auf diesen Testfällen.<br />
Barbara König BeKo/TI 175<br />
Barbara König BeKo/TI 176
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Satz von Rice<br />
Satz von Rice<br />
Analyse durch Approximation<br />
Ich will ein automatisches Verfahren, das Antworten der Form “ja”,<br />
“nein” und “ich weiss nicht” liefert, so dass man sich auf<br />
“ja/nein”-Antworten immer verlassen kann.<br />
Analyse durch Approximation: Softwaresystem wird durch ein<br />
einfacheres (i.a. endliches) System überapproximiert, dann wird<br />
versucht, die Eigenschaft für dieses einfachere System zu beweisen.<br />
Die Kunst dabei ist, das Analyse-Werkzeug so zu erstellen, dass die<br />
Antwort “ich weiss nicht” relativ selten ist. (Schwer!)<br />
(Vollständige) Verifikation<br />
Ich habe ein hoch sicherheitskritisches Systems und will eine<br />
Ja/Nein-Anwort, um Sicherheit über die Korrektheit meiner<br />
Software zu erhalten.<br />
Verifikation mit Unterstützung des Benutzers: mit Hilfe eines<br />
Werkzeugs (z.B. Theorembeweiser) wird ein Beweis über die<br />
Korrektheit des Systems erstellt. (Aufwändig!)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Universelle Turingmaschine<br />
Barbara König BeKo/TI 177<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Nicht-berechenbare Funktionen<br />
Barbara König BeKo/TI 178<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Einige der Ergebnisse, die in diesem Abschnitt vorkommen,<br />
beruhen darauf, dass es eine Turingmaschine gibt, die eine andere<br />
Turingmaschine simulieren kann, wenn deren Kodierung gegeben<br />
ist. So eine Turingmaschine heißt auch universelle Turingmaschine<br />
(eine Art Turingmaschinen-Interpreter).<br />
Universelle Turingmaschine<br />
Eine Turingmaschine U heißt universelle Turingmaschine, wenn sie<br />
sich bei Eingabe von w#x wie die Maschine M w angesetzt auf die<br />
Eingabe x verhält.<br />
Ähnlich zur Unentscheidbarkeit von Problemen kann auch gezeigt<br />
werden, dass bestimmte Funktionen nicht berechenbar sind. Ein<br />
Beispiel dafür ist die sogenannte Busy-Beaver-Funktion.<br />
Busy Beaver<br />
Wir betrachten alle deterministischen Turing-Maschinen mit dem<br />
zweielementigen Bandalphabet Γ = {1, □} und n Zuständen, wobei<br />
der Endzustand nicht mitgezählt wird. Von diesen Maschinen<br />
halten einige auf dem leeren Band, andere terminieren nicht.<br />
Der Wert der Busy-Beaver-Funktion Σ an der Stelle n ist die<br />
maximale Anzahl an Einsen, die von einer Maschine mit n<br />
Zuständen geschrieben werden kann, die auf dem leeren Band<br />
terminiert.<br />
Barbara König BeKo/TI 179<br />
Barbara König BeKo/TI 180
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Nicht-berechenbare Funktionen<br />
Von der Busy-Beaver-Funktion Σ: N 0 → N 0 ist folgendes bekannt:<br />
Sie ist nicht berechenbar.<br />
Über die Funktionswerte weiß man folgendes:<br />
n Σ(n)<br />
1 1<br />
2 4<br />
3 6<br />
4 13<br />
5 ≥ 4098<br />
6 ≥ 1, 29 · 10 865<br />
Bereits der Funktionswert an der Stelle n = 5 ist bisher noch<br />
nicht genau ermittelt worden.<br />
Unentscheidbare Probleme<br />
Wir verwenden nun die Reduktions-Beweistechnik und zeigen die<br />
Unentscheidbarkeit folgender Probleme:<br />
Unentscheidbarkeit des Adventure-Problems (Level 4)<br />
Es ist unentscheidbar, ob ein gegebenes Adventure des<br />
Levels 4 eine Lösung besitzt.<br />
Postsches Korrespondenzproblem PCP<br />
PCP: ein kombinatorisches Problem auf Wörtern, wichtiges<br />
(Hilfs-)Problem, um damit die Unentscheidbarkeit anderer<br />
Probleme zu zeigen<br />
Schnittproblem für kontextfreie Grammatiken<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 181<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 182<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Adventure-Problem (Level 4)<br />
10<br />
5 6<br />
Adventures bestehen aus Graphen bzw. Automaten, die mit<br />
folgenden Symbolen markiert sind:<br />
1<br />
2<br />
4<br />
11<br />
12<br />
Drache:<br />
Schwert:<br />
Torbogen:<br />
Tür:<br />
3<br />
7<br />
9<br />
Fluss:<br />
Schlüssel:<br />
13<br />
8<br />
Schatz:<br />
14 15 16<br />
Barbara König BeKo/TI 183<br />
Barbara König BeKo/TI 184
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Adventure-Problem (Level 4)<br />
Adventure-Problem (Level 4)<br />
Regeln:<br />
Die Schatz-Regel<br />
Man muss mindestens zwei Schätze finden.<br />
Tür-Regel<br />
Die Schlüssel sind magisch und verschwinden sofort, nachdem eine<br />
Tür mit ihnen geöffnet wurde. Sobald man eine Tür durchschritten<br />
hat, schließt sie sich sofort wieder.<br />
Drachen-Regel<br />
Unmittelbar nach der Begegnung mit einem Drachen muss man in<br />
einen Fluss springen, da uns der Drache in Brand stecken wird.<br />
Dies gilt nicht mehr, sobald man ein Schwert besitzt, mit dem man<br />
den Drachen vorher töten kann.<br />
Schwerter werden jedoch durch das Drachenblut unbenutzbar,<br />
sobald man einen Drachen damit getötet hat. Außerdem werden<br />
Drachen sofort wieder “ersetzt”.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 185<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 186<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schlüssel-Regel<br />
Der magische Torbogen kann nur passiert werden, wenn man<br />
keinen Schlüssel besitzt.<br />
Schwert-Regel<br />
Ein Fluss kann nur passiert werden, wenn man kein Schwert besitzt<br />
(weil man sonst ertrinkt!).<br />
Gegeben ist ein Adventure durch eine Karte bzw. einen endlichen<br />
Automaten M. Das Adventure-Problem (Level 4) lautet<br />
folgendermaßen:<br />
A 4 = {M | es gibt einen Pfad von einem Anfangs- zu einem<br />
Endzustand von M, der alle Regeln erfüllt}.<br />
Dabei sollen die Automaten M in entsprechender Kodierung als<br />
Eingabe zur Verfügung gestellt werden.<br />
Barbara König BeKo/TI 187<br />
Barbara König BeKo/TI 188
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
10<br />
5 6<br />
Adventure-Problem (Level 4)<br />
1<br />
2<br />
4<br />
11<br />
12<br />
Wir zeigen die Unentscheidbarkeit von A 4 durch Reduktion des<br />
Halteproblems für Goto-Programme (mit zwei Variablen x 1 , x 2<br />
und initialer Variablenbelegung 0) auf A 4 .<br />
13<br />
7 9<br />
3<br />
8<br />
14 15 16<br />
Annahmen:<br />
Um die Kodierung graphisch darstellen zu können,<br />
repräsentieren wir Goto-Programme durch Flussdiagramme,<br />
bei denen die Sprungmarken durch Pfeile ersetzt werden.<br />
Wir betrachten nur Zuweisungen der Form x i := x i + 1 bzw.<br />
x i := x i − 1 und Vergleiche mit 0 (alle anderen Zuweisungen<br />
bzw. Vergleiche können simuliert werden)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 189<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 190<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Adventure-Problem (Level 4)<br />
Adventure-Problem (Level 4)<br />
Übersetzung: Goto-Programm → Adventure<br />
Intuition:<br />
Tür- und Schlüssel-Regel: wird zur Simulation einer Variable<br />
x 1 benutzt (mit Inkrementierung und Nulltest).<br />
Drachen- und Schwert-Regel: wird zur Simulation einer<br />
Variable x 2 benutzt<br />
x 1 := x 1 + 1<br />
x 1 := x 1 − 1<br />
Barbara König BeKo/TI 191<br />
Barbara König BeKo/TI 192
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Adventure-Problem (Level 4)<br />
Übersetzung: Goto-Programm → Adventure<br />
Adventure-Problem (Level 4)<br />
Übersetzung: Goto-Programm → Adventure<br />
yes<br />
x 1 = 0<br />
no<br />
x 2 := x 2 + 1<br />
If . . . Then. . .<br />
x 2 := x 2 − 1<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 192<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Übersetzung: Goto-Programm → Adventure<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 192<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Übersetzung: Goto-Programm → Adventure<br />
yes<br />
x 2 = 0<br />
no<br />
Halt<br />
If . . . Then. . .<br />
Mit “Schatz” beschriftete Transitionen können auch zum Zusammenfügen<br />
der einzelnen Teilautomaten verwendet werden.<br />
Barbara König BeKo/TI 192<br />
Barbara König BeKo/TI 192
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Adventure-Problem (Level 4)<br />
Beispiel:<br />
Übersetze das folgende Goto-Programm in ein Adventure durch<br />
Zusammensetzen der einzelnen Teil-Automaten:<br />
x 1 := x 1 + 1; x 1 := x 1 + 1;<br />
M 1 : If x 1 = 0 Then Goto M 2 ;<br />
x 1 := x 1 − 1; x 2 := x 2 + 1;<br />
Goto M 1 ;<br />
M 2 : Halt<br />
M 2<br />
M 1<br />
Adventure-Problem (Level 4)<br />
Goto-Programm → Adventure<br />
Ein Goto-Programm (bei dem alle Variablen am Anfang mit 0<br />
belegt werden) hält genau dann, wenn das entsprechend übersetzte<br />
Adventure eine Lösung hat.<br />
Wir können diese Kodierung daher als Reduktionsfunktion f<br />
auffassen und es folgt:<br />
Unentscheidbarkeit des Adventure-Problems (Level 4)<br />
Das Adventure-Problem A 4 ist unentscheidbar.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 193<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Tag der offenen Tür 2011 an der TU München . . .<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Adventure-Problem (Level 4)<br />
Barbara König BeKo/TI 194<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Barbara König BeKo/TI 195<br />
Barbara König BeKo/TI 195
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Postsches Korrespondenzproblem<br />
Postsches Korrespondenzproblem<br />
Wir betrachten nun ein wichtiges unentscheidbares Problem, das<br />
dazu benutzt wird, die Unentscheidbarkeit vieler anderer Probleme<br />
zu zeigen:<br />
Postsches Korrespondenzproblem (PCP)<br />
Eingabe: Eine endliche Folge von Wortpaaren<br />
(x 1 , y 1 ), . . . , (x k , y k ) mit x i , y i ∈ Σ + .<br />
(Dabei ist Σ ein beliebiges Alphabet.)<br />
Ausgabe: Gibt es eine Folge von Indizes<br />
i 1 , . . . , i n ∈ {1, . . . , k}, n ≥ 1 mit x i1 . . . x in = y i1 . . . y in ?<br />
Beispiel 1: Löse das Postsche Korrespondenzproblem für<br />
x 1 = 0 x 2 = 1 x 3 = 0101<br />
y 1 = 010 y 2 = 101 y 3 = 01<br />
Eine mögliche Lösung: 3, 3, 1, 2:<br />
01 01 | 010 1 | 0 | 1<br />
01 | 01 | 010 | 1 0 1<br />
Eine weitere (kürzere) Lösung ist: 3, 1<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Postsches Korrespondenzproblem<br />
Barbara König BeKo/TI 196<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Postsches Korrespondenzproblem<br />
Barbara König BeKo/TI 197<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Beispiel 2: Löse das Postsche Korrespondenzproblem für<br />
x 1 = 001 x 2 = 01 x 3 = 01 x 4 = 10<br />
y 1 = 0 y 2 = 011 y 3 = 101 y 4 = 001<br />
Eine kürzeste Lösung besteht bereits aus 66 Indizes:<br />
2, 4, 3, 4, 4, 2, 1, 2, 4, 3, 4, 3, 4, 4, 3, 4, 4, 2, 1, 4, 4, 2, 1, 3, 4, 1, 1, 3,<br />
4, 4, 4, 2, 1, 2, 1, 1, 1, 3, 4, 3, 4, 1, 2, 1, 4, 4, 2, 1, 4, 1, 1, 3, 4, 1, 1, 3,<br />
1, 1, 3, 1, 2, 1, 4, 1, 1, 3.<br />
An der Komplexität dieser Lösung kann man bereits die<br />
Schwierigkeit des Problems ablesen.<br />
Semi-Entscheidbarkeit des PCP (Satz)<br />
Das Postsche Korrespondenzproblem ist semi-entscheidbar.<br />
Beweisidee:<br />
Probiere erst alle Indexfolgen der Länge 1 aus, dann alle<br />
Indexfolgen der Länge 2, . . .<br />
Falls irgendwann eine passende Indexfolge gefunden wird, so gib 1<br />
aus.<br />
Barbara König BeKo/TI 198<br />
Barbara König BeKo/TI 199
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Postsches Korrespondenzproblem<br />
Der erste Schritt des Unentscheidbarkeitsbeweises ist es, das<br />
folgende modifizierte Problem zu betrachten.<br />
Postsches Korrespondenzproblem<br />
Wir beweisen nun zwei Reduktions-Lemmata, aus denen die<br />
Unentscheidbarkeit des Postschen Korrespondenzproblems folgt:<br />
MPCP auf PCP reduzierbar (Lemma)<br />
MPCP ≤ PCP<br />
Modifiziertes PCP (MPCP)<br />
Eingabe: wie beim PCP.<br />
Ausgabe: Gibt es eine Lösung i 1 , . . . , i n des PCP mit i 1 = 1?<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Postsches Korrespondenzproblem<br />
Barbara König BeKo/TI 200<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Halteproblem auf MPCP reduzierbar (Lemma)<br />
H ≤ MPCP<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 201<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Postsches Korrespondenzproblem (Lemma)<br />
PCP unentscheidbar<br />
Das Postsche Korrespondenzproblem ist unentscheidbar.<br />
Beweis: Die Behauptung folgt direkt aus den beiden vorherigen<br />
Lemmata. Aus<br />
H ≤ MPCP ≤ PCP<br />
folgt H ≤ PCP (durch Komposition der Reduktionsabbildungen).<br />
Und da außerdem bekannt ist, dass H (das allgemeine<br />
Halteproblem) nicht entscheidbar ist, folgt daraus, dass das PCP<br />
nicht entscheidbar ist.<br />
Barbara König BeKo/TI 202<br />
Barbara König BeKo/TI 203
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Postsches Korrespondenzproblem<br />
Schnittproblem für kontextfreie Grammatiken<br />
Bemerkungen:<br />
Das Postsche Korrespondenzproblem ist bereits<br />
unentscheidbar, wenn man sich auf das Alphabet Σ = {0, 1}<br />
einschränkt.<br />
Für unäres (einelementiges) Alphabet ist das PCP jedoch<br />
entscheidbar. Hier entspricht die Konkatenation von Wörtern<br />
der Addition von Zahlen.<br />
Wir werden nun das PCP dazu nutzen, um die<br />
Unentscheidbarkeit des Schnittproblems für kontextfreie<br />
Grammatiken zu zeigen.<br />
Zuletzt betrachten wir noch das Schnittproblem für kontextfreie<br />
Grammatiken<br />
Schnittproblem für kontextfreie Grammatiken<br />
Eingabe: zwei kontextfreie Grammatiken G 1 , G 2 .<br />
Ausgabe: Gilt L(G 1 ) ∩ L(G 2 ) = ∅? (D.h., es gibt kein Wort,<br />
das sowohl von G 1 als auch von G 2 erzeugt wird.)<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 204<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schnittproblem für kontextfreie Grammatiken<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 205<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schnittproblem für kontextfreie Grammatiken<br />
Beweis (alternativ zum Beweis im Buch von Schöning):<br />
Gegeben sei ein Postsches Korrespondenzproblem<br />
K = ((x 1 , y 1 ), . . . , (x k , y k ))<br />
PCP auf Schnittproblem reduzierbar (Lemma)<br />
Das Postsche Korrespondenzproblem ist auf das Komplement des<br />
Schnittproblems für kontextfreie Grammatiken reduzierbar.<br />
über dem Alphabet {0, 1}.<br />
Betrachte zunächst folgende Grammatik G 1 :<br />
Dabei steht y R<br />
i<br />
S → x i Sy R<br />
i<br />
| x i $y R<br />
i<br />
für y i rückwärts.<br />
L(G 1 ) = {x i1 . . . x in $y R<br />
i n<br />
. . . y R<br />
i 1<br />
Betrachte jetzt folgende Grammatik G 2 :<br />
i = 1, . . . , k<br />
| i 1 , . . . , i n ∈ {1, . . . , k}}<br />
S → 0S0 | 1S1 | $<br />
L(G 2 ) = {w$w R | w ∈ {0, 1} ∗ }<br />
Barbara König BeKo/TI 206<br />
Barbara König BeKo/TI 207
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schnittproblem für kontextfreie Grammatiken<br />
Schnittproblem für kontextfreie Grammatiken<br />
Zusammen:<br />
L(G 1 ) ∩ L(G 2 ) = {x i1 . . . x in $yi R<br />
n<br />
. . . yi R<br />
1<br />
|<br />
i 1 , . . . , i n ∈ {1, . . . , k},<br />
x i1 . . . x in = y i1 . . . y in }<br />
Schnittproblem unentscheidbar<br />
Das Schnittproblem für kontextfreie Grammatiken ist<br />
unentscheidbar.<br />
Das heißt, der Schnitt der Sprachen ist nicht-leer, genau dann,<br />
wenn das PCP eine Lösung hat.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 208<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Schnittproblem für kontextfreie Grammatiken<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Spezielles Wortproblem<br />
Barbara König BeKo/TI 209<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Bemerkungen:<br />
Das Komplement des Schnittproblems ist semi-entscheidbar:<br />
man leitet mit beiden Grammatiken parallel Wörter ab und<br />
bricht ab, sobald ein Wort von beiden Grammatiken abgeleitet<br />
wurde.<br />
Daraus folgt auch, dass das Schnittproblem selbst nicht<br />
semi-entscheidbar sein kann. Ansonsten wäre es nämlich<br />
entscheidbar.<br />
Außer dem Schnittproblem sind noch einige andere verwandte<br />
Probleme für kontextfreie Sprachen unentscheidbar: Inklusion,<br />
Gleichheit, Mehrdeutigkeit, Regularität, . . . (siehe Schöning).<br />
Wir haben nun von mehreren semi-entscheidbaren Problemen<br />
(Halteproblem, PCP, etc.) gezeigt, dass sie unentscheidbar sind.<br />
Damit haben wir Typ-0-Sprachen identifiziert, deren Wortproblem<br />
unentscheidbar ist. (Unentscheidbarkeit des speziellen<br />
Wortproblems.)<br />
Es gibt natürlich auch Typ-0-Sprachen mit einem entscheidbaren<br />
Wortproblem. Beispielsweise, wenn es sich um Typ-1-, Typ-2- oder<br />
Typ-3-Sprachen handelt.<br />
Barbara König BeKo/TI 210<br />
Barbara König BeKo/TI 211
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Typ-1-Sprachen und Entscheidbarkeit<br />
Typ-1-Sprachen und Entscheidbarkeit (Zusammenfassung)<br />
Jede Typ-1-Sprache ist entscheidbar.<br />
(Aufgrund der Bedingung |linke Seite| ≤ |rechte Seite| kann<br />
man die Wörter, die von der Grammatik erzeugt werden, in<br />
aufsteigender Länge aufzählen. Stopp, sobald die Wörter<br />
länger als das gesuchte werden.)<br />
Es gibt entscheidbare Sprachen, die nicht vom Typ 1 sind.<br />
Typ-1-Sprachen und Entscheidbarkeit<br />
Konstruktion einer entscheidbaren Sprache, die nicht vom Typ 1 ist<br />
(mittels Diagonalisierung):<br />
Betrachte ein Alphabet Σ, in dem sich Grammatiken kodieren<br />
lassen. Wir bezeichnen die Kodierung einer Grammatik G mit<br />
cod(G).<br />
Sei E die Menge der Kodierungen aller Grammatiken G, die<br />
folgende Eigenschaften erfüllen:<br />
G erzeugt Wörter über dem Alphabet Σ<br />
G ist vom Typ 1 (kontextsensitiv)<br />
cod(G) ∉ L(G)<br />
Die Sprache E ist entscheidbar. Die letzte Bedingung ist<br />
überprüfbar, da das Wortproblem für Typ-1-Sprachen<br />
entscheidbar ist.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 212<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Typ-1-Sprachen und Entscheidbarkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 213<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Typ-1-Sprachen und Entscheidbarkeit<br />
Angenommen, E ist vom Typ 1. Dann gibt es eine<br />
Typ-1-Grammatik G ′ mit L(G ′ ) = E.<br />
Die Frage ist jetzt, ob die Kodierung von G ′ in E liegt. Da die<br />
ersten beiden Bedingungen auf jeden Fall erfüllt sind, hängt<br />
dies nur noch von der letzten Bedingung ab.<br />
cod(G ′ ) ∈ E ⇐⇒ cod(G ′ ) ∉ L(G ′ ) ⇐⇒ cod(G ′ ) ∉ E.<br />
Die letzte Äquivalenz gilt wegen L(G ′ ) = E.<br />
Damit ergibt sich ein Widerspruch und E kann nicht vom<br />
Typ 1 sein.<br />
Bemerkungen:<br />
Bei diesem Resultat gibt es eine Analogie zu der Tatsache,<br />
dass es totale und berechenbare Funktionen gibt, die nicht<br />
Loop-berechenbar sind.<br />
Jeder andere Versuch, syntaktisch eine Klasse von<br />
Grammatiken zu definieren, die genau die entscheidbaren<br />
Sprachen erzeugen, muss scheitern. In diesem Fall wäre ein<br />
analoger Diagonalisierungsbeweis möglich.<br />
Barbara König BeKo/TI 214<br />
Barbara König BeKo/TI 215
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Typ-1-Sprachen und Entscheidbarkeit<br />
Damit ergibt sich folgende Hierarchie in Bezug auf<br />
semi-entscheidbare Sprachen (= Typ 0), Typ-1-Sprachen und<br />
entscheidbare Sprachen:<br />
Menge aller Sprachen<br />
Typ-0-Sprachen<br />
semi-entscheidbare Sprachen<br />
Entscheidbare Sprachen<br />
Typ-1-Sprachen<br />
kontextsensitive Sprachen<br />
Äquivalenzproblem für Turingmaschinen<br />
Wir haben bereits ein Problem kennengelernt, das nicht<br />
semi-entscheidbar ist: das Schnittproblem für kontextfreie<br />
Sprachen. Allerdings ist das Komplement dieses Problems<br />
semi-entscheidbar.<br />
Es gibt allerdings sogar noch schwerere Probleme, die nicht<br />
semi-entscheidbar sind und deren Komplement auch nicht<br />
semi-entscheidbar ist. Beispielsweise folgendes Problem:<br />
Äquivalenzproblem für Turingmaschinen<br />
Eingabe: Zwei Turingmaschinen M 1 , M 2<br />
Ausgabe: Berechnen M 1 , M 2 dieselbe Funktion?<br />
Beweis: Reduktion vom Satz von Rice.<br />
Logik-Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 216<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Logik-Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 217<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Unerfüllbarkeit für Formeln der Prädikatenlogik 1. Stufe<br />
Das Problem, zu entscheiden, ob eine gegebene Formel F der<br />
Prädikatenlogik 1. Stufe unerfüllbar ist, ist unentscheidbar. Es ist<br />
jedoch noch semi-entscheidbar (z.B. mit Hilfe des<br />
Resolutionskalküls).<br />
Das gleiche gilt für das Gültigkeitsproblem.<br />
Prädikatenlogik 1. Stufe: die einfachste Form der Prädikatenlogik;<br />
man darf über Elemente quantifizieren (∀x, ∃x), nicht jedoch über<br />
Mengen oder Relationen.<br />
Das Unerfüllbarkeits- bzw. Gültigkeitsproblem für Logiken höherer<br />
Stufe (beispielsweise für die Prädikatenlogik 2. Stufe, bei der<br />
Quantifikation über Relationen erlaubt ist), ist nicht mehr<br />
semi-entscheidbar.<br />
Der Beweis benutzt die Tatsache, dass man mit Hilfe dieser<br />
Logiken die natürlichen Zahlen axiomatisieren und damit Aussagen<br />
über arithmetische Ausdrücken formulieren kann, etwas, das mit<br />
Hilfe der Prädikatenlogik 1. Stufe nicht ohne weiteres möglich ist<br />
(da man darin das Induktionsaxiom nicht ausdrücken kann).<br />
Barbara König BeKo/TI 218<br />
Barbara König BeKo/TI 219
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Logik-Probleme<br />
Daraus folgt auch, dass solche Logiken höherer Stufe keinen Kalkül<br />
haben können. Denn aus einem Kalkül, der es ermöglicht, alle<br />
wahren Formeln abzuleiten, kann man immer ein<br />
Semi-Entscheidungsverfahren gewinnen.<br />
Die Nicht-Existenz eines solchen (vollständigen) Kalküls für die<br />
Arithmetik ist die Aussage des (Ersten) Gödelschen<br />
Unvollständigkeitssatzes (1931). Für die Mathematik bedeutet das:<br />
“Es gibt wahre Aussagen, die nicht beweisbar sind.”<br />
Unterhaltsame Lektüre zu diesem Thema:<br />
Douglas R. Hofstadter: Gödel, Escher, Bach: An Eternal<br />
Golden Braid<br />
In deutscher Übersetzung: Douglas R. Hofstadter: Gödel,<br />
Escher, Bach: Ein endloses geflochtenes Band<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Diophantische Gleichungen<br />
Barbara König BeKo/TI 220<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Problem: Lösen diophantischer Gleichungen<br />
Eingabe: Eine diophantische Gleichung<br />
Ausgabe: Hat diese Gleichung eine Lösung in den ganzen<br />
Zahlen?<br />
Alternative Fragestellung: Hat diese Gleichung eine Lösung in den<br />
natürlichen Zahlen?<br />
Unentscheidbarkeit des Lösens diophantischer Gleichungen<br />
Es gibt kein allgemeines Verfahren, um diophantische Gleichungen<br />
zu lösen. D.h., das entsprechende Problem ist unentscheidbar.<br />
(Matiyasevich, 1970)<br />
(Ohne Beweis)<br />
Barbara König BeKo/TI 222<br />
Diophantische Gleichungen<br />
Wir beschäftigen uns nun mit dem Lösen diophantischer<br />
Gleichungen (auch bekannt als Hilberts 10. Problem).<br />
Diophantische Gleichung<br />
Eine diophantische Gleichung ist eine Gleichung der Form<br />
p(x 1 , . . . , x n ) = 0<br />
Wobei p(x 1 , . . . , x n ) ein Polynom in den Variablen x 1 , . . . , x n mit<br />
ganzzahligen Koeffizienten ist.<br />
Beispiele:<br />
3x − 4y − 1 = 0<br />
2x − 4y − 1 = 0<br />
x 2 − 1 = 0<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Diophantische Gleichungen<br />
Bemerkungen:<br />
xy − 2y 2 − 2 = 0<br />
x 2 + y 2 − z 2 = 0<br />
x 3 + y 3 − z 3 = 0<br />
Barbara König BeKo/TI 221<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Eine der berühmtesten Klassen von diophantischen<br />
Gleichungen ist x n + y n = z n . Nach einem Result von Wiles<br />
von 1995 hat keine solche Gleichung für n > 2 eine Lösung in<br />
den natürlichen Zahlen (ohne die Null).<br />
(Beweis des letzten Satzes von Fermat)<br />
Für bestimmte Klassen von diophantischen Gleichungen gibt<br />
es Lösungsverfahren:<br />
Für eine Gleichung vom Typ x n + y n = z n mit n > 2 ist<br />
die Ausgabe der Algorithmus immer “nein” (= keine<br />
Lösung).<br />
Lineare diophantische Gleichungen der Form<br />
a 1 x 1 + · · · + a n x n = b haben ein Lösungsverfahren<br />
( erweiterter euklidischer Algorithmus).<br />
Barbara König BeKo/TI 223
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Abschlusseigenschaften<br />
Abschlusseigenschaften<br />
Abgeschlossenheit (Definition)<br />
Gegeben sei eine Menge M und ein binärer Operator<br />
⊗: M × M → M.<br />
Man sagt, eine Menge M ′ ⊆ M ist unter ⊗ abgeschlossen, wenn<br />
für zwei beliebige Elemente m 1 , m 2 ∈ M ′ gilt: m 1 ⊗ m 2 ∈ M ′ .<br />
Uns interessieren hier vor allem folgende Operatoren: Komplement,<br />
Schnitt, Vereinigung<br />
Entscheidbare Sprachen: Abschluss unter Komplement<br />
Die entscheidbaren Sprachen sind unter Komplement<br />
abgeschlossen. D.h., wenn L entscheidbar ist, dann ist auch Σ ∗ \L<br />
entscheidbar. (Dabei ist Σ das Alphabet, über dem L definiert ist.)<br />
Semi-entscheidbare Sprachen: kein Abschluss unter Komplement<br />
Die semi-entscheidbaren Sprachen sind nicht unter Komplement<br />
abgeschlossen.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Abschlusseigenschaften<br />
Barbara König BeKo/TI 224<br />
Berechnungsmodelle<br />
Unentscheidbarkeit<br />
Unentscheidbare Probleme<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Einführung: Komplexitätstheorie<br />
Barbara König BeKo/TI 225<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
(Semi-)entscheidbare Sprachen: Abschluss unter Schnitt<br />
Die entscheidbaren Sprachen sind unter Schnitt abgeschlossen.<br />
D.h., wenn L 1 , L 2 entscheidbar sind, dann ist auch L 1 ∩ L 2<br />
entscheidbar.<br />
Das gleiche gilt für die semi-entscheidbaren Sprachen.<br />
(Semi-)entscheidbare Sprachen: Abschluss unter Vereinigung<br />
Die entscheidbaren Sprachen sind unter Vereinigung abgeschlossen.<br />
D.h., wenn L 1 , L 2 entscheidbar sind, dann ist auch L 1 ∪ L 2<br />
entscheidbar.<br />
Das gleiche gilt für die semi-entscheidbaren Sprachen.<br />
Nach der Betrachtung von Berechnungen, die beliebig viel Platz<br />
und Zeit beanspruchen dürfen, betrachten wir jetzt<br />
Turingmaschinen mit eingeschränkten Resourcen.<br />
Dabei interessiert uns vor allem die Anzahl der Schritte, die eine<br />
Turingmaschine braucht, um ein Problem zu lösen.<br />
Barbara König BeKo/TI 226<br />
Barbara König BeKo/TI 227
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Einführung: Komplexitätstheorie<br />
Beispiel 1: Travelling Salesman<br />
Ist der kürzeste Weg, der alle Knoten besucht und wieder zum<br />
Ausgangsort zurückkehrt, maximal so lang wie d?<br />
4<br />
2,5<br />
3<br />
2<br />
1,5<br />
1<br />
8<br />
1,5<br />
1,5<br />
1<br />
5<br />
1<br />
2<br />
1,5<br />
2<br />
2<br />
3<br />
6<br />
3<br />
9<br />
Ist es wirklich nötig,<br />
alle kürzeren Touren<br />
auszuprobieren oder<br />
gibt es ein effizienteres<br />
Verfahren?<br />
Einführung: Komplexitätstheorie<br />
Beispiel 2: Tourenplanungsproblem<br />
Gegeben ist:<br />
Ein Graph (= Wegenetz) wie beim<br />
Travelling-Salesman-Problem.<br />
Jedem Knoten ist ein Gewicht (= abzuholende Ladung)<br />
zugeordnet.<br />
Eine Menge von Lastwagen mit Ladebeschränkung.<br />
Frage: Kann man den Lastwagen Touren zuordnen, so dass die<br />
Ladebeschränkungen eingehalten werden, und die Gesamtstrecke<br />
kleiner als d bleibt?<br />
7<br />
2<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 228<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 229<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
3000 kg<br />
2500 kg<br />
4<br />
3<br />
2<br />
1,5<br />
1<br />
1,5<br />
1,5<br />
5<br />
2<br />
1 Depot<br />
1,5<br />
2<br />
2<br />
3<br />
6<br />
2000 kg<br />
3<br />
1000 kg<br />
9<br />
1<br />
2<br />
3<br />
5 t<br />
5 t<br />
10 t<br />
Einführung: Komplexitätstheorie<br />
Offensichtlich ist sowohl das Travelling-Salesman- als auch das<br />
Tourenplanungs-Problem entscheidbar (alle möglichen Touren<br />
durchprobieren!).<br />
Wir werden jedoch zeigen, dass sie mit zu den “schwersten”<br />
Problemen in der Klasse NP gehören: sie sind NP-vollständig.<br />
(NP = Klasse von Problemen, die von nicht-deterministischen<br />
Turingmaschinen mit polynomialer Laufzeitbeschränkung<br />
akzeptiert werden können)<br />
4000 kg<br />
7<br />
2,5<br />
2<br />
8<br />
1000 kg<br />
1<br />
2000 kg<br />
4000 kg 5 t<br />
4<br />
Eine der wichtigsten offenen Fragen in der theoretischen <strong>Informatik</strong><br />
ist, ob diese Probleme auch von einer deterministischen<br />
Turingmaschine in polynomialer Laufzeit gelöst werden können (es<br />
wird allgemein erwartet, dass dies nicht möglich ist). Es handelt<br />
sich hierbei um das sogenannte P ≠ NP-Problem.<br />
Barbara König BeKo/TI 230<br />
Barbara König BeKo/TI 231
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Komplexitätsklassen<br />
Komplexitätsklassen<br />
Wir definieren zunächst die Klasse aller Sprachen, die von einer<br />
deterministischen Turingmaschine mit Zeitbeschränkung akzeptiert<br />
werden können.<br />
Zeitbeschränkte det. TM und akz. Sprachen (Definition)<br />
Sei f : N 0 → N 0 eine (totale) Funktion. Die Klasse TIME(f (n))<br />
besteht aus allen Sprachen A, für die es eine deterministische<br />
Mehrband-Turingmaschine M gibt mit A = T (M) und<br />
time M (x) ≤ f (|x|) für alle Wörter x.<br />
Dabei gibt time M (x) die Anzahl der Rechenschritte von M bei<br />
Eingabe x an.<br />
Das heißt, die Anzahl der Schritte der Turingmaschine ist<br />
beschränkt und die Beschränkung ist abhängig von der Länge der<br />
Eingabe.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
Barbara König BeKo/TI 232<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Um polynomial beschränkte Laufzeitklassen definieren zu können,<br />
wiederholen wir zunächst die Definition eines Polynoms (in einer<br />
Variablen).<br />
Polynom (Definition)<br />
Ein Polynom ist eine Funktion p : N 0 → N 0 mit der<br />
Abbildungsvorschrift<br />
p(n) = a k n k + a k−1 n k−1 + · · · + a 1 n + a 0<br />
für Konstanten k, a k , . . . , a 0 ∈ N 0 .<br />
Bemerkung:<br />
Um die Anzahl der Rechenschritte time M (x) einer Turingmaschine<br />
M zu ermitteln, müssen wir noch festlegen, wann die Berechnung<br />
von M beendet ist: dies ist der Fall, wenn eine Konfiguration gleich<br />
ihrer Folgekonfiguration ist. (Bei deterministischen<br />
Turingmaschinen hat jede Konfiguration genau eine<br />
Folgekonfiguration.)<br />
Das Erreichen eines Endzustandes bedeutet damit auch das Ende<br />
einer Berechnung. Die Berechnung kann jedoch auch dann beendet<br />
sein, wenn kein Endzustand erreicht wurde.<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
Barbara König BeKo/TI 233<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Damit ist es nun auch möglich, die Klasse aller Sprachen zu<br />
definieren, die von deterministischen Turingmaschinen mit<br />
polynomialer Laufzeitbeschränkung erkannt werden.<br />
Komplexitätsklasse P (Definition)<br />
P = {A | es gibt eine det. Turingmaschine M und ein<br />
=<br />
Polynom p mit T (M) = A und time M (x) ≤ p(|x|)}<br />
⋃<br />
TIME(p(n))<br />
p Polynom<br />
Intuitiv umfasst P alle Probleme, für die effiziente Algorithmen<br />
existieren.<br />
Barbara König BeKo/TI 234<br />
Barbara König BeKo/TI 235
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
O-Notation<br />
O-Notation<br />
Es gibt einen engen Zusammenhang zur sogenannten O-Notation:<br />
O-Notation<br />
Seien f , g : N 0 → N 0 Funktionen. Wir sagen, dass f höchstens so<br />
schnell wächst wie g, falls folgendes gilt:<br />
Es gibt eine Konstante C ∈ N 0 und ein N ∈ N 0 , so dass<br />
für jedes n ≥ N gilt:<br />
f (n) ≤ C · g(n)<br />
Anschaulich: ab einem bestimmten Wert N ist f kleiner als g,<br />
multipliziert mit einem konstanten Faktor. (Nur das asymptotische<br />
Verhalten zählt, Konstanten werden vernachlässigt.)<br />
O-Notation<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 236<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Schreibweisen:<br />
Eine Funktion f wird hier oft durch ihren definierenden<br />
Ausdruck beschrieben: n, n 3 , 2 n , . . .<br />
Dabei wird im allgemeinen n als Funktionsparameter<br />
verwendet.<br />
O(g) bezeichnet die Menge aller Funktionen, die höchstens so<br />
schnell wachsen wie g. Man schreibt dann f ∈ O(g) (oder<br />
sogar f = O(g)).<br />
Beispiele:<br />
n ∈ O(n 2 )<br />
100n ∈ O(n)<br />
n 2 ∈ O(2 n ).<br />
n 3 ∈ O(2 n ).<br />
Bemerkung: Für das letzte Beispiel gilt n 3 < 2 n , falls n ≥ 10.<br />
O-Notation<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Barbara König BeKo/TI 237<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Polynomiales vs. exponentielles Wachstum<br />
Seien l ∈ N 0 , q ∈ R mit q > 1. Dann gilt<br />
n l ∈ O(q n )<br />
Das bedeutet, dass jede Exponentialfunktion (mit Basis größer<br />
als 1) mindestens so stark wächst wie jedes Polynom.<br />
(Exponentialfunktionen wachsen sogar echt stärker als Polynome.)<br />
Die O-Notation wird häufig eingesetzt, um die Laufzeit von<br />
Algorithmen zu analysieren. Die Laufzeit eines Algorithmus ist<br />
dabei die Anzahl der Schritte, die das Verfahren ausführt.<br />
Beispiele:<br />
Es gibt Sortierverfahren mit Laufzeit O(n log n) (Mergesort)<br />
und Laufzeit O(n 2 ) (Bubblesort)<br />
Jedes bekannte Verfahren für das<br />
Travelling-Salesman-Problem hat exponentielle Laufzeit.<br />
Dabei bezeichnet der Parameter n immer die Größe der Eingabe.<br />
Barbara König BeKo/TI 238<br />
Barbara König BeKo/TI 239
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
O-Notation<br />
O-Notation<br />
Man spricht von<br />
linearer Laufzeit: O(n)<br />
quadratischer Laufzeit: O(n 2 )<br />
kubischer Laufzeit: O(n 3 )<br />
polynomialer Laufzeit: O(n l ) für eine Konstante l bzw.<br />
O(p(n)) für ein Polynom p<br />
exponentieller Laufzeit: O(2 n ) bzw. O(q n ) für q > 1<br />
Laufzeiten in Abhängigkeit von der Größe der Eingabe:<br />
Laufzeit Anzahl Schritte Behandelbare Größe der Eingabe<br />
bei Eingabegröße 100 bei 1.000.000 Schritte<br />
O(n) 100 1.000.000<br />
O(n 2 ) 10.000 1.000<br />
O(n 3 ) 1.000.000 100<br />
O(2 n ) 1,27·10 30 19,9<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
Barbara König BeKo/TI 240<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
Barbara König BeKo/TI 241<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Zusammenhang zwischen P und der O-Notation<br />
Eine Problem liegt in P genau dann, wenn es von einer<br />
(deterministischen) Maschine gelöst werden kann, die polynomiell<br />
viele Schritte macht, d.h. O(n l ) Schritte für eine Konstante l, falls<br />
n die Eingabegröße ist.<br />
Komplexitätsklassen für andere Berechnungsmodelle<br />
Die Klasse P ist größtenteils unabhängig von dem betrachteten<br />
Maschinenmodell. Eine analoge Definition für While- bzw.<br />
Goto-Programme würde zur gleichen Klasse P führen.<br />
Die Voraussetzung hierfür ist jedoch, dass das logarithmische<br />
Kostenmaß (siehe nächste Folie) angewandt wird.<br />
Uniformes Kostenmaß<br />
Die Zuweisung x i := x j wird als ein Schritt gewertet.<br />
Logarithmisches Kostenmaß<br />
Zuweisungen der Form x i := x j werden nicht als ein Schritt<br />
angesehen, sondern vielmehr wird für jedes Bit in der<br />
Binärdarstellung von x j ein Schritt gerechnet.<br />
Zum logarithmischen Kostenmaß gehört auch, dass die Länge einer<br />
Eingabe n ∈ N 0 nicht n selbst ist, sondern die Länge der<br />
Binärdarstellung, d.h., log n.<br />
Barbara König BeKo/TI 242<br />
Barbara König BeKo/TI 243
Kontextsensitive und Typ-0-Sprachen<br />
Berechenbarkeitstheorie<br />
Komplexitätstheorie<br />
Komplexitätsklassen<br />
NP-Vollständigkeit<br />
Frohe Weihnachten und ein gutes<br />
neues Jahr!<br />
Barbara König BeKo/TI 244