15.09.2014 Aufrufe

2x2 - Theoretische Informatik - Universität Duisburg-Essen

2x2 - Theoretische Informatik - Universität Duisburg-Essen

2x2 - Theoretische Informatik - Universität Duisburg-Essen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!