Theoretische Informatik 2 Jürgen Koslowski Institut für Theoretische Informatik Technische Universität Braunschweig SS 2015 http://www.iti.cs.tu-bs.de/˜koslowj/Theo2 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 1 / 236 Übersicht: Überblick I 4 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 2 / 236 Übersicht: Turingmaschinen I 5 Turingmaschinen Vorüberlegung Turingmaschinen formal Darstellung von Turingmaschinen Entscheidbare Sprachen/Probleme Die Chomsky-Hierarchie formaler Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Turing-berechenbare partielle Funktionen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 3 / 236 Übersicht: Die Church-Turing These I 6 Church-Turing-These Alternativen zu Turingmaschinen Registermaschinen (RAM) Befehlssatz einer RAM Simulation einer dTM durch eine RAM RAM-Berechenbarkeit 6.2 Rekursive Funktionen Eigenschaften von PR Der unbeschränkte µ - Operator Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 4 / 236 Übersicht: Unentscheidbare Probleme I 7 Unentscheidbare Probleme 7.0 Problemstellung 7.1 Universelle Turingmaschine 7.2 Das Halteproblem 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem 7.3.1 Akzeptanz des leeren Worts 7.3.2 Terminierung eines Algorithmus 7.4 Satz von Rice Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 5 / 236 Übersicht: Komplexitätstheorie I 8 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.1 Weitere Vorüberlegungen 8.2 Die Komplexitätsklassen P und NP 8.3 Die Klasse FP von Berechnungsproblemen 8.4 FP-Reduzierbarkeit 8.4.1 2 - Sat ∈ P 8.5 Robustheit der Klassen P und NP 8.6 Einige Probleme aus NP 8.7 NP-Vollständigkeit und Cooke’scher Satz 8.8 Weitere NP-vollständige Probleme 8.9 Die Klasse coNP 8.10 Komplexität von Optimierungsproblemen 8.11 Approximation von Optimierungsproblemen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 6 / 236 Übersicht: Komplexitätstheorie II 8.12 Raumkomplexität Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 7 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Kapitel 4 Überblick Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 8 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.) Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat die kanonische Unterklasse der entscheidbaren Sprachen; diese werden von TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage nach der Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.) Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat die kanonische Unterklasse der entscheidbaren Sprachen; diese werden von TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage nach der Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Hier tritt schon das Verfahren der Reduktion von Problemen bzw. Sprachen auf, das auch in der Komplexitätstheorie gebraucht wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.) Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat die kanonische Unterklasse der entscheidbaren Sprachen; diese werden von TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage nach der Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Hier tritt schon das Verfahren der Reduktion von Problemen bzw. Sprachen auf, das auch in der Komplexitätstheorie gebraucht wird. TM’n lassen sich auch zur Lösung von Berechnungsproblemen (kurz B-Problemen) verwenden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie werden sich als das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.) Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat die kanonische Unterklasse der entscheidbaren Sprachen; diese werden von TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage nach der Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Hier tritt schon das Verfahren der Reduktion von Problemen bzw. Sprachen auf, das auch in der Komplexitätstheorie gebraucht wird. TM’n lassen sich auch zur Lösung von Berechnungsproblemen (kurz B-Problemen) verwenden. Das liefert eine Theorie der “Turingberechenbaren (partiellen) Funktionen” der Form Nn f N, n ∈ N . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 9 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Alternativ kann man ausgehend von einfachen Grundfunktionen Nn N mittels simpler Konstruktionsverfahren neue partielle Funktionen Nn N generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 10 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Alternativ kann man ausgehend von einfachen Grundfunktionen Nn N mittels simpler Konstruktionsverfahren neue partielle Funktionen Nn N generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen, und anschließend die Klasse der µ-rekursiven partiellen Funktionen. Letztere stimmt mit der obigen Klasse der Turing-brechenbaren partiellen Funktionen überein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 10 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Alternativ kann man ausgehend von einfachen Grundfunktionen Nn N mittels simpler Konstruktionsverfahren neue partielle Funktionen Nn N generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen, und anschließend die Klasse der µ-rekursiven partiellen Funktionen. Letztere stimmt mit der obigen Klasse der Turing-brechenbaren partiellen Funktionen überein. In der Komplexitätstheorie geht es darum, wie effizient E-Probleme gelöst werden können. Entscheidendes Kriterium ist, ob mit Hilfe von dTM’n bzw. nTM’n Laufzeiten realisiert werden können, die polynomial in der Größe der Eingabe sind. Das liefert die Komplexitätsklassen P und NP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 10 / 236 Hintergrund und Motivation Ziele der Vorlesungen “Theoretische Informatik 2” Alternativ kann man ausgehend von einfachen Grundfunktionen Nn N mittels simpler Konstruktionsverfahren neue partielle Funktionen Nn N generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen, und anschließend die Klasse der µ-rekursiven partiellen Funktionen. Letztere stimmt mit der obigen Klasse der Turing-brechenbaren partiellen Funktionen überein. In der Komplexitätstheorie geht es darum, wie effizient E-Probleme gelöst werden können. Entscheidendes Kriterium ist, ob mit Hilfe von dTM’n bzw. nTM’n Laufzeiten realisiert werden können, die polynomial in der Größe der Eingabe sind. Das liefert die Komplexitätsklassen P und NP . B-Probleme, deren zugrundeliegendes E-Problem nicht effizient lösbar ist, sind selbst nicht effizient lösbar. In solchen Fällen kann man nur versuchen, möglichst gute Lösungen zu approximieren. Das führt zum Begriff des Optimierungsproblems. Diese lassen sich nach Approximationsgüte klassifizieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 10 / 236 Turingmaschinen Kapitel 5 Turingmaschinen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 11 / 236 Turingmaschinen Vorüberlegung Vorüberlegung Idee: der Speicher eines Kellerautomaten, der nur eingeschränkt zugängliche Keller, wird durch ein frei zugängliches, beidseitig potentiell unendliches Turingband aus sog. Feldern ersetzt. Die darin enthaltenen einzelnen Symbole aus einem Bandalphabet werden von einem Schreib- Lesekopf gescannt und ggf. überschrieben; dieser kann sich dann auf ein benachbartes Feld bewegen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 12 / 236 Turingmaschinen Vorüberlegung Vorüberlegung Idee: der Speicher eines Kellerautomaten, der nur eingeschränkt zugängliche Keller, wird durch ein frei zugängliches, beidseitig potentiell unendliches Turingband aus sog. Feldern ersetzt. Die darin enthaltenen einzelnen Symbole aus einem Bandalphabet werden von einem Schreib- Lesekopf gescannt und ggf. überschrieben; dieser kann sich dann auf ein benachbartes Feld bewegen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 12 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu Kellerautomaten und erst recht zu endlichen Automaten, bei denen die Eingabe immer extern vorlag und in nicht näher spezifizierter Weise von links nach rechts gelesen wurde Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu Kellerautomaten und erst recht zu endlichen Automaten, bei denen die Eingabe immer extern vorlag und in nicht näher spezifizierter Weise von links nach rechts gelesen wurde (Stichwort: Online Algorithmus ). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu Kellerautomaten und erst recht zu endlichen Automaten, bei denen die Eingabe immer extern vorlag und in nicht näher spezifizierter Weise von links nach rechts gelesen wurde (Stichwort: Online Algorithmus ). Bei Wikipedia findet man folgende Jürgen Koslowski (TU-BS) Visualisierungen Theoretische Informatik 2 von Turingmaschinen. SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu Kellerautomaten und erst recht zu endlichen Automaten, bei denen die Eingabe immer extern vorlag und in nicht näher spezifizierter Weise von links nach rechts gelesen wurde (Stichwort: Online Algorithmus ). Bei Wikipedia findet man folgende Visualisierungen von Turingmaschinen. In der ZEIT findet sich auch eine nette Beschreibung . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei werden wie gewöhnlich Anfangs- und Endzustände unterschieden. In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie ein Symbol schreiben und/oder (je nach Vereinbarung) sich um maximal ein Feld zur Seite bewegen. Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen, wird ein spezielles Bandsymbol # eingeführt. Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu Kellerautomaten und erst recht zu endlichen Automaten, bei denen die Eingabe immer extern vorlag und in nicht näher spezifizierter Weise von links nach rechts gelesen wurde (Stichwort: Online Algorithmus ). Bei Wikipedia findet man folgende Visualisierungen von Turingmaschinen. In der ZEIT findet sich auch eine nette Beschreibung . Eine Suchanfrage nach “Turing Maschine” und “LEGO” liefert ebenfalls interessante Ergebnisse. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 13 / 236 Turingmaschinen Vorüberlegung Turingmaschinen formal Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die sich letztendlich alle gegenseitig simulieren können. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 14 / 236 Turingmaschinen Vorüberlegung Turingmaschinen formal Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die sich letztendlich alle gegenseitig simulieren können. Zunächst beginnen wir mit zwei Basismodellen, die sich hinsichtlich ihrer Geschwindigkeit unterscheiden: in der langsamen Variante kann der Kopf pro Schritt nur entweder schreiben oder sich bewegen, während in der schnellen Variante beides in einem Schritt erfolgen kann. Ansonsten sind beide Varianten äquivalent. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 14 / 236 Turingmaschinen Vorüberlegung Turingmaschinen formal Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die sich letztendlich alle gegenseitig simulieren können. Zunächst beginnen wir mit zwei Basismodellen, die sich hinsichtlich ihrer Geschwindigkeit unterscheiden: in der langsamen Variante kann der Kopf pro Schritt nur entweder schreiben oder sich bewegen, während in der schnellen Variante beides in einem Schritt erfolgen kann. Ansonsten sind beide Varianten äquivalent. Weiterhin kann man die Form des Bandes ändern (einseitig unendlich statt beidseitig unendlich), ein mehrspuriges Band verwenden, oder gar die Anzahl der Bänder und Köpfe simultan vergrößern. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 14 / 236 Turingmaschinen Vorüberlegung Turingmaschinen formal Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die sich letztendlich alle gegenseitig simulieren können. Zunächst beginnen wir mit zwei Basismodellen, die sich hinsichtlich ihrer Geschwindigkeit unterscheiden: in der langsamen Variante kann der Kopf pro Schritt nur entweder schreiben oder sich bewegen, während in der schnellen Variante beides in einem Schritt erfolgen kann. Ansonsten sind beide Varianten äquivalent. Weiterhin kann man die Form des Bandes ändern (einseitig unendlich statt beidseitig unendlich), ein mehrspuriges Band verwenden, oder gar die Anzahl der Bänder und Köpfe simultan vergrößern. Insbesondere TMs mit mehreren Bändern und Köpfen erlauben eine recht einfachere Umsetzung konkreter Algorithmen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 14 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; . einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; . einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ; . einer endlichen Relation ( (B + {L, R}) Q ×B δ Q × B × {N, R, L} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 für eine langsame TM für eine schnelle TM SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; . einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ; . einer endlichen Relation ( (B + {L, R}) Q ×B δ Q × B × {N, R, L} für eine langsame TM für eine schnelle TM M heißt deterministisch (dTM), falls δ eine partielle Funktion ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; . einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ; . einer endlichen Relation ( (B + {L, R}) Q ×B δ Q × B × {N, R, L} für eine langsame TM für eine schnelle TM M heißt deterministisch (dTM), falls δ eine partielle Funktion ist. In älteren Skripten tragen solche TMs den Zusatz mit erweitertem ” Bandalphabet“, da man ursprünglich die Bedingung B = Σ + {#} verlangt hatte. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Definition (langsame/schnelle TM) Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet Σ besteht aus . einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten Anfangs- und Endzuständen q0 , qF ∈ Q ; . einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ; . einer endlichen Relation ( (B + {L, R}) Q ×B δ Q × B × {N, R, L} für eine langsame TM für eine schnelle TM M heißt deterministisch (dTM), falls δ eine partielle Funktion ist. In älteren Skripten tragen solche TMs den Zusatz mit erweitertem ” Bandalphabet“, da man ursprünglich die Bedingung B = Σ + {#} verlangt hatte. Technisch mag das ausreichen, in der Praxis ist es aber ein sehr ungeschickte Forderung, auf der wir hier nicht bestehen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 15 / 236 Turingmaschinen Vorüberlegung Interpretation von δ Abhängig vom aktuellen Zustand und vom aktuellen Bandsymbol kann sich der Zustand ändern, und Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 16 / 236 Turingmaschinen Vorüberlegung Interpretation von δ Abhängig vom aktuellen Zustand und vom aktuellen Bandsymbol kann sich der Zustand ändern, und im langsamen Fall Q × B δ Q × (B + {L, R}) kann entweder das Bandsymbol überschrieben, oder der Kopf eine Position zur Seite bewegt werden; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 16 / 236 Turingmaschinen Vorüberlegung Interpretation von δ Abhängig vom aktuellen Zustand und vom aktuellen Bandsymbol kann sich der Zustand ändern, und im langsamen Fall Q × B δ Q × (B + {L, R}) kann entweder das Bandsymbol überschrieben, oder der Kopf eine Position zur Seite bewegt werden; im schnellen Fall Q × B δ Q × B × {N, L, R} können das Überschreiben und die Bewegung im selben Schritt stattfinden; N ermöglicht das Verharren des Kopfes auf demselben Feld. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 16 / 236 Turingmaschinen Vorüberlegung Interpretation von δ Abhängig vom aktuellen Zustand und vom aktuellen Bandsymbol kann sich der Zustand ändern, und im langsamen Fall Q × B δ Q × (B + {L, R}) kann entweder das Bandsymbol überschrieben, oder der Kopf eine Position zur Seite bewegt werden; im schnellen Fall Q × B δ Q × B × {N, L, R} können das Überschreiben und die Bewegung im selben Schritt stattfinden; N ermöglicht das Verharren des Kopfes auf demselben Feld. Offenbar kann man jeden Schritt einer schnellen Maschine mit höchstens zwei Schritten einer langsamen Maschine simulieren. Umgekehrt ist die Simulation noch einfacher (vergl. HA). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 16 / 236 Turingmaschinen Vorüberlegung Bemerkungen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt aber Nichtdeterminismus. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt aber Nichtdeterminismus. Da wir später die Äquivalenz deterministischer und nichtdeterministischer TMs zeigen, können wir uns gleich auf einzelne Anfangszustände beschränken. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt aber Nichtdeterminismus. Da wir später die Äquivalenz deterministischer und nichtdeterministischer TMs zeigen, können wir uns gleich auf einzelne Anfangszustände beschränken. Eine Menge an Endzuständen böte auch keinen echten Vorteil. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt aber Nichtdeterminismus. Da wir später die Äquivalenz deterministischer und nichtdeterministischer TMs zeigen, können wir uns gleich auf einzelne Anfangszustände beschränken. Eine Menge an Endzuständen böte auch keinen echten Vorteil. . Neben Σ muß das Bandalphabet nur # enthalten. Weitere Hilfssymbole, wie z.B. Randbegrenzer, Trennsymbole oder spezielle Löschsymbole sind optional, aber nützlich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Bemerkungen . Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen Anfangs- und Endzustand. Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt aber Nichtdeterminismus. Da wir später die Äquivalenz deterministischer und nichtdeterministischer TMs zeigen, können wir uns gleich auf einzelne Anfangszustände beschränken. Eine Menge an Endzuständen böte auch keinen echten Vorteil. . Neben Σ muß das Bandalphabet nur # enthalten. Weitere Hilfssymbole, wie z.B. Randbegrenzer, Trennsymbole oder spezielle Löschsymbole sind optional, aber nützlich. Ohne solche auszukommen (älteres Skript) erfordert einemTaschenspielertrick (HA), daher erlauben wir hier solche Symbole ohne Einschränkung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 17 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten . Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass nur endlich viele Symbole des Alphabets eine Rolle spielen; für klassische TMs ist Σ als Teilmenge von B automatisch endlich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten . Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass nur endlich viele Symbole des Alphabets eine Rolle spielen; für klassische TMs ist Σ als Teilmenge von B automatisch endlich. . Um klassische 1-Band TMs konzeptionell kompatibel mit KAs zu machen, benötigen sie einen Präprozessor mit einem neuen Anfangszustand qr und Übergängen hqr , #i a hqr , ha, Rii, a ∈ Σ , sowie hqr , #i ε hq0 , h#, Lii (im schnellen Fall). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten . Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass nur endlich viele Symbole des Alphabets eine Rolle spielen; für klassische TMs ist Σ als Teilmenge von B automatisch endlich. . Um klassische 1-Band TMs konzeptionell kompatibel mit KAs zu machen, benötigen sie einen Präprozessor mit einem neuen Anfangszustand qr und Übergängen hqr , #i a hqr , ha, Rii, a ∈ Σ , sowie hqr , #i ε hq0 , h#, Lii (im schnellen Fall). Determinismus bleibt nur dann erhalten, wenn der spontane Übergang von qr nach q0 erst nach Abarbeitung der Eingabe erfolgen kann; und das erfordert den Supply-driven Modus! So kommt die gesamte Eingabe von links nach rechts auf das Band, bevor in q0 die eigentliche Berechung aus spontanen Übergängen am rechten Rand beginnt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten . Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass nur endlich viele Symbole des Alphabets eine Rolle spielen; für klassische TMs ist Σ als Teilmenge von B automatisch endlich. . Um klassische 1-Band TMs konzeptionell kompatibel mit KAs zu machen, benötigen sie einen Präprozessor mit einem neuen Anfangszustand qr und Übergängen hqr , #i a hqr , ha, Rii, a ∈ Σ , sowie hqr , #i ε hq0 , h#, Lii (im schnellen Fall). Determinismus bleibt nur dann erhalten, wenn der spontane Übergang von qr nach q0 erst nach Abarbeitung der Eingabe erfolgen kann; und das erfordert den Supply-driven Modus! So kommt die gesamte Eingabe von links nach rechts auf das Band, bevor in q0 die eigentliche Berechung aus spontanen Übergängen am rechten Rand beginnt. Die Endlichkeit von B und Σ wäre nun unerheblich, solange nur die Anzahl der Übergänge endlich ist. Die Forderung Σ ⊆ B − {#} könnte evtl. auch entfallen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Vergleich mit Kellerautomaten . Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass nur endlich viele Symbole des Alphabets eine Rolle spielen; für klassische TMs ist Σ als Teilmenge von B automatisch endlich. . Um klassische 1-Band TMs konzeptionell kompatibel mit KAs zu machen, benötigen sie einen Präprozessor mit einem neuen Anfangszustand qr und Übergängen hqr , #i a hqr , ha, Rii, a ∈ Σ , sowie hqr , #i ε hq0 , h#, Lii (im schnellen Fall). Determinismus bleibt nur dann erhalten, wenn der spontane Übergang von qr nach q0 erst nach Abarbeitung der Eingabe erfolgen kann; und das erfordert den Supply-driven Modus! So kommt die gesamte Eingabe von links nach rechts auf das Band, bevor in q0 die eigentliche Berechung aus spontanen Übergängen am rechten Rand beginnt. Die Endlichkeit von B und Σ wäre nun unerheblich, solange nur die Anzahl der Übergänge endlich ist. Die Forderung Σ ⊆ B − {#} könnte evtl. auch entfallen. Dies wird hier aber nicht weiterverfolgt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 18 / 236 Turingmaschinen Vorüberlegung Konfigurationen Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen Bandinhalt und die Position des Kopfes bestimmen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 19 / 236 Turingmaschinen Vorüberlegung Konfigurationen Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen Bandinhalt und die Position des Kopfes bestimmen. Die Konvention, Eingaben zunächst zu internalisieren, erübrigt die Buchführung über den noch zu bearbeitenden Teil der Eingabe. Definition (vorläufig) Eine Konfiguration einer TM versteht man ein Paar hq, ωi ∈ Q × B+ , wobei genau ein Symbol des nichttrivialen Bandinhalts ω durch Unterstreichung markiert ist, was die Kopfposition festlegt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 19 / 236 Turingmaschinen Vorüberlegung Konfigurationen Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen Bandinhalt und die Position des Kopfes bestimmen. Die Konvention, Eingaben zunächst zu internalisieren, erübrigt die Buchführung über den noch zu bearbeitenden Teil der Eingabe. Definition (vorläufig) Eine Konfiguration einer TM versteht man ein Paar hq, ωi ∈ Q × B+ , wobei genau ein Symbol des nichttrivialen Bandinhalts ω durch Unterstreichung markiert ist, was die Kopfposition festlegt. ω soll den Bereich des Bandes minimal überdecken, der die Kopfposition und alle von # verschiedenen Symbole umfaßt, darf also keine führenden oder abschließenden Blankzeichen # haben, sofern es sich nicht um den Inhalt der Kopfposition handelt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 19 / 236 Turingmaschinen Vorüberlegung Konfigurationen Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen Bandinhalt und die Position des Kopfes bestimmen. Die Konvention, Eingaben zunächst zu internalisieren, erübrigt die Buchführung über den noch zu bearbeitenden Teil der Eingabe. Definition (vorläufig) Eine Konfiguration einer TM versteht man ein Paar hq, ωi ∈ Q × B+ , wobei genau ein Symbol des nichttrivialen Bandinhalts ω durch Unterstreichung markiert ist, was die Kopfposition festlegt. ω soll den Bereich des Bandes minimal überdecken, der die Kopfposition und alle von # verschiedenen Symbole umfaßt, darf also keine führenden oder abschließenden Blankzeichen # haben, sofern es sich nicht um den Inhalt der Kopfposition handelt. Genauer: ω ∈ ((B − {#}) × B∗ + {ε}) × B × (B∗ × (B − {#}) + {ε})) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 19 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer, sprechen wir von einer Haltekonfiguration. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer, sprechen wir von einer Haltekonfiguration. Im Fall von hq, siδ 6= ∅ können sich bei einer Folgekonfiguration ( ` ) Zustand, Inhalt des aktuellen Feldes und neue Kopfposition gemäß den Elementen von hq, siδ ändern. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer, sprechen wir von einer Haltekonfiguration. Im Fall von hq, siδ 6= ∅ können sich bei einer Folgekonfiguration ( ` ) Zustand, Inhalt des aktuellen Feldes und neue Kopfposition gemäß den Elementen von hq, siδ ändern. Unter einer Berechnung mit Eingabe w ∈ Σ∗ versteht man eine endliche oder unendliche Konfigurationenfolge Ki ` Ki+1 , wobei K0 eine Initialkonfiguration mit Eingabe w , und im endlichen Fall die letzte Konfiguration eine Haltekonfiguration ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer, sprechen wir von einer Haltekonfiguration. Im Fall von hq, siδ 6= ∅ können sich bei einer Folgekonfiguration ( ` ) Zustand, Inhalt des aktuellen Feldes und neue Kopfposition gemäß den Elementen von hq, siδ ändern. Unter einer Berechnung mit Eingabe w ∈ Σ∗ versteht man eine endliche oder unendliche Konfigurationenfolge Ki ` Ki+1 , wobei K0 eine Initialkonfiguration mit Eingabe w , und im endlichen Fall die letzte Konfiguration eine Haltekonfiguration ist. Eine Berechnung akzeptiert ihre Eingabe genau dann, wenn sie in einer Haltekonfiguration mit Zustand qF endet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Definition (Fortsetzung) Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer, sprechen wir von einer Haltekonfiguration. Im Fall von hq, siδ 6= ∅ können sich bei einer Folgekonfiguration ( ` ) Zustand, Inhalt des aktuellen Feldes und neue Kopfposition gemäß den Elementen von hq, siδ ändern. Unter einer Berechnung mit Eingabe w ∈ Σ∗ versteht man eine endliche oder unendliche Konfigurationenfolge Ki ` Ki+1 , wobei K0 eine Initialkonfiguration mit Eingabe w , und im endlichen Fall die letzte Konfiguration eine Haltekonfiguration ist. Eine Berechnung akzeptiert ihre Eingabe genau dann, wenn sie in einer Haltekonfiguration mit Zustand qF endet. Die spezielle Form der Initialkonfiguration resultiert aus einem Linksschritt nach Übertragung der Eingabe auf des Band von links nach rechts. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 20 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls b ∈ B so schreiben wir q b||ϕ p anstelle von hhq, bi, hp, ϕii ∈ δ wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls b ∈ B so schreiben wir q b||ϕ p anstelle von hhq, bi, hp, ϕii ∈ δ wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere) Anfangsund Endzustand wird markiert wie zuvor. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls b ∈ B so schreiben wir q b||ϕ p anstelle von hhq, bi, hp, ϕii ∈ δ wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere) Anfangsund Endzustand wird markiert wie zuvor. Die Einschränkungen bzgl. der Komponierbarkeit solcher Übergänge bei Kellerautomaten gilt sinngemäß auch für Turingmaschinen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls b ∈ B so schreiben wir q b||ϕ p anstelle von hhq, bi, hp, ϕii ∈ δ wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere) Anfangsund Endzustand wird markiert wie zuvor. Die Einschränkungen bzgl. der Komponierbarkeit solcher Übergänge bei Kellerautomaten gilt sinngemäß auch für Turingmaschinen. Satz Jede Sprache, die von einer langsamen TM akzeptiert wird, wird auch von einer schnellen TM akzeptiert, und umgekehrt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Darstellung von Turingmaschinen Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls b ∈ B so schreiben wir q b||ϕ p anstelle von hhq, bi, hp, ϕii ∈ δ wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere) Anfangsund Endzustand wird markiert wie zuvor. Die Einschränkungen bzgl. der Komponierbarkeit solcher Übergänge bei Kellerautomaten gilt sinngemäß auch für Turingmaschinen. Satz Jede Sprache, die von einer langsamen TM akzeptiert wird, wird auch von einer schnellen TM akzeptiert, und umgekehrt. Beweis. H.A. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 21 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! qc1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! qc1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 B||hB, Li SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! qc1 qF Jürgen Koslowski (TU-BS) B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! qb← c||h#, Li qF Jürgen Koslowski (TU-BS) qc1 B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! qb← B||hB, Li, c||hc, Li c||h#, Li qF Jürgen Koslowski (TU-BS) qc1 B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! q← b||hB, Li qb← B||hB, Li, c||hc, Li c||h#, Li qF Jürgen Koslowski (TU-BS) qc1 B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li q← b||hB, Li qb← B||hB, Li, c||hc, Li c||h#, Li qF Jürgen Koslowski (TU-BS) qc1 B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 b||hB, Li q← #||h#, Ri B||hB, Li, c||hc, Li c||h#, Li qF Jürgen Koslowski (TU-BS) qb← qc1 B||hB, Li #||h#, Ni Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri b||hB, Li q← #||h#, Ri qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni qa2 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri b||hB, Li q← #||h#, Ri qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni qa2 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri b||hB, Li q← #||h#, Ri #||h#, Ni qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni qa2 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 b||hB, Li q← #||h#, Ri #||h#, Ni qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni a||h#, Ri q→b Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 #||h#, Ri #||h#, Ni qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni a||h#, Ri a||ha, Ri, B||hB, Ri Jürgen Koslowski (TU-BS) b||hB, Li q← q→b Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 #||h#, Ri #||h#, Ni qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni a||h#, Ri a||ha, Ri, B||hB, Ri Jürgen Koslowski (TU-BS) b||hB, Li q← q→b q→ b||hB, Ri Theoretische Informatik 2 SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 #||h#, Ri #||h#, Ni qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni a||h#, Ri a||ha, Ri, B||hB, Ri Jürgen Koslowski (TU-BS) b||hB, Li q← q→b q→ b||hB, Ri Theoretische Informatik 2 b||hb, Ri, B||hB, Ri, c||hc, Ri SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 #||h#, Ri #||h#, Ni q→b qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 B||hB, Li #||h#, Ni #||h#, Li a||h#, Ri a||ha, Ri, B||hB, Ri Jürgen Koslowski (TU-BS) b||hB, Li q← q→ b||hB, Ri Theoretische Informatik 2 qc2 b||hb, Ri, B||hB, Ri, c||hc, Ri SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM) Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe. Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts löschen, das erste b von rechts mit B überschreiben und das letzte a von rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie! a||ha, Li, B||hB, Li, b||hb, Li qa1 a||h#, Ri B||hB, Ri qa2 #||h#, Ri #||h#, Ni q→b qb← B||hB, Li, c||hc, Li c||h#, Li qF qc1 q→ b||hB, Ri Theoretische Informatik 2 B||hB, Li c||h#, Li #||h#, Ni #||h#, Li a||h#, Ri a||ha, Ri, B||hB, Ri Jürgen Koslowski (TU-BS) b||hB, Li q← qc2 b||hb, Ri, B||hB, Ri, c||hc, Ri SS 2015 22 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM) Die obige Maschine kann mechanisch(!) durch eine langsame Maschine simuliert werden (vergl. HA), was an 6 Stellen je einen weiteren Zustand erfordert (farbig markiert): Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 23 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM) Die obige Maschine kann mechanisch(!) durch eine langsame Maschine simuliert werden (vergl. HA), was an 6 Stellen je einen weiteren Zustand erfordert (farbig markiert): a, B, b||L qa1 qF B, c||L q→b qc1 #||L q→ b||hB, Ri Theoretische Informatik 2 B||L c||h#, Li #||# a||h#, Ri a, B||R Jürgen Koslowski (TU-BS) qb← c||h#, Li #||# qa2 b||hB, Li #||R a||h#, Ri B||R q← qc2 b, B, c||R SS 2015 23 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM) Die obige Maschine kann mechanisch(!) durch eine langsame Maschine simuliert werden (vergl. HA), was an 6 Stellen je einen weiteren Zustand erfordert (farbig markiert): a, B, b||L qa1 qb← qF q→b qc1 #||L q→ b||hB, Ri B||L c||h#, Li #||# a||h#, Ri a, B||R B, c||L c||h#, Li #||# qa2 b||hB, Li #||R a||h#, Ri B||R q← qc2 b, B, c||R In den blau markierten Fällen läßt sich jeweils der Hilfszustand mit dem Zielzustand verschmelzen, in den rot markierten Fällen ist das nicht möglich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 23 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM) Die obige Maschine kann mechanisch(!) durch eine langsame Maschine simuliert werden (vergl. HA), was an 6 Stellen je einen weiteren Zustand erfordert (farbig markiert): a, B, b||L qa1 qb← qF q→b qc1 #||L q→ b||hB, Ri B||L c||h#, Li #||# a||h#, Ri a, B||R B, c||L c||h#, Li #||# qa2 b||hB, Li #||R a||h#, Ri B||R q← qc2 b, B, c||R In den blau markierten Fällen läßt sich jeweils der Hilfszustand mit dem Zielzustand verschmelzen, in den rot markierten Fällen ist das nicht möglich. Das führt zu umseitiger TM mit zwei zusätzlichen Zuständen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 23 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM, Fortsetzung) #, B, c||L a, B, b||L qa0 #||R q← b||B qb← c||# a||# qa1 #||R B||R qF #||# qa2 #||# #||L qc1 a||# c||# q→b #, a, B||R Jürgen Koslowski (TU-BS) B||L qc0 q→ b||B #||L qc2 b, B, c||R Theoretische Informatik 2 SS 2015 24 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM, Fortsetzung) #, B, c||L a, B, b||L qa0 #||R q← b||B qb← c||# a||# qa1 #||R B||R qF #||# qa2 B||L qc0 #||# #||L qc1 a||# c||# q→b #, a, B||R q→ b||B #||L qc2 b, B, c||R Eine solche langsame TM direkt zu entwerfen, wird i.A. schwieriger sein, als den Umweg über die schnelle TM zu gehen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 24 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM, Fortsetzung) #, B, c||L a, B, b||L qa0 #||R q← b||B qb← c||# a||# qa1 #||R B||R qF #||# qa2 B||L qc0 #||# #||L qc1 a||# c||# q→b #, a, B||R q→ b||B #||L qc2 b, B, c||R Eine solche langsame TM direkt zu entwerfen, wird i.A. schwieriger sein, als den Umweg über die schnelle TM zu gehen. Noch aufwändiger wird die Konstruktion, wenn das Bandalphabet auf Σ + {#} beschränkt ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 24 / 236 Turingmaschinen Vorüberlegung Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM, Fortsetzung) #, B, c||L a, B, b||L qa0 #||R q← b||B qb← c||# a||# qa1 #||R B||R qF #||# qa2 B||L qc0 #||# #||L qc1 a||# c||# q→b #, a, B||R q→ b||B #||L qc2 b, B, c||R Eine solche langsame TM direkt zu entwerfen, wird i.A. schwieriger sein, als den Umweg über die schnelle TM zu gehen. Noch aufwändiger wird die Konstruktion, wenn das Bandalphabet auf Σ + {#} beschränkt ist. In diesem Fall wäre auf das Löschsymbol B zu verzichten (siehe HA). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 24 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Definition Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Definition Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Als Blanksymbol dieser 1-Band Maschine dient das n -Tupel h#, . . . , #i . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Definition Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Als Blanksymbol dieser 1-Band Maschine dient das n -Tupel h#, . . . , #i . Zur Interpretation von Wörtern in Σ∗ als Eingaben für die Mehr-Spur Maschine dient die Einbettung B h Bn , die alle Komponenten mit positivem Index auf # setzt; d.h., Eingaben aus Σ∗ stehen auf Spur 0. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Definition Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Als Blanksymbol dieser 1-Band Maschine dient das n -Tupel h#, . . . , #i . Zur Interpretation von Wörtern in Σ∗ als Eingaben für die Mehr-Spur Maschine dient die Einbettung B h Bn , die alle Komponenten mit positivem Index auf # setzt; d.h., Eingaben aus Σ∗ stehen auf Spur 0. Der Kopf ließt/schreibt immer in allen Spuren gleichzeitig, und die Bewegung erfolgt auch in allen Spuren synchron in derselben Richtung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Definition Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs: Definition Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Als Blanksymbol dieser 1-Band Maschine dient das n -Tupel h#, . . . , #i . Zur Interpretation von Wörtern in Σ∗ als Eingaben für die Mehr-Spur Maschine dient die Einbettung B h Bn , die alle Komponenten mit positivem Index auf # setzt; d.h., Eingaben aus Σ∗ stehen auf Spur 0. Der Kopf ließt/schreibt immer in allen Spuren gleichzeitig, und die Bewegung erfolgt auch in allen Spuren synchron in derselben Richtung. Satz Von Mehr-Spur TMs akzeptierte Sprachen sind semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 25 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Definition Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form Q × Bn δ Q ×(B+{L, R})n Jürgen Koslowski (TU-BS) bzw. Q × Bn Theoretische Informatik 2 δ Q ×(B×{L, R, N})n SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Definition Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form Q × Bn δ Q ×(B+{L, R})n bzw. Q × Bn δ Q ×(B×{L, R, N})n Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen starten mit der Eingabe auf Band 0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Definition Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form Q × Bn δ Q ×(B+{L, R})n bzw. Q × Bn δ Q ×(B×{L, R, N})n Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen starten mit der Eingabe auf Band 0 . Die graphische Darstellung verwendet Label der Form β||A0 ; A1 ; . . . ; An−1 mit β ∈ Bn und n Aktionen Ai . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Definition Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form Q × Bn δ Q ×(B+{L, R})n bzw. Q × Bn δ Q ×(B×{L, R, N})n Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen starten mit der Eingabe auf Band 0 . Die graphische Darstellung verwendet Label der Form β||A0 ; A1 ; . . . ; An−1 mit β ∈ Bn und n Aktionen Ai . Wesentlich ist, dass die n Köpfe unabhängig auf den n Bändern agieren können. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Beweis. Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren. Definition Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form Q × Bn δ Q ×(B+{L, R})n bzw. Q × Bn δ Q ×(B×{L, R, N})n Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen starten mit der Eingabe auf Band 0 . Die graphische Darstellung verwendet Label der Form β||A0 ; A1 ; . . . ; An−1 mit β ∈ Bn und n Aktionen Ai . Wesentlich ist, dass die n Köpfe unabhängig auf den n Bändern agieren können. Hier zeigt sich der Nutzen von N bei schnellen Maschinen! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 26 / 236 Turingmaschinen Vorüberlegung Satz Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 27 / 236 Turingmaschinen Vorüberlegung Satz Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar. Beweis (Idee) Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern entsprechen, und auf deren ungeraden Spuren über die jeweiligen Kopfpositionen buchgeführt wird, durch Markierungen in der relevanten Spalte. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 27 / 236 Turingmaschinen Vorüberlegung Satz Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar. Beweis (Idee) Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern entsprechen, und auf deren ungeraden Spuren über die jeweiligen Kopfpositionen buchgeführt wird, durch Markierungen in der relevanten Spalte. Weiterhin ist es möglich, das (potentiell beideitig unendliche) Turingband durch einen 2- oder höherdimensionalen Speicher zu ersetzen, der ebenfalls in Zellen aufgeteilt ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 27 / 236 Turingmaschinen Vorüberlegung Satz Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar. Beweis (Idee) Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern entsprechen, und auf deren ungeraden Spuren über die jeweiligen Kopfpositionen buchgeführt wird, durch Markierungen in der relevanten Spalte. Weiterhin ist es möglich, das (potentiell beideitig unendliche) Turingband durch einen 2- oder höherdimensionalen Speicher zu ersetzen, der ebenfalls in Zellen aufgeteilt ist. Entsprechend wäre dann auch die Beweglichkeit des Kopfes zu erhöhen, im 2-dimensionalen Fall nicht nur nach links bzw. rechts, sondern auch nach unten bzw. oben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 27 / 236 Turingmaschinen Vorüberlegung Satz Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar. Beweis (Idee) Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern entsprechen, und auf deren ungeraden Spuren über die jeweiligen Kopfpositionen buchgeführt wird, durch Markierungen in der relevanten Spalte. Weiterhin ist es möglich, das (potentiell beideitig unendliche) Turingband durch einen 2- oder höherdimensionalen Speicher zu ersetzen, der ebenfalls in Zellen aufgeteilt ist. Entsprechend wäre dann auch die Beweglichkeit des Kopfes zu erhöhen, im 2-dimensionalen Fall nicht nur nach links bzw. rechts, sondern auch nach unten bzw. oben. Der Beweis, dass auch diese Verallgemeinerung die Leistungsfähigkeit des Maschinenmodells nicht vergrößert, ist den Lesern überlassen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 27 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden. Dort finden alle weiteren Berechnungen statt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden. Dort finden alle weiteren Berechnungen statt. Wegen (n − 1)2 = n2 − 2n + 1 = n2 − 2(n − 1) − 1 können wir dann ggf. in mehreren Durchläufen auf diesen Bändern zunächst je eine Null und eine Eins, und dann für jede verbliebene Eins weitere zwei Nullen löschen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden. Dort finden alle weiteren Berechnungen statt. Wegen (n − 1)2 = n2 − 2n + 1 = n2 − 2(n − 1) − 1 können wir dann ggf. in mehreren Durchläufen auf diesen Bändern zunächst je eine Null und eine Eins, und dann für jede verbliebene Eins weitere zwei Nullen löschen. Dabei werden die Einsen auf B2 in beiden Richtungen, die Nullen auf B1 aber nur in einer Richtung durchlaufen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden. Dort finden alle weiteren Berechnungen statt. Wegen (n − 1)2 = n2 − 2n + 1 = n2 − 2(n − 1) − 1 können wir dann ggf. in mehreren Durchläufen auf diesen Bändern zunächst je eine Null und eine Eins, und dann für jede verbliebene Eins weitere zwei Nullen löschen. Dabei werden die Einsen auf B2 in beiden Richtungen, die Nullen auf B1 aber nur in einer Richtung durchlaufen. Gelingt die Löschung aller Symbole, wird die Eingabe akzeptiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar: Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden. Dort finden alle weiteren Berechnungen statt. Wegen (n − 1)2 = n2 − 2n + 1 = n2 − 2(n − 1) − 1 können wir dann ggf. in mehreren Durchläufen auf diesen Bändern zunächst je eine Null und eine Eins, und dann für jede verbliebene Eins weitere zwei Nullen löschen. Dabei werden die Einsen auf B2 in beiden Richtungen, die Nullen auf B1 aber nur in einer Richtung durchlaufen. Gelingt die Löschung aller Symbole, wird die Eingabe akzeptiert. Bei der umseitigen Realisierung sind Aktionen, die weder Kopfposition noch Bandinhalt verändern, durch “ − ” abgekürzt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 28 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start Jürgen Koslowski (TU-BS) q0 Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start Jürgen Koslowski (TU-BS) q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri q1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri q1 h#, #, #i||−, −, − qF Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri q2 h#, 0, 1i||−, h#, Ri; h#, Ri q1 h#, #, #i||−, −, − qF Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri q2 h#, 0, 1i||−, h#, Ri; h#, Ri h# ,# ,# i||− q1 ,− ,− h#, #, #i||−, −, − qF Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri q2 h#, 0, 1i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ri h# ,# ,# i||− q1 ,− ,− h#, #, #i||−, −, − qF q3 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni q2 h# ,# ,# i||− q1 ,− ,− h#, #, #i||−, −, − qF q3 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h#, Ri h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni q2 q3 i||− q1 ,− ,− h#, #, #i||−, −, − qF h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h#, Ri h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni q2 q3 i||− q1 ,− ,− h#, #, #i||−, −, − qF h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h#, Ri h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni q2 q3 i||− q1 ,− ,− h#, #, #i||−, −, − qF h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 h#, 0, 1i||−, h#, Ri; h#, Li Theoretische Informatik 2 q5 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h#, Ri h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni q2 q3 i||− q1 ,− ,− h#, #, #i||−, −, − qF h# , h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 #, #i ||− ,− ,− h#, 0, 1i||−, h#, Ri; h#, Li Theoretische Informatik 2 q5 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ri h#, 0, 1i||−, h#, Ri; h1, Ni h# ,# ,# q3 i||− q1 ,− ,− q6 h#, 0, 1i||−, h#, Ri; h1, Li h#, 0, 1i||−, h#, Ri; h#, Ri q2 h#, #, #i||−, −, − qF h# , h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 #, #i ||− ,− ,− h#, 0, 1i||−, h#, Ri; h#, Li Theoretische Informatik 2 q5 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ni h#, 0, 1i||−, h#, Ri; h1, Ri q3 i||− q1 ,− ,− q6 h#, #, #i||−, −, − qF h# , h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 #, #i ||− ,− ,− h#, 0, 1i||−, h#, Ri; h#, Li Theoretische Informatik 2 h#, 0, 1i||−, h#, Ri; h1, Ni h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Li h#, 0, 1i||−, h#, Ri; h#, Ri q2 q5 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ni h#, 0, 1i||−, h#, Ri; h1, Ri q3 i||− q1 ,− ,− h#, 0, #i||−, h#, Ri; h#, Ri h#, #, #i||−, −, − qF h# , h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li Jürgen Koslowski (TU-BS) q4 #, #i ||− ,− ,− h#, 0, 1i||−, h#, Ri; h#, Li Theoretische Informatik 2 q6 h#, 0, 1i||−, h#, Ri; h1, Ni h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Li h#, 0, 1i||−, h#, Ri; h#, Ri q2 q5 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Beispiel (Fortsetzung) start q0 h0, #, #i||h#, Li; h0, Li; h#, Ni h1, #, #i||h#, Li; h#, Ni; h1, Li h#, #, #i||−, h#, Ri; h#, Ri h#, 0, 1i||−, h#, Ri; h1, Ni h#, 0, 1i||−, h#, Ri; h1, Ri q3 i||− q1 ,− ,− h#, 0, #i||−, h#, Ri; h#, Ri h#, #, #i||−, −, − qF h# , h#, #, #i||−, −, − h#, 0, #i||−, h#, Ri; h#, Li q4 #, #i ||− ,− ,− h#, 0, 1i||−, h#, Ri; h#, Li q6 h#, 0, 1i||−, h#, Ri; h1, Ni h# ,# ,# h#, 0, 1i||−, h#, Ri; h1, Li h#, 0, 1i||−, h#, Ri; h#, Ri q2 q5 In Zukunft werden wir nicht alle TMs so detailliert beschreiben können, sondern uns meist auf informelle Spezifikationen beschränken. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 29 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } Jürgen Koslowski (TU-BS) und Zr := { n ∈ N : n < r } Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } und Zr := { n ∈ N : n < r } Falls r > 1 ist M nicht deterministisch und wir konstruieren eine deterministische 4-Band Maschine M0 mit L(M0 ) = L : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } und Zr := { n ∈ N : n < r } Falls r > 1 ist M nicht deterministisch und wir konstruieren eine deterministische 4-Band Maschine M0 mit L(M0 ) = L : B0 enthält die Eingabe w ∈ Σ∗ ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } und Zr := { n ∈ N : n < r } Falls r > 1 ist M nicht deterministisch und wir konstruieren eine deterministische 4-Band Maschine M0 mit L(M0 ) = L : B0 enthält die Eingabe w ∈ Σ∗ ; auf B1 werden systematisch die Zahlen k ∈ N erzeugt (unär); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } und Zr := { n ∈ N : n < r } Falls r > 1 ist M nicht deterministisch und wir konstruieren eine deterministische 4-Band Maschine M0 mit L(M0 ) = L : B0 enthält die Eingabe w ∈ Σ∗ ; auf B1 werden systematisch die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die k -Tupel ϕ ∈ (Zr )k erzeugt; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Satz Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert. Beweis Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze r := max{ ρhq, bi : hq, bi ∈ Q × B } und Zr := { n ∈ N : n < r } Falls r > 1 ist M nicht deterministisch und wir konstruieren eine deterministische 4-Band Maschine M0 mit L(M0 ) = L : B0 enthält die Eingabe w ∈ Σ∗ ; auf B1 werden systematisch die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die k -Tupel ϕ ∈ (Zr )k erzeugt; Band B3 dient zur Simulation des durch ϕ spezifizierten Anfangsstücks einer M-Berechung der Länge ≤ k mit Eingabe w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 30 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Per Zustand wird darüber buchgeführt, ob Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Per Zustand wird darüber buchgeführt, ob ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird w von M0 akzeptiert; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Per Zustand wird darüber buchgeführt, ob ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird w von M0 akzeptiert; andernfalls wird ϕ auf B2 und ggf. k auf B1 aktualisiert und fortgefahren; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Per Zustand wird darüber buchgeführt, ob ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird w von M0 akzeptiert; andernfalls wird ϕ auf B2 und ggf. k auf B1 aktualisiert und fortgefahren; alle potentiellen Wege der Länge k in nicht akzeptierenden Haltekonfigurationen enden, dann hält M0 ohne zu akzeptieren; andernfalls wird k auf B1 erhöht und fortgefahren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Vorüberlegung Beweis (Fortsetzung) Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k : . sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt, sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht. Per Zustand wird darüber buchgeführt, ob ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird w von M0 akzeptiert; andernfalls wird ϕ auf B2 und ggf. k auf B1 aktualisiert und fortgefahren; alle potentiellen Wege der Länge k in nicht akzeptierenden Haltekonfigurationen enden, dann hält M0 ohne zu akzeptieren; andernfalls wird k auf B1 erhöht und fortgefahren. Beachte: Falls M immer hält, hat auch M0 diese Eigenschaft. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 31 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Entscheidbare Sprachen/Probleme Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer” Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 32 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Entscheidbare Sprachen/Probleme Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer” Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht. Definition Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird, die immer hält. (Man kann sich auf dTMs beschränken.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 32 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Entscheidbare Sprachen/Probleme Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer” Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht. Definition Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird, die immer hält. (Man kann sich auf dTMs beschränken.) Entscheidbare Sprachen sind semi-entscheidbar, aber die umgekehrte Inklusion gilt nicht (Beispiel später). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 32 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Entscheidbare Sprachen/Probleme Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer” Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht. Definition Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird, die immer hält. (Man kann sich auf dTMs beschränken.) Entscheidbare Sprachen sind semi-entscheidbar, aber die umgekehrte Inklusion gilt nicht (Beispiel später). Alternativ heißen semi-entscheidbare/entscheidbare Sprachen in der Literatur auch “rekursiv aufzählbar”/“rekursiv”. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 32 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Entscheidbare Sprachen/Probleme Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer” Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht. Definition Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird, die immer hält. (Man kann sich auf dTMs beschränken.) Entscheidbare Sprachen sind semi-entscheidbar, aber die umgekehrte Inklusion gilt nicht (Beispiel später). Alternativ heißen semi-entscheidbare/entscheidbare Sprachen in der Literatur auch “rekursiv aufzählbar”/“rekursiv”. Hintergrund: rekursiv aufzählbare Sprachen können von einer dTM “aufgelistet” werden, wobei Wiederholungen erlaubt sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 32 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Definition Die von einer dTM T aufgezählte Sprache G(T) besteht aus den Wörtern w ∈ Σ∗ , die in T-Konfigurationen der Form hqF , ωl bw #ωr ; . . .i mit b ∈ B , ωl , ωr ∈ B∗ vorkommen, wenn T von hq0 , #; . . . ; #i aus startet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 33 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Definition Die von einer dTM T aufgezählte Sprache G(T) besteht aus den Wörtern w ∈ Σ∗ , die in T-Konfigurationen der Form hqF , ωl bw #ωr ; . . .i mit b ∈ B , ωl , ωr ∈ B∗ vorkommen, wenn T von hq0 , #; . . . ; #i aus startet. Satz Jede Sprache der Form G(T) ist semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 33 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Definition Die von einer dTM T aufgezählte Sprache G(T) besteht aus den Wörtern w ∈ Σ∗ , die in T-Konfigurationen der Form hqF , ωl bw #ωr ; . . .i mit b ∈ B , ωl , ωr ∈ B∗ vorkommen, wenn T von hq0 , #; . . . ; #i aus startet. Satz Jede Sprache der Form G(T) ist semi-entscheidbar. Beweis. M habe ein Band mehr als die n -Band Maschine T , verwendet Bn für die Eingabe und simuliert T auf den ersten n Bändern. Erreicht T eine Konfiguration mit Zustand qF , wird das Σ-Wort rechts des Kopfes auf B0 mit der M-Eingabe auf Bn verglichen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 33 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Definition Die von einer dTM T aufgezählte Sprache G(T) besteht aus den Wörtern w ∈ Σ∗ , die in T-Konfigurationen der Form hqF , ωl bw #ωr ; . . .i mit b ∈ B , ωl , ωr ∈ B∗ vorkommen, wenn T von hq0 , #; . . . ; #i aus startet. Satz Jede Sprache der Form G(T) ist semi-entscheidbar. Beweis. M habe ein Band mehr als die n -Band Maschine T , verwendet Bn für die Eingabe und simuliert T auf den ersten n Bändern. Erreicht T eine Konfiguration mit Zustand qF , wird das Σ-Wort rechts des Kopfes auf B0 mit der M-Eingabe auf Bn verglichen. Satz Jede semi-entscheidbare Sprache ist von der Form G(T) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 33 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; auf B3 werden bis zu k Schritte der M-Berechnung des Worts w auf B2 simuliert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; auf B3 werden bis zu k Schritte der M-Berechnung des Worts w auf B2 simuliert. − Im Fall der Akzeptanz wird w nach B0 kopiert, der Kopf links davon positioniert und der Zustand qF angenommen. Anschließend wird B0 gelöscht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; auf B3 werden bis zu k Schritte der M-Berechnung des Worts w auf B2 simuliert. − Im Fall der Akzeptanz wird w nach B0 kopiert, der Kopf links davon positioniert und der Zustand qF angenommen. Anschließend wird B0 gelöscht. − Danach wird das nächste Wort auf B2 erzeugt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; auf B3 werden bis zu k Schritte der M-Berechnung des Worts w auf B2 simuliert. − Im Fall der Akzeptanz wird w nach B0 kopiert, der Kopf links davon positioniert und der Zustand qF angenommen. Anschließend wird B0 gelöscht. − Danach wird das nächste Wort auf B2 erzeugt. − Nach Bearbeitung aller Wörter der Länge ≤ k wird k auf B1 erhöht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Beweis. Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T : B0 ist leer und dient zur Aufzählung von L (s.u.); auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär); auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt; auf B3 werden bis zu k Schritte der M-Berechnung des Worts w auf B2 simuliert. − Im Fall der Akzeptanz wird w nach B0 kopiert, der Kopf links davon positioniert und der Zustand qF angenommen. Anschließend wird B0 gelöscht. − Danach wird das nächste Wort auf B2 erzeugt. − Nach Bearbeitung aller Wörter der Länge ≤ k wird k auf B1 erhöht. Per Zustand kann darüber buchgeführt werden, ob alle Wörter der Länge ≤ k zu nicht akzeptierenden Haltekonfigurationen führen. Weil M deterministisch ist, muß L(M) dann endlich sein und T kann halten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 34 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Beweis. Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer hält, also ist L semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Beweis. Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir eine dTM M0 mit L = L(M0 ) , die immer hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Beweis. Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir eine dTM M0 mit L = L(M0 ) , die immer hält. Ein neuer Endzustand q∗ und neue Übergänge hq, bi 7→ hq∗ , bi bzw. hq∗ , hb, Nii falls q 6= qF und 0 0 hq, biδ 0 = ∅ , liefern dann eine dTM M̄ mit L(M̄ ) = L̄ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Beweis. Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir eine dTM M0 mit L = L(M0 ) , die immer hält. Ein neuer Endzustand q∗ und neue Übergänge hq, bi 7→ hq∗ , bi bzw. hq∗ , hb, Nii falls q 6= qF und 0 0 hq, biδ 0 = ∅ , liefern dann eine dTM M̄ mit L(M̄ ) = L̄ . Umgekehrt lassen wir dTMs M und M̄ mit L(M) = L und L(M̄) = L̄ mittels Interleaving dieselbe Eingabe bearbeiten. Die resultierende Maschine K hält genau dann, wenn eine der Teilmaschinen hält, und sie möge genau dann akzeptieren, wenn M hält und akzeptiert, oder wenn M̄ hält und nicht akzeptiert. Dann hält K immer und erfüllt L(K) = L . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Entscheidbare Sprachen/Probleme Satz Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr Komplement L̄ := Σ∗ − L semi-entscheidbar sind. Beweis. Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir eine dTM M0 mit L = L(M0 ) , die immer hält. Ein neuer Endzustand q∗ und neue Übergänge hq, bi 7→ hq∗ , bi bzw. hq∗ , hb, Nii falls q 6= qF und 0 0 hq, biδ 0 = ∅ , liefern dann eine dTM M̄ mit L(M̄ ) = L̄ . Umgekehrt lassen wir dTMs M und M̄ mit L(M) = L und L(M̄) = L̄ mittels Interleaving dieselbe Eingabe bearbeiten. Die resultierende Maschine K hält genau dann, wenn eine der Teilmaschinen hält, und sie möge genau dann akzeptieren, wenn M hält und akzeptiert, oder wenn M̄ hält und nicht akzeptiert. Dann hält K immer und erfüllt L(K) = L . In beiden Fällen ist die Verwendung von dTMs wesentlich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 35 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über {0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über {0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.) Andererseits ist die Potenzmenge P(Σ∗ ) überabzählbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über {0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.) Andererseits ist die Potenzmenge P(Σ∗ ) überabzählbar. Die meisten Sprachen über {0, 1} sind also nicht semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über {0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.) Andererseits ist die Potenzmenge P(Σ∗ ) überabzählbar. Die meisten Sprachen über {0, 1} sind also nicht semi-entscheidbar. Konkret gilt dies etwa für Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die Chomsky-Hierarchie formaler Sprachen Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über {0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.) Andererseits ist die Potenzmenge P(Σ∗ ) überabzählbar. Die meisten Sprachen über {0, 1} sind also nicht semi-entscheidbar. Konkret gilt dies etwa für Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Lcode besteht also aus den Binärcodes aller TMs, die ihr eigenes Codewort nicht akzeptieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 36 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Lcode ist nicht semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 37 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Lcode ist nicht semi-entscheidbar. Beweis. Wenn eine TM M mit L(M) = Lcode existiert, erfüllt w = c(M) die Bedingung w ∈ L(M) = Lcode gdw. w ∈ / L(M) = Lcode , Widerspruch. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 37 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Lcode ist nicht semi-entscheidbar. Beweis. Wenn eine TM M mit L(M) = Lcode existiert, erfüllt w = c(M) die Bedingung w ∈ L(M) = Lcode gdw. w ∈ / L(M) = Lcode , Widerspruch. Die Trennung der entscheidbaren von den semi-entscheidbaren Sprachen erfolgt in Kapitel 7 mit Hilfe der Sprache Lhalt := { c(M)w : M TM, die bei Eingabe w hält } die semi-entscheidbar aber nicht entscheidbar ist (Halteproblem). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 37 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Beweis. Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Beweis. Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache semi-entscheidbar. Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten beginnen, der immer hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Beweis. Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache semi-entscheidbar. Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten beginnen, der immer hält. Dies ist sicher der Fall, wenn keine spontanen Übergänge auftreten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Beweis. Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache semi-entscheidbar. Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten beginnen, der immer hält. Dies ist sicher der Fall, wenn keine spontanen Übergänge auftreten. Und letzteres kann garantiert werden, wenn der Kellerautomat ausgehend von einer kontextfreien Grammatik in Greibach Normalform konstruiert wird (vergl. Skript zu TheoInf 1). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Satz Jede kontextfreie Sprache ist entscheidbar. Beweis. Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache semi-entscheidbar. Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten beginnen, der immer hält. Dies ist sicher der Fall, wenn keine spontanen Übergänge auftreten. Und letzteres kann garantiert werden, wenn der Kellerautomat ausgehend von einer kontextfreien Grammatik in Greibach Normalform konstruiert wird (vergl. Skript zu TheoInf 1). Alternativ könnte man den CYK-Algorithmus per TM implementieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 38 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ; die regulären Sprachen, {a2n : n ∈ N } ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ; die regulären Sprachen, {a2n : n ∈ N } ; die endlichen Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ; die regulären Sprachen, {a2n : n ∈ N } ; die endlichen Sprachen. Nicht betrachtet wurde die Klasse der kontext-sensitiven Sprachen, echt zwischen den Klassen der kontextfreien und der entscheidbaren Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Die Chomsky-Hierarchie formaler Sprachen Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an: Alle Sprachen, Lcode ; die semi-entscheidbaren Sprachen, Lhalt , s.u.; die entscheidbaren Sprachen, { an b n c n : n ∈ N } ; die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ; die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ; die regulären Sprachen, {a2n : n ∈ N } ; die endlichen Sprachen. Nicht betrachtet wurde die Klasse der kontext-sensitiven Sprachen, echt zwischen den Klassen der kontextfreien und der entscheidbaren Sprachen. Man spricht in diesem Zusammenhang auch von der Chomsky-Hierarchie. Sie wurde von Noam Chomsky Mitte der 1950’er Jahre entwickelt. Allerdings lag der Schwerpunkt damals auf linguistischen Fragestellungen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 39 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Residuierung bzgl. endlicher Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Residuierung bzgl. endlicher Sprachen. homomorphen Bildern und Urbildern. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Residuierung bzgl. endlicher Sprachen. homomorphen Bildern und Urbildern. Darüberhinaus sind die entscheidbaren Sprachen unter Komplementbildung abgeschlossen, die semi-entscheidbaren Sprachen aber nicht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Residuierung bzgl. endlicher Sprachen. homomorphen Bildern und Urbildern. Darüberhinaus sind die entscheidbaren Sprachen unter Komplementbildung abgeschlossen, die semi-entscheidbaren Sprachen aber nicht. Beweis Vorbemerkung: Bei s-e Sprachen erfordert die Simulation mehrerer dTMs Interleaving. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter endlicher Vereinigung und endlichem Durchschnitt; Konkatenation und Iteration (Kleene Stern); Spiegelung und Shuffle; Residuierung bzgl. endlicher Sprachen. homomorphen Bildern und Urbildern. Darüberhinaus sind die entscheidbaren Sprachen unter Komplementbildung abgeschlossen, die semi-entscheidbaren Sprachen aber nicht. Beweis Vorbemerkung: Bei s-e Sprachen erfordert die Simulation mehrerer dTMs Interleaving. Diese Einschränkung entfällt bei der Verwendung von nTMs. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 40 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Für die Spiegelung verwendet man ein neues Band um die Eingabe zu spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Für die Spiegelung verwendet man ein neues Band um die Eingabe zu spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird. Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Für die Spiegelung verwendet man ein neues Band um die Eingabe zu spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird. Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. In Kapitel 7 zeigen wir, dass das Komplement von Lhalt nicht semi-entscheidbar ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Für die Spiegelung verwendet man ein neues Band um die Eingabe zu spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird. Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. In Kapitel 7 zeigen wir, dass das Komplement von Lhalt nicht semi-entscheidbar ist. Im Falle der Konkatenation kann die Eingabe zufällig in zwei zusammenhängende Teile zerlegt werden, die dann als Eingabe für die zu simulierenden Maschinen dienen; dies liefert eine nTM. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA. Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen. Für die Spiegelung verwendet man ein neues Band um die Eingabe zu spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird. Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. In Kapitel 7 zeigen wir, dass das Komplement von Lhalt nicht semi-entscheidbar ist. Im Falle der Konkatenation kann die Eingabe zufällig in zwei zusammenhängende Teile zerlegt werden, die dann als Eingabe für die zu simulierenden Maschinen dienen; dies liefert eine nTM. Für die Iteration ist dagegen eine Zerlegung in endlich viele Teile erforderlich, die alle als Eingaben für dieselbe Maschine zu testen sind: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 41 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben. Dann wird h(w ) auf B0 geschrieben, und N mit dieser Eingabe simuliert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben. Dann wird h(w ) auf B0 geschrieben, und N mit dieser Eingabe simuliert. Falls L = L(M) ⊆ Σ∗ , ist die Eingabe w ∈ Γ∗ in h -Bilder der Buchstaben aus Σ zu zerlegen, entweder nichtdeterministisch, oder systematisch. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben. Dann wird h(w ) auf B0 geschrieben, und N mit dieser Eingabe simuliert. Falls L = L(M) ⊆ Σ∗ , ist die Eingabe w ∈ Γ∗ in h -Bilder der Buchstaben aus Σ zu zerlegen, entweder nichtdeterministisch, oder systematisch. Mit den resultierenen h -Urbildern von w ist dann M zu simulieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Beweis (Fortsetzung). Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren. Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ . Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben. Dann wird h(w ) auf B0 geschrieben, und N mit dieser Eingabe simuliert. Falls L = L(M) ⊆ Σ∗ , ist die Eingabe w ∈ Γ∗ in h -Bilder der Buchstaben aus Σ zu zerlegen, entweder nichtdeterministisch, oder systematisch. Mit den resultierenen h -Urbildern von w ist dann M zu simulieren. Gehört mindestens ein solches Urbild zu L , folgt w ∈ h[L] . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 42 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz (Semi-)entscheidbare Sprachen sind nicht unter abzählbar unendlichen Vereinigungen abgeschlossen, entscheidbare Sprachen auch nicht unter abzählbar unendlichen Durchschnitten und unter Residuierung mit unendlichen Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 43 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz (Semi-)entscheidbare Sprachen sind nicht unter abzählbar unendlichen Vereinigungen abgeschlossen, entscheidbare Sprachen auch nicht unter abzählbar unendlichen Durchschnitten und unter Residuierung mit unendlichen Sprachen. Beweis. Die Sprachen Lcode bzw. Lhalt sind abzählbar unendliche Vereinigungen regulärer Singleton-Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 43 / 236 Turingmaschinen Abschlußeigenschaften (semi-)entscheidbarer Sprachen Satz (Semi-)entscheidbare Sprachen sind nicht unter abzählbar unendlichen Vereinigungen abgeschlossen, entscheidbare Sprachen auch nicht unter abzählbar unendlichen Durchschnitten und unter Residuierung mit unendlichen Sprachen. Beweis. Die Sprachen Lcode bzw. Lhalt sind abzählbar unendliche Vereinigungen regulärer Singleton-Sprachen. Die Abgeschlossenheit der entscheidbaren Sprachen unter Komplementen impliziert wegen der de Morgan’sche Regel die Aussage über Durchschnitte, und folglich über Residuierungen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 43 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ einsetzen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 f Γ∗ 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 f Γ∗ 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ f einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die Spezifikation eines Finalzustands qF ist hier verzichtbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 Γ∗ 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ f einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die Spezifikation eines Finalzustands qF ist hier verzichtbar. Γ∗ Zu vereinbaren bleibt, welcher Teil des Bandinhalts nach dem Halt der Maschine als Funktionswert interpretiert werden soll. Wir wollen dafür das längste zusammenhängende Wort aus Γ∗ verwenden, das links neben der finalen Kopfposition auf einem designierten Band auftritt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ f einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die Spezifikation eines Finalzustands qF ist hier verzichtbar. Γ∗ Zu vereinbaren bleibt, welcher Teil des Bandinhalts nach dem Halt der Maschine als Funktionswert interpretiert werden soll. Wir wollen dafür das längste zusammenhängende Wort aus Γ∗ verwenden, das links neben der finalen Kopfposition auf einem designierten Band auftritt. Das Feld des Kopfes gehört nicht dazu, aber nach einem Linksschritt könnte die Ausgabe ggf. als Eingabe für eine weitere Maschine verwendet werden, sofern das restliche Band leer ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Turing-berechenbare partielle Funktionen Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ f einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die Spezifikation eines Finalzustands qF ist hier verzichtbar. Γ∗ Zu vereinbaren bleibt, welcher Teil des Bandinhalts nach dem Halt der Maschine als Funktionswert interpretiert werden soll. Wir wollen dafür das längste zusammenhängende Wort aus Γ∗ verwenden, das links neben der finalen Kopfposition auf einem designierten Band auftritt. Das Feld des Kopfes gehört nicht dazu, aber nach einem Linksschritt könnte die Ausgabe ggf. als Eingabe für eine weitere Maschine verwendet werden, sofern das restliche Band leer ist. Partielle Funktionen der Form (Σ∗ )n f (Γ∗ )k mit n > 1 oder k > 1 erfordern je genau ein Trennzeichen zwischen den Komponenten der Einbzw. Ausgabe. Auch wenn das Blankzeichen dafür verwendet werden kann, wird dies nicht empfohlen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 44 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. h|, #i||h|, Li; h|, Ri start q0 h|, #i||h#, Ri; h|, Ri h#, #i||h#, Ri; h#, Ni Jürgen Koslowski (TU-BS) qF Theoretische Informatik 2 SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. h|, #i||h|, Li; h|, Ri start q0 h|, #i||h#, Ri; h|, Ri h#, #i||h#, Ri; h#, Ni Jürgen Koslowski (TU-BS) qF oder geschickter Theoretische Informatik 2 SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. h|, #i||h|, Li; h|, Ri start q0 h|, #i||h#, Ri; h|, Ri h#, #i||h#, Ri; h#, Ni h|, #i||h#, Ni; h|, Ri qF oder geschickter start r0 r1 h#, #i||h#, Li; h|, Ri Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. h|, #i||h|, Li; h|, Ri start q0 h|, #i||h#, Ri; h|, Ri h#, #i||h#, Ri; h#, Ni h|, #i||h#, Ni; h|, Ri qF oder geschickter start r0 r1 h#, #i||h#, Li; h|, Ri Beim aktuellen Bandinhalt h#, #i in Zustand qF bzw. r0 hält die jeweilige Maschine mit dem Ergebnis auf B1 und B0 leer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .) Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren. h|, #i||h|, Li; h|, Ri start q0 h|, #i||h#, Ri; h|, Ri h|, #i||h#, Ni; h|, Ri h#, #i||h#, Ri; h#, Ni qF oder geschickter start r0 r1 h#, #i||h#, Li; h|, Ri Beim aktuellen Bandinhalt h#, #i in Zustand qF bzw. r0 hält die jeweilige Maschine mit dem Ergebnis auf B1 und B0 leer. Beispiel ( f (w ) = |w | : Wähle Γ = {|} disjunkt zu Σ .) Idee: Eingabe mit Symbolen | überschreiben; rechten Rand suchen. |||h|, Ri a||h|, Li start Jürgen Koslowski (TU-BS) q0 #||h#, Ri qF Theoretische Informatik 2 mit a ∈ Σ SS 2015 45 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n + m : Wähle Σ = Γ = {|} , B = {|, @, #} .) Idee: 2-Band Maschine; Eingabe auf B1 kopieren, dabei das Trennsymbol @ überspringen. h|, #i||h#, Li; h|, Ri start Jürgen Koslowski (TU-BS) q0 h|, #i||h#, Li; h|, Ri h@, #i||h#, Li; h#, Ni Theoretische Informatik 2 qF SS 2015 46 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n + m : Wähle Σ = Γ = {|} , B = {|, @, #} .) Idee: 2-Band Maschine; Eingabe auf B1 kopieren, dabei das Trennsymbol @ überspringen. h|, #i||h#, Li; h|, Ri h|, #i||h#, Li; h|, Ri start q0 h@, #i||h#, Li; h#, Ni qF Idee: 1-Band Maschine; Trennsymbol @ mit erstem | von rechts überschreiben |||h|, Ri |||h|, Li start q0 |||h#, Li q1 @||h|, Ri qF @||h#, Ni Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 46 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .) Wir begnügen uns nun mit einer High-Level-Beschreibung: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 47 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .) Wir begnügen uns nun mit einer High-Level-Beschreibung: Idee: 3-Band Maschine; das zweite Argument der Eingabe |n #|m auf B2 verschieben; für jedes Symbol | auf B2 das verbliebene Argument |n von B0 nach B1 kopieren, von links nach rechts. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 47 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .) Wir begnügen uns nun mit einer High-Level-Beschreibung: Idee: 3-Band Maschine; das zweite Argument der Eingabe |n #|m auf B2 verschieben; für jedes Symbol | auf B2 das verbliebene Argument |n von B0 nach B1 kopieren, von links nach rechts. Bemerkung Die Erfahrungen mit Turing Maschinen und anderen Versuchen aus der ersten Hälfte des 20. Jahrhunderts, den Begriff der “durch einen (terminierenden) Algorithmus berechenbaren Funktion” formal zu fassen, führten zu der Vermutung, dass jede solche (totale) Funktion Turing-berechenbar sein muß. Diese nicht beweisbare Vermutung ist bekannt als Church-Turing These und wird in Kapitel 6 ausführlicher behandelt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 47 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .) Wir begnügen uns nun mit einer High-Level-Beschreibung: Idee: 3-Band Maschine; das zweite Argument der Eingabe |n #|m auf B2 verschieben; für jedes Symbol | auf B2 das verbliebene Argument |n von B0 nach B1 kopieren, von links nach rechts. Bemerkung Die Erfahrungen mit Turing Maschinen und anderen Versuchen aus der ersten Hälfte des 20. Jahrhunderts, den Begriff der “durch einen (terminierenden) Algorithmus berechenbaren Funktion” formal zu fassen, führten zu der Vermutung, dass jede solche (totale) Funktion Turing-berechenbar sein muß. Diese nicht beweisbare Vermutung ist bekannt als Church-Turing These und wird in Kapitel 6 ausführlicher behandelt. Wie üblich stellt sich jetzt die Frage nach Funktionen, die nicht Turing-berechenbar sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 47 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N Jürgen Koslowski (TU-BS) β N bildet n ∈ N ab auf Theoretische Informatik 2 SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band dTM über {|} , die über n Nicht-Haltezustände und einen Haltezustand verfügt, ausgehend vom leeren Band auf diesem hinterlassen kann, wenn sie hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band dTM über {|} , die über n Nicht-Haltezustände und einen Haltezustand verfügt, ausgehend vom leeren Band auf diesem hinterlassen kann, wenn sie hält. Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen | Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band dTM über {|} , die über n Nicht-Haltezustände und einen Haltezustand verfügt, ausgehend vom leeren Band auf diesem hinterlassen kann, wenn sie hält. Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen | Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden. Beispiel ( β(0) = 0 und β(1) = 1 ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band dTM über {|} , die über n Nicht-Haltezustände und einen Haltezustand verfügt, ausgehend vom leeren Band auf diesem hinterlassen kann, wenn sie hält. Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen | Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden. Beispiel ( β(0) = 0 und β(1) = 1 ) start Jürgen Koslowski (TU-BS) qF bzw Theoretische Informatik 2 SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Definition Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band dTM über {|} , die über n Nicht-Haltezustände und einen Haltezustand verfügt, ausgehend vom leeren Band auf diesem hinterlassen kann, wenn sie hält. Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen | Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden. Beispiel ( β(0) = 0 und β(1) = 1 ) #||h|, Ni start Jürgen Koslowski (TU-BS) qF bzw start q0 Theoretische Informatik 2 |||h|, Li qF SS 2015 48 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i start q0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i #||h|, Ri start q0 Jürgen Koslowski (TU-BS) q1 Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri start q0 #||h|, Li Jürgen Koslowski (TU-BS) q1 Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 |||h|, Li Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 ` hq0 , # | | | i |||h|, Li Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 ` hq0 , # | | | i ` hq1 , | | | | i |||h|, Li Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 |||h|, Ri ` hq0 , # | | | i ` hq1 , | | | | i ` hqF , | | | | i |||h|, Li Jürgen Koslowski (TU-BS) qF Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 |||h|, Ri qF ` hq0 , # | | | i ` hq1 , | | | | i ` hqF , | | | | i |||h|, Li Bei Wikipedia findet man diverses Hintergrundmaterial zum Thema Busy Beaver (dort heißt die Funktion Σ ), einschließlich einiger Schranken für die Werte β(6) und β(10) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 |||h|, Ri qF ` hq0 , # | | | i ` hq1 , | | | | i ` hqF , | | | | i |||h|, Li Bei Wikipedia findet man diverses Hintergrundmaterial zum Thema Busy Beaver (dort heißt die Funktion Σ ), einschließlich einiger Schranken für die Werte β(6) und β(10) . Weiterhin sei auf die Seite von Heiner Marxen verwiesen, der zeitnah über aktuelle Busy Beaver Rekorde buchführt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Beispiel ( β(2) = 4 ) hq0 , #i ` hq1 , | #i ` hq0 , | | i #||h|, Ri ` hq1 , # | | i start q0 #||h|, Li q1 |||h|, Ri qF ` hq0 , # | | | i ` hq1 , | | | | i ` hqF , | | | | i |||h|, Li Bei Wikipedia findet man diverses Hintergrundmaterial zum Thema Busy Beaver (dort heißt die Funktion Σ ), einschließlich einiger Schranken für die Werte β(6) und β(10) . Weiterhin sei auf die Seite von Heiner Marxen verwiesen, der zeitnah über aktuelle Busy Beaver Rekorde buchführt. Es ist zu empfehlen, den Wert β(3) selbständig nachzurechnen, ohne obige Quellen zu konsultieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 49 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Lemma Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1) für jedes n ∈ N . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 50 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Lemma Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1) für jedes n ∈ N . Beweis. Die dTM M mit Haltezustand qF möge β(n) realisieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 50 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Lemma Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1) für jedes n ∈ N . Beweis. Die dTM M mit Haltezustand qF möge β(n) realisieren. Füge einen neuen Haltezustand qG hinzu und die Übergänge |||h|, Li qF Jürgen Koslowski (TU-BS) #||h|, Li qG Theoretische Informatik 2 SS 2015 50 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Lemma Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1) für jedes n ∈ N . Beweis. Die dTM M mit Haltezustand qF möge β(n) realisieren. Füge einen neuen Haltezustand qG hinzu und die Übergänge |||h|, Li qF #||h|, Li qG Die neue Maschine M0 , mit qF als Nicht-Haltezustand, sucht links ein freies Feld, schreibt | und hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 50 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Lemma Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1) für jedes n ∈ N . Beweis. Die dTM M mit Haltezustand qF möge β(n) realisieren. Füge einen neuen Haltezustand qG hinzu und die Übergänge |||h|, Li qF #||h|, Li qG Die neue Maschine M0 , mit qF als Nicht-Haltezustand, sucht links ein freies Feld, schreibt | und hält. Also gilt β(n) < β(n) + 1 ≤ β(n + 1) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 50 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz Für jede Turing-berechenbare totale Funktion N rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 f N existiert eine Zahl SS 2015 51 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz Für jede Turing-berechenbare totale Funktion N rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) . f N existiert eine Zahl Beweis. Die Funktion f möge von der dTM M mit rf Zuständen berechnet werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 51 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz Für jede Turing-berechenbare totale Funktion N rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) . f N existiert eine Zahl Beweis. Die Funktion f möge von der dTM M mit rf Zuständen berechnet werden. Für n ∈ N fügen wir n neue Zustände pi , i < n , zu M hinzu, sowie folgende Übergänge: start p0 #||h|, Ri Jürgen Koslowski (TU-BS) p1 #||h|, Ri ... #||h|, Ri Theoretische Informatik 2 pn−1 #||h|, Ri q0 SS 2015 51 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz Für jede Turing-berechenbare totale Funktion N rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) . f N existiert eine Zahl Beweis. Die Funktion f möge von der dTM M mit rf Zuständen berechnet werden. Für n ∈ N fügen wir n neue Zustände pi , i < n , zu M hinzu, sowie folgende Übergänge: start p0 #||h|, Ri p1 #||h|, Ri ... #||h|, Ri pn−1 #||h|, Ri q0 Mn produziert ausgehend vom leeren Band n Striche und führt dann M mit dieser Eingabe aus. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 51 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz Für jede Turing-berechenbare totale Funktion N rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) . f N existiert eine Zahl Beweis. Die Funktion f möge von der dTM M mit rf Zuständen berechnet werden. Für n ∈ N fügen wir n neue Zustände pi , i < n , zu M hinzu, sowie folgende Übergänge: start p0 #||h|, Ri p1 #||h|, Ri ... #||h|, Ri pn−1 #||h|, Ri q0 Mn produziert ausgehend vom leeren Band n Striche und führt dann M mit dieser Eingabe aus. Mit M hält auch Mn , und dann stehen mindestens f (n) Striche auf dem Band, also folgt f (n) ≤ β(n + rf ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 51 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz β ist nicht Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 52 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz β ist nicht Turing-berechenbar. Beweis. Wir nehmen an, β ist Turing-berechenbar vermöge der dTM M . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 52 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz β ist nicht Turing-berechenbar. Beweis. Wir nehmen an, β ist Turing-berechenbar vermöge der dTM M . Dann ist auch N f N mit n 7→ β(2n) Turing-berechenbar (Verknüpfung mit der Verdoppelungsmaschine aus einem früheren Beispiel). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 52 / 236 Turingmaschinen Turing-berechenbare partielle Funktionen Satz β ist nicht Turing-berechenbar. Beweis. Wir nehmen an, β ist Turing-berechenbar vermöge der dTM M . Dann ist auch N f N mit n 7→ β(2n) Turing-berechenbar (Verknüpfung mit der Verdoppelungsmaschine aus einem früheren Beispiel). Für jedes n ∈ N gilt nach obigem Satz β(2n) = f (n) ≤ β(n + rf ) . Aber n = rf + 1 liefert einen Widerspruch zur stengen Monotonie von β . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 52 / 236 Church-Turing-These Kapitel 6 Die Church-Turing These Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 53 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: . Registermaschinen (RAMs), die heutigen Computern näher stehen als klassische TMn (dieser Abschnitt wird sehr kurz gehalten); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: . Registermaschinen (RAMs), die heutigen Computern näher stehen als klassische TMn (dieser Abschnitt wird sehr kurz gehalten); . formale Grammatiken (eine Verallgemeinerung kfG’n, sind der hiesigen Umsetzung der Bologna-Reform zum Opfer gefallen); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: . Registermaschinen (RAMs), die heutigen Computern näher stehen als klassische TMn (dieser Abschnitt wird sehr kurz gehalten); . formale Grammatiken (eine Verallgemeinerung kfG’n, sind der hiesigen Umsetzung der Bologna-Reform zum Opfer gefallen); . die Theorie der sog. rekursiven Funktionen; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: . Registermaschinen (RAMs), die heutigen Computern näher stehen als klassische TMn (dieser Abschnitt wird sehr kurz gehalten); . formale Grammatiken (eine Verallgemeinerung kfG’n, sind der hiesigen Umsetzung der Bologna-Reform zum Opfer gefallen); . die Theorie der sog. rekursiven Funktionen; . der Lambda-Kalkül von Alonso Church, die Basis moderner funktionaler Programmiersprachen (vergl. andere VL); Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Alternativen zu Turingmaschinen Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der Turing-berechenbaren Funktionen überein. Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa: . Registermaschinen (RAMs), die heutigen Computern näher stehen als klassische TMn (dieser Abschnitt wird sehr kurz gehalten); . formale Grammatiken (eine Verallgemeinerung kfG’n, sind der hiesigen Umsetzung der Bologna-Reform zum Opfer gefallen); . die Theorie der sog. rekursiven Funktionen; . der Lambda-Kalkül von Alonso Church, die Basis moderner funktionaler Programmiersprachen (vergl. andere VL); und diverse andere, siehe etwa Kapitel 18 im Buch von Rich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 54 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und konkreter Assembler-Programmierung verortet werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und konkreter Assembler-Programmierung verortet werden. Umgekehrt sind Turing Maschinen im Hinblick auf den Begriff der Turingberechenbaren Funktion “zu konkret”, da Prozedur-orientiert. Sie vermitteln wenig Intuition darüber, welche Funktionen eigentlich Turing-berechenbar sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und konkreter Assembler-Programmierung verortet werden. Umgekehrt sind Turing Maschinen im Hinblick auf den Begriff der Turingberechenbaren Funktion “zu konkret”, da Prozedur-orientiert. Sie vermitteln wenig Intuition darüber, welche Funktionen eigentlich Turing-berechenbar sind. Erfreulicherweise stimmt zumindest die Klasse der zahlentheoretischen Turing-berechenbaren Funktionen mit auf völlig andere Weise eingeführten Klasse der µ-rekursiven Funktionen überein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und konkreter Assembler-Programmierung verortet werden. Umgekehrt sind Turing Maschinen im Hinblick auf den Begriff der Turingberechenbaren Funktion “zu konkret”, da Prozedur-orientiert. Sie vermitteln wenig Intuition darüber, welche Funktionen eigentlich Turing-berechenbar sind. Erfreulicherweise stimmt zumindest die Klasse der zahlentheoretischen Turing-berechenbaren Funktionen mit auf völlig andere Weise eingeführten Klasse der µ-rekursiven Funktionen überein. Hier stehen wirklich die Funktionen im Mittelpunkt, und nicht ihre (relativ konkrete aber fehleranfällige) Implementierung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Alternativen zu Turingmaschinen Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff. Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und konkreter Assembler-Programmierung verortet werden. Umgekehrt sind Turing Maschinen im Hinblick auf den Begriff der Turingberechenbaren Funktion “zu konkret”, da Prozedur-orientiert. Sie vermitteln wenig Intuition darüber, welche Funktionen eigentlich Turing-berechenbar sind. Erfreulicherweise stimmt zumindest die Klasse der zahlentheoretischen Turing-berechenbaren Funktionen mit auf völlig andere Weise eingeführten Klasse der µ-rekursiven Funktionen überein. Hier stehen wirklich die Funktionen im Mittelpunkt, und nicht ihre (relativ konkrete aber fehleranfällige) Implementierung. Für die Korrektheitsbeweisen besser zugängliche funktionale Programmierung eignet sich der Lambda-Kalkül allerdings noch besser. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 55 / 236 Church-Turing-These Registermaschinen (RAM) Registermaschinen (RAM) Anstelle eines (potentiell unendlichen) Turingbandes verfügt eine Random Accesss Machine (RAM) oder Registermaschine über einen Datenspeicher aus potentiell unendlich vielen Registern Ri , i ∈ N , die Daten hRi i in Form von natürlichen Zahlen unbeschränkter Größe enthalten können (hier muß getrickst werden). Das Register R0 heißt Akkumulator. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 56 / 236 Church-Turing-These Registermaschinen (RAM) Registermaschinen (RAM) Anstelle eines (potentiell unendlichen) Turingbandes verfügt eine Random Accesss Machine (RAM) oder Registermaschine über einen Datenspeicher aus potentiell unendlich vielen Registern Ri , i ∈ N , die Daten hRi i in Form von natürlichen Zahlen unbeschränkter Größe enthalten können (hier muß getrickst werden). Das Register R0 heißt Akkumulator. Anstatt eines Schreib-Lese-Kopfes arbeitet eine Steuereinheit taktweise die (von den Daten separat gespeicherten) Programme zeilenweise ab, gemäß eines Befehlszählers BZ , der auch als Register aufgefaßt werden kann (aber ebenfalls nicht zum Datenspeicher gehört). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 56 / 236 Church-Turing-These Registermaschinen (RAM) Registermaschinen (RAM) Anstelle eines (potentiell unendlichen) Turingbandes verfügt eine Random Accesss Machine (RAM) oder Registermaschine über einen Datenspeicher aus potentiell unendlich vielen Registern Ri , i ∈ N , die Daten hRi i in Form von natürlichen Zahlen unbeschränkter Größe enthalten können (hier muß getrickst werden). Das Register R0 heißt Akkumulator. Anstatt eines Schreib-Lese-Kopfes arbeitet eine Steuereinheit taktweise die (von den Daten separat gespeicherten) Programme zeilenweise ab, gemäß eines Befehlszählers BZ , der auch als Register aufgefaßt werden kann (aber ebenfalls nicht zum Datenspeicher gehört). Die Ein- und Ausgabe erfolgt über separate Bänder, deren Felder natürliche Zahlen enthalten können (Felder mit dem Inhalt 0 gelten als “leer”), und auf denen ein Lese- bzw. Schreib-Kopf sich nur nach rechts(!) bewegen kann (unmittelbar nach dem Lese- bzw. Schreibvorgang, im selben Takt). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 56 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 i mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 GOTO m hBZ i := m i mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM 1 Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 GOTO m hBZ i := m ( IF Ri = 0 GOTO m hBZ i := i m hBZ i + 1 falls hRi i = 0 sonst mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 GOTO m hBZ i := m ( IF Ri = 0 GOTO m hBZ i := i ( IF Ri > 0 GOTO m 1 hBZ i := m hBZ i + 1 falls hRi i = 0 sonst m hBZ i + 1 falls hRi i > 0 sonst mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 GOTO m hBZ i := m ( IF Ri = 0 GOTO m hBZ i := i m hBZ i + 1 falls hRi i = 0 sonst m hBZ i + 1 Maschine hält falls hRi i > 0 sonst ( IF Ri > 0 GOTO m STOP 1 hBZ i := mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.0 Befehlssatz einer RAM Befehl Wirkung READ hR0 i := hreadi, hBZ i := hBZ i + 1 der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts WRITE hwritei := hR0 i, hBZ i := hBZ i + 1 der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts LOAD i/LOAD ∗i/LOAD !i hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1 i STORE i/STORE ∗i hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1 ADD i/ADD ∗i/ADD !i hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1 PRED hR0 i := predhR0 i1 und hBZ i := hBZ i + 1 GOTO m hBZ i := m ( IF Ri = 0 GOTO m hBZ i := i m hBZ i + 1 falls hRi i = 0 sonst m hBZ i + 1 Maschine hält falls hRi i > 0 sonst ( IF Ri > 0 GOTO m STOP hBZ i := Die ∗-Variante von LOAD , STORE bzw. ADD entspricht indirekter Adressierung des Registers RhRi i , während die !-Variante von LOAD und ADD Konstanten i ∈ N anstelle von Registerinhalten verwendet. 1 mit pred(n + 1) = n und pred 0 = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 57 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α hRα i = hR0 i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 ADD i hRα i = hR0 i hR0 i = 1 hR0 i := hRi i + 1 Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 LOAD α hR0 i = hRα i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i STORE α hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 LOAD α hR0 i = hRα i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 LOAD α hR0 i = hRα i STORE α hRα i = hR0 i LOAD i hR0 i = hRi i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 LOAD α hR0 i = hRα i STORE α hRα i = hR0 i LOAD i hR0 i = hRi i PRED hR0 i := predhRi i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 ADD i hR0 i := hRi i + 1 STORE i hRi i := hRi i + 1 LOAD α hR0 i = hRα i STORE α hRα i = hR0 i LOAD i hR0 i = hRi i PRED hR0 i := predhRi i STORE i hRi i := predhRi i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten, dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind. Beispiel SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern: STORE α LOAD !1 hRα i = hR0 i hR0 i = 1 STORE α hRα i = hR0 i LOAD i hR0 i = hRi i ADD i hR0 i := hRi i + 1 PRED hR0 i := predhRi i STORE i hRi i := hRi i + 1 STORE i hRi i := predhRi i LOAD α hR0 i = hRα i LOAD α hR0 i = hRα i Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils anzupassen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 58 / 236 Church-Turing-These Registermaschinen (RAM) Beispiel ( SUB i subtrahiert hR0 i von hRi i , soweit möglich:) 0. IF R0 = 0 GOTO 8 1. PRD i 6. PRED 7. GOTO 0 8. LOAD i Jürgen Koslowski (TU-BS) (braucht fünf Schritte) Theoretische Informatik 2 SS 2015 59 / 236 Church-Turing-These Registermaschinen (RAM) Beispiel ( SUB i subtrahiert hR0 i von hRi i , soweit möglich:) 0. IF R0 = 0 GOTO 8 1. PRD i 6. PRED 7. GOTO 0 8. LOAD i (braucht fünf Schritte) Beispiel ( IF Ri = k GOTO m für k > 0 :) 0. STORE α 1. LOAD !k 2. SUB i 11. STORE i (braucht neun Schritte) (zerstört den Inhalt von Ri ) 12. LOAD α 13. IF Ri = 0 GOTO m Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 59 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der aktuelle Zustandsindex ist hR1 i Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der aktuelle Zustandsindex ist hR1 i Das Bandalphabet B wird durchnummeriert: B = { si : i < m } mit s0 = # . Der Index des Inhalts von Feld i findet sich in Register R3+i . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der aktuelle Zustandsindex ist hR1 i Das Bandalphabet B wird durchnummeriert: B = { si : i < m } mit s0 = # . Der Index des Inhalts von Feld i findet sich in Register R3+i . Die Bandzellen werden durchnummeriert, mit 0 für die Kopfposition in der Initialkonfiguration, ungerade Zahlen nach rechts, gerade Zahlen nach links. Die aktuelle Kopfposition ist hR2 i . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der aktuelle Zustandsindex ist hR1 i Das Bandalphabet B wird durchnummeriert: B = { si : i < m } mit s0 = # . Der Index des Inhalts von Feld i findet sich in Register R3+i . Die Bandzellen werden durchnummeriert, mit 0 für die Kopfposition in der Initialkonfiguration, ungerade Zahlen nach rechts, gerade Zahlen nach links. Die aktuelle Kopfposition ist hR2 i . Die Übergangstabelle hqi , sj i 7→ hqr , At i wird programmiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Simulation einer TM durch eine RAM Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2 für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i zuständig ist. Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der aktuelle Zustandsindex ist hR1 i Das Bandalphabet B wird durchnummeriert: B = { si : i < m } mit s0 = # . Der Index des Inhalts von Feld i findet sich in Register R3+i . Die Bandzellen werden durchnummeriert, mit 0 für die Kopfposition in der Initialkonfiguration, ungerade Zahlen nach rechts, gerade Zahlen nach links. Die aktuelle Kopfposition ist hR2 i . Die Übergangstabelle hqi , sj i 7→ hqr , At i wird programmiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 60 / 236 Church-Turing-These Registermaschinen (RAM) Die Simulation einer TM-Berechnung erfolgt in drei Schritten: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 61 / 236 Church-Turing-These Registermaschinen (RAM) Die Simulation einer TM-Berechnung erfolgt in drei Schritten: Zunächst wird die Eingabe a0 a1 . . . ak−1 in die Register R3 , R5 , . . . , R1+2k übertragen, durch wiederholte Anwendung von READ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 61 / 236 Church-Turing-These Registermaschinen (RAM) Die Simulation einer TM-Berechnung erfolgt in drei Schritten: Zunächst wird die Eingabe a0 a1 . . . ak−1 in die Register R3 , R5 , . . . , R1+2k übertragen, durch wiederholte Anwendung von READ . Nach Erreichen von # werden die Register R1 und R2 gemäß der Initialkonfiguration initialisiert. Anschließend sind die den Übergängen hqi , bj i 7→ hqr , at i mit bj ∈ B und at ∈ B + {L, R} entsprechenden Programme auszuführen, solange Übergänge verfügbar sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 61 / 236 Church-Turing-These Registermaschinen (RAM) Die Simulation einer TM-Berechnung erfolgt in drei Schritten: Zunächst wird die Eingabe a0 a1 . . . ak−1 in die Register R3 , R5 , . . . , R1+2k übertragen, durch wiederholte Anwendung von READ . Nach Erreichen von # werden die Register R1 und R2 gemäß der Initialkonfiguration initialisiert. Anschließend sind die den Übergängen hqi , bj i 7→ hqr , at i mit bj ∈ B und at ∈ B + {L, R} entsprechenden Programme auszuführen, solange Übergänge verfügbar sind. Der Bandinhalt rechts der Kopfposition wird auf das Ausgabeband übertragen, bis ein Blankzeichen auftritt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 61 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.2 Berechenbarkeit Definition Eine RAM berechnet eine (partielle) Funktion Nk f N, falls die RAM bei genau den Eingaben aus dem Definitionsbereich D(f ) hält und dann der einzige Wert auf dem Ausgabeband mit dem Funktionswert von f übereinstimmt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 62 / 236 Church-Turing-These Registermaschinen (RAM) 6.1.2 Berechenbarkeit Definition Eine RAM berechnet eine (partielle) Funktion Nk f N, falls die RAM bei genau den Eingaben aus dem Definitionsbereich D(f ) hält und dann der einzige Wert auf dem Ausgabeband mit dem Funktionswert von f übereinstimmt. Nachdem die Simulierbarkeit von dTMs durch RAMs konzeptionell bereits etabliert worden ist, gilt es nun, auch die umgekehrte Simulierarkeit zu zeigen. Satz Jede RAM-berechenbare Funktion ist Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 62 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; B1 enthält die zunächst nichtleeren Register hRi i = n in der Form @|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist auch n = 0 möglich; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; B1 enthält die zunächst nichtleeren Register hRi i = n in der Form @|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist auch n = 0 möglich; B2 und B3 fungieren als Akkumulator bzw. Befehlszähler; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; B1 enthält die zunächst nichtleeren Register hRi i = n in der Form @|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist auch n = 0 möglich; B2 und B3 fungieren als Akkumulator bzw. Befehlszähler; B4 ist ein Hilfsband und B5 dient der Ausgabe. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; B1 enthält die zunächst nichtleeren Register hRi i = n in der Form @|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist auch n = 0 möglich; B2 und B3 fungieren als Akkumulator bzw. Befehlszähler; B4 ist ein Hilfsband und B5 dient der Ausgabe. Zu Beginn sind alle Bänder außer B0 leer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A (“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des endlichen RAM-Programms dient. B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ; B1 enthält die zunächst nichtleeren Register hRi i = n in der Form @|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist auch n = 0 möglich; B2 und B3 fungieren als Akkumulator bzw. Befehlszähler; B4 ist ein Hilfsband und B5 dient der Ausgabe. Zu Beginn sind alle Bänder außer B0 leer. Dann wird immer der Befehl simuliert, dessen Zeilennummer auf B3 steht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 63 / 236 Church-Turing-These Registermaschinen (RAM) Beweis (Fortsetzung) Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ... Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 64 / 236 Church-Turing-These Registermaschinen (RAM) Beweis (Fortsetzung) Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ... Frau Viorica Sofronie-Stokkermans von der Universität Koblenz-Landau verfolgt hinsichtlich Register-Maschinen einen geschickteren Ansatz: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 64 / 236 Church-Turing-These Registermaschinen (RAM) Beweis (Fortsetzung) Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ... Frau Viorica Sofronie-Stokkermans von der Universität Koblenz-Landau verfolgt hinsichtlich Register-Maschinen einen geschickteren Ansatz: Neben dem IF...GOTO-Konstrukt verwendet sie LOOP und WHILE Schleifen, erstere mit vorgegebenener und lezterer mit potentiell variabler Anzahl von Durchläufen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 64 / 236 Church-Turing-These Registermaschinen (RAM) Beweis (Fortsetzung) Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ... Frau Viorica Sofronie-Stokkermans von der Universität Koblenz-Landau verfolgt hinsichtlich Register-Maschinen einen geschickteren Ansatz: Neben dem IF...GOTO-Konstrukt verwendet sie LOOP und WHILE Schleifen, erstere mit vorgegebenener und lezterer mit potentiell variabler Anzahl von Durchläufen. Das induziert drei Klassen berechenbarer Funktionen, LOOP , WHILE und GOTO , wobei man jeweils noch den partiellen und den totalen Fall unterscheiden kann. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 64 / 236 Church-Turing-These Registermaschinen (RAM) Beweis (Fortsetzung) Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ... Frau Viorica Sofronie-Stokkermans von der Universität Koblenz-Landau verfolgt hinsichtlich Register-Maschinen einen geschickteren Ansatz: Neben dem IF...GOTO-Konstrukt verwendet sie LOOP und WHILE Schleifen, erstere mit vorgegebenener und lezterer mit potentiell variabler Anzahl von Durchläufen. Das induziert drei Klassen berechenbarer Funktionen, LOOP , WHILE und GOTO , wobei man jeweils noch den partiellen und den totalen Fall unterscheiden kann. Es stellt sich heraus, LOOP echt in den totalen WHILE-Funktionen enthalten ist, während die Turing-berechenbaren Funktionen mit WHILE und GOTO übereinstimmen; Slogan: strukturierter Code ist genauso mächtig wie Spaghetti-Code Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 64 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Definition Die Klasse PR0 der Grundfunktionen besteht aus Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Definition Die Klasse PR0 der Grundfunktionen besteht aus . allen Projektionen Nk Jürgen Koslowski (TU-BS) πik N, x 7→ xi , für i < k ∈ N ; Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Definition Die Klasse PR0 der Grundfunktionen besteht aus . allen Projektionen Nk πik Nk κk;0 . allen konstante Funktionen Jürgen Koslowski (TU-BS) N, x 7→ xi , für i < k ∈ N ; N, x 7→ 0 , für k ∈ N ; Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Definition Die Klasse PR0 der Grundfunktionen besteht aus . allen Projektionen Nk πik Nk κk;0 . allen konstante Funktionen . der Nachfolger-Funktion N Jürgen Koslowski (TU-BS) succ N, x 7→ xi , für i < k ∈ N ; N, x 7→ 0 , für k ∈ N ; N, n 7→ n + 1 . Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen 6.2 Rekursive Funktionen Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird mit zwei Operationen zunächst die Klasse der primitiv rekursiven Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit der Klasse der partiellen Turing-berechenbaren Funktionen überein. Definition Die Klasse PR0 der Grundfunktionen besteht aus . allen Projektionen Nk πik Nk κk;0 . allen konstante Funktionen . der Nachfolger-Funktion N succ N, x 7→ xi , für i < k ∈ N ; N, x 7→ 0 , für k ∈ N ; N, n 7→ n + 1 . Speziell im Fall k = 0 ist N0 ein Singleton {∗} . Dann existieren keine 0;0 Projektionen, und die Konstante {∗} κ N kann mit dem Element 0 ∈ N identifiziert werden (Funktion ohne Parameter). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 65 / 236 Church-Turing-These 6.2 Rekursive Funktionen Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen N g N f N , n 7→ f (g (n)) =: (f ◦ g )(n) auf mehrstellige Funktionen übertragen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 66 / 236 Church-Turing-These 6.2 Rekursive Funktionen Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen N g N f N , n 7→ f (g (n)) =: (f ◦ g )(n) auf mehrstellige Funktionen übertragen. Ist Nk f N gegeben, kann man im einfachsten FallP k Funktionen Nti gi N per Substitution zu einer neuen Funktion N i<k ti f ◦ (g0 × · · · × gk−1 ) N verbinden: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 66 / 236 Church-Turing-These 6.2 Rekursive Funktionen Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen N g N f N , n 7→ f (g (n)) =: (f ◦ g )(n) auf mehrstellige Funktionen übertragen. Ist Nk f N gegeben, kann man im einfachsten FallP k Funktionen Nti gi N per Substitution zu einer neuen Funktion N i<k ti f ◦ (g0 × · · · × gk−1 ) N verbinden: g0 g1 g2 f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 66 / 236 Church-Turing-These 6.2 Rekursive Funktionen Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen N g N f N , n 7→ f (g (n)) =: (f ◦ g )(n) auf mehrstellige Funktionen übertragen. Ist Nk f N gegeben, kann man im einfachsten FallP k Funktionen Nti gi N per Substitution zu einer neuen Funktion N i<k ti f ◦ (g0 × · · · × gk−1 ) N verbinden: g0 g1 g2 f (In dieser graphischen Darstellung haben die Knoten als Funktionen oben endlich viele Inputs, und unten genau einen Output.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 66 / 236 Church-Turing-These 6.2 Rekursive Funktionen Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen N g N f N , n 7→ f (g (n)) =: (f ◦ g )(n) auf mehrstellige Funktionen übertragen. Ist Nk f N gegeben, kann man im einfachsten FallP k Funktionen Nti gi N per Substitution zu einer neuen Funktion N i<k ti f ◦ (g0 × · · · × gk−1 ) N verbinden: g0 g1 g2 f (In dieser graphischen Darstellung haben die Knoten als Funktionen oben endlich viele Inputs, und unten genau einen Output.) Diese Operation wird sich später als ableitbar erweisen, dient also nicht als grundlegendes Konstruktionsprinzip für primitiv-rekursive Funktionen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 66 / 236 Church-Turing-These 6.2 Rekursive Funktionen Stattdessen kann man für Nk f N auch k Funktionen gi mit demselben Definitionsbereich Nm betrachten, und daraus eine kombinierte Funktion von Nm nach N gewinnen, indem man die Eingabe für alle Funktionen gi klont: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 67 / 236 Church-Turing-These 6.2 Rekursive Funktionen Stattdessen kann man für Nk f N auch k Funktionen gi mit demselben Definitionsbereich Nm betrachten, und daraus eine kombinierte Funktion von Nm nach N gewinnen, indem man die Eingabe für alle Funktionen gi klont: g0 g1 g2 f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 67 / 236 Church-Turing-These 6.2 Rekursive Funktionen Stattdessen kann man für Nk f N auch k Funktionen gi mit demselben Definitionsbereich Nm betrachten, und daraus eine kombinierte Funktion von Nm nach N gewinnen, indem man die Eingabe für alle Funktionen gi klont: g0 g1 g2 f Definition (Klon-Komposition) Für Nk f N und Nm Jürgen Koslowski (TU-BS) gi N, i < k setze Nm x 7→ f g0 (x), . . . , gk−1 (x) Theoretische Informatik 2 f ◦ hgi : i < ki N SS 2015 67 / 236 Church-Turing-These 6.2 Rekursive Funktionen Stattdessen kann man für Nk f N auch k Funktionen gi mit demselben Definitionsbereich Nm betrachten, und daraus eine kombinierte Funktion von Nm nach N gewinnen, indem man die Eingabe für alle Funktionen gi klont: g0 g1 g2 f Definition (Klon-Komposition) Für Nk f N und Nm gi N, i < k setze Nm x 7→ f g0 (x), . . . , gk−1 (x) f ◦ hgi : i < ki N Auch diese Operation wird in der Literatur leicht irreführend einfach als “Substitution” oder “Komposition” bezeichnet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 67 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Funktion N2 h N, hm, ni 7→ (m + n) + mn + max{m, n} läßt sich mittels Klon-Komposition aus N3 f N, hx, y , zi 7→ x + y + z sowie N2 gi N, i < 3 , konstruieren, mit g0 (m, n) := m + n , g1 (m, n) := mn und g2 (m, n) := max{m, n} . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 68 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Funktion N2 h N, hm, ni 7→ (m + n) + mn + max{m, n} läßt sich mittels Klon-Komposition aus N3 f N, hx, y , zi 7→ x + y + z sowie N2 gi N, i < 3 , konstruieren, mit g0 (m, n) := m + n , g1 (m, n) := mn und g2 (m, n) := max{m, n} . Beispiel k;i Konstante Funktionen Nk κ N mit Wert i ∈ N liefert κk;0 durch i -fache Verknüpfung mit der Nachfolger-Funktion: κk;i = (succ)i ◦ κk;0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 68 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Funktion N2 h N, hm, ni 7→ (m + n) + mn + max{m, n} läßt sich mittels Klon-Komposition aus N3 f N, hx, y , zi 7→ x + y + z sowie N2 gi N, i < 3 , konstruieren, mit g0 (m, n) := m + n , g1 (m, n) := mn und g2 (m, n) := max{m, n} . Beispiel k;i Konstante Funktionen Nk κ N mit Wert i ∈ N liefert κk;0 durch i -fache Verknüpfung mit der Nachfolger-Funktion: κk;i = (succ)i ◦ κk;0 . Beispiel Die durch f (n) = n + 2 spezifizierte Funktion N f = succ ◦ succ realisieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 f N läßt sich durch SS 2015 68 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Funktion N2 h N, hm, ni 7→ (m + n) + mn + max{m, n} läßt sich mittels Klon-Komposition aus N3 f N, hx, y , zi 7→ x + y + z sowie N2 gi N, i < 3 , konstruieren, mit g0 (m, n) := m + n , g1 (m, n) := mn und g2 (m, n) := max{m, n} . Beispiel k;i Konstante Funktionen Nk κ N mit Wert i ∈ N liefert κk;0 durch i -fache Verknüpfung mit der Nachfolger-Funktion: κk;i = (succ)i ◦ κk;0 . Beispiel Die durch f (n) = n + 2 spezifizierte Funktion N f = succ ◦ succ realisieren. f N läßt sich durch Entsprechend liefert die Spezifikation g (m, n) = n + 2 eine Funktion N2 g N mit g = f ◦ π12 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 68 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Beweis Für Nk Nti gi f N erweitert man den Definitionsbereich der Funktionen P N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Beweis Für Nk f N erweitert man den Definitionsbereich der Funktionen P Nti gi N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti . Dafür verwendet man Klon-Komposition mit geeigneten Projektionen: t g̃i = gi ◦ hπP Jürgen Koslowski (TU-BS) j<i tj , . . . , π(tP Theoretische Informatik 2 j≤i tj )−1 i SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Beweis Für Nk f N erweitert man den Definitionsbereich der Funktionen P Nti gi N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti . Dafür verwendet man Klon-Komposition mit geeigneten Projektionen: t g̃i = gi ◦ hπP j<i tj , . . . , π(tP j≤i tj )−1 i Dies liefert schließlich f ◦ (g0 × · · · × gk−1 ) = f ◦ hg̃0 , . . . , g̃k−1 i Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Beweis Für Nk f N erweitert man den Definitionsbereich der Funktionen P Nti gi N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti . Dafür verwendet man Klon-Komposition mit geeigneten Projektionen: t g̃i = gi ◦ hπP j<i tj , . . . , π(tP j≤i tj )−1 i Dies liefert schließlich f ◦ (g0 × · · · × gk−1 ) = f ◦ hg̃0 , . . . , g̃k−1 i Umgekehrt zeigt die graphische Darstellung unmittelbar, dass die Klon-Komposition nicht mit Hilfe der Substitution realisiert werden kann. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Substitution läßt sich auf Klon-Komposition zurückführen. Beweis Für Nk f N erweitert man den Definitionsbereich der Funktionen P Nti gi N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti . Dafür verwendet man Klon-Komposition mit geeigneten Projektionen: t g̃i = gi ◦ hπP j<i tj , . . . , π(tP j≤i tj )−1 i Dies liefert schließlich f ◦ (g0 × · · · × gk−1 ) = f ◦ hg̃0 , . . . , g̃k−1 i Umgekehrt zeigt die graphische Darstellung unmittelbar, dass die Klon-Komposition nicht mit Hilfe der Substitution realisiert werden kann. (Während Substitution nur auf der Tensorprodukt-Eigenschaft von × beruht, benötigt Klon-Komposition die Eigenschaften eines kategoriellen Produkts, speziell die Existenz von Projektionen.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 69 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (Induktions-Rekursions-Schema (IRS)) Aus zwei Funktionen Nk−1 Nk f = IR(g , h) N gemäß g N h Nk+1 konstruieren wir eine dritte f (x, 0) := g (x) und f (x, m + 1) := h(x, m, f (x, m)) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 mit x ∈ Nk−1 SS 2015 70 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (Induktions-Rekursions-Schema (IRS)) Aus zwei Funktionen Nk−1 Nk f = IR(g , h) N gemäß g N h Nk+1 konstruieren wir eine dritte f (x, 0) := g (x) und f (x, m + 1) := h(x, m, f (x, m)) mit x ∈ Nk−1 Die Rekursion erfolgt bei festem x ∈ Nk−1 im letzten Argument rückwärts durch m + 1 -malige Anwendung von h auf den Startwert f (x, 0) = g (x) : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 70 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (Induktions-Rekursions-Schema (IRS)) Aus zwei Funktionen Nk−1 Nk f = IR(g , h) N gemäß g N h Nk+1 konstruieren wir eine dritte f (x, 0) := g (x) und f (x, m + 1) := h(x, m, f (x, m)) mit x ∈ Nk−1 Die Rekursion erfolgt bei festem x ∈ Nk−1 im letzten Argument rückwärts durch m + 1 -malige Anwendung von h auf den Startwert f (x, 0) = g (x) : Beispiel ( m = 2 ) f (x, 3) = f (x, 2 + 1) = h(x, 2, f (x, 2)) = h(x, 2, f (x, 1 + 1)) = h(x, 2, h(x, 1, f (x, 1))) = h(x, 2, h(x, 1, f (x, 0 + 1))) = h(x, 2, h(x, 1, h(x, 0, f (x, 0)))) = h(x, 2, h(x, 1, h(x, 0, g (x)))) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 70 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 71 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions: Die Menge PRi+1 entstehe durch Anwendung von Klon-Komposition und IRS auf Funktionen aus PRi , i ∈ N . Wegen idIN = π01 ∈ PR0 folgt sofort PR0 ⊆ PR1 , und per Induktion auch PRi ⊆ PRi+1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 71 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions: Die Menge PRi+1 entstehe durch Anwendung von Klon-Komposition und IRS auf Funktionen aus PRi , i ∈ N . Wegen idIN = π01 ∈ PR0 folgt sofort PR0 ⊆ PR1 , und per Induktion auch PRi ⊆ PRi+1 . [ PR := { PRi : i ∈ N } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 71 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions: Die Menge PRi+1 entstehe durch Anwendung von Klon-Komposition und IRS auf Funktionen aus PRi , i ∈ N . Wegen idIN = π01 ∈ PR0 folgt sofort PR0 ⊆ PR1 , und per Induktion auch PRi ⊆ PRi+1 . [ PR := { PRi : i ∈ N } Satz Die Menge PR der primitiv-rekursiven Funktionen ist abzählbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 71 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions: Die Menge PRi+1 entstehe durch Anwendung von Klon-Komposition und IRS auf Funktionen aus PRi , i ∈ N . Wegen idIN = π01 ∈ PR0 folgt sofort PR0 ⊆ PR1 , und per Induktion auch PRi ⊆ PRi+1 . [ PR := { PRi : i ∈ N } Satz Die Menge PR der primitiv-rekursiven Funktionen ist abzählbar. Um f ∈ PR für eine gegebene zahlentheoretische Funktion Nk f N nachzuweisen, ist f als Klon-Komposition von, oder als Ergebnis des IRS mit Funktionen darzustellen, die auch zu PR gehören. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 71 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Jürgen Koslowski (TU-BS) Q i≤n i ist primitiv rekursiv. Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt fac(m + 1) = (m + 1)! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y i fac(m + 1) = (m + 1)! = i≤m+1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y Y i = (m + 1) · i fac(m + 1) = (m + 1)! = i≤m+1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 i≤m SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y Y i = (m + 1) · i = (m + 1) · m! fac(m + 1) = (m + 1)! = i≤m+1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 i≤m SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y Y i = (m + 1) · i = (m + 1) · m! fac(m + 1) = (m + 1)! = i≤m+1 i≤m = (m + 1) · fac(m) = h(m, fac(m)) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y Y i = (m + 1) · i = (m + 1) · m! fac(m + 1) = (m + 1)! = i≤m+1 i≤m = (m + 1) · fac(m) = h(m, fac(m)) Das legt N2 h N, ha, bi 7→ succ(a) · b nahe. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Fakultätsfunktion fac(n) = n! = Q i≤n i ist primitiv rekursiv. Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen. Offenbar gilt Y Y i = (m + 1) · i = (m + 1) · m! fac(m + 1) = (m + 1)! = i≤m+1 i≤m = (m + 1) · fac(m) = h(m, fac(m)) Das legt N2 h N, ha, bi 7→ succ(a) · b nahe. Bei h handelt es sich um das Ergebnis der Substitution von succ und idN = π01 in die Multiplikation N2 mult N. Die primitive Rekursivität von h folgt, wenn wir die der Multiplikation nachweisen können. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 72 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 untersuchen. Jürgen Koslowski (TU-BS) plus N auf primitive Rekursivität zu Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 . Zusammenfassend sind folgende Funktionen primitiv rekursiv: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 . Zusammenfassend sind folgende Funktionen primitiv rekursiv: plus = IR(π01 , succ ◦ π23 ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 . Zusammenfassend sind folgende Funktionen primitiv rekursiv: plus = IR(π01 , succ ◦ π23 ) mult = IR(κ1;0 , plus ◦ hπ03 , π23 i) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Fortsetzung) Da die Multiplikation weder auf Klon-Komposition noch auf Substitution basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 , während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i . Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 . Zusammenfassend sind folgende Funktionen primitiv rekursiv: plus = IR(π01 , succ ◦ π23 ) mult = IR(κ1;0 , plus ◦ hπ03 , π23 i) fac = IR(κ0;1 , mult ◦ hsucc, π01 i) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 73 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Die auf N beschränkte Subtraktion ist primitiv-rekursiv) ( . m = n − m falls n > m monus(n, m) = n − 0 sonst Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 74 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Die auf N beschränkte Subtraktion ist primitiv-rekursiv) ( . m = n − m falls n > m monus(n, m) = n − 0 sonst läßt sich umschreiben zu monus(n, 0) = n Jürgen Koslowski (TU-BS) und monus(n, m + 1) = pred monus(n, m) Theoretische Informatik 2 SS 2015 74 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Die auf N beschränkte Subtraktion ist primitiv-rekursiv) ( . m = n − m falls n > m monus(n, m) = n − 0 sonst läßt sich umschreiben zu monus(n, 0) = n und monus(n, m + 1) = pred monus(n, m) Dies paßt zum Rekursionsschema für g = π01 = idN und h = pred ◦π23 , wobei die totale Vorgängerfunktion pred definiert ist durch pred(0) = 0 Jürgen Koslowski (TU-BS) und pred(m + 1) = m Theoretische Informatik 2 SS 2015 74 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Die auf N beschränkte Subtraktion ist primitiv-rekursiv) ( . m = n − m falls n > m monus(n, m) = n − 0 sonst läßt sich umschreiben zu monus(n, 0) = n und monus(n, m + 1) = pred monus(n, m) Dies paßt zum Rekursionsschema für g = π01 = idN und h = pred ◦π23 , wobei die totale Vorgängerfunktion pred definiert ist durch pred(0) = 0 und pred(m + 1) = m Die primitive Rekursivität von h folgt aus der von pred . Aber dies ergibt sich auch mit Hilfe des Rekursionsschemas und den Funktionen ḡ = κ0;0 und h̄ = π02 : pred 0 = 0 = ḡ Jürgen Koslowski (TU-BS) und pred(m + 1) = h̄(m, pred(m)) = m Theoretische Informatik 2 SS 2015 74 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Das Umordnen, Löschen oder Wiederholen von Argumenten in primitivrekursiven Funktionen liefert wieder solche. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 75 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Das Umordnen, Löschen oder Wiederholen von Argumenten in primitivrekursiven Funktionen liefert wieder solche. Beweis. Für Nk g N und {0, . . . , k − 1} = k die Komposition f : Nm Nϕ Nk g N , ϕ m = {0, . . . , m − 1} läßt sich x 7→ g (xϕ(0) , ×ϕ(1) , . . . , xϕ(k−1) ) m , πm , . . . , πm darstellen als Klon-Komposition f = g ◦ hπϕ(0) ϕ(1) ϕ(k−1) i . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 75 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Das Umordnen, Löschen oder Wiederholen von Argumenten in primitivrekursiven Funktionen liefert wieder solche. Beweis. Für Nk g N und {0, . . . , k − 1} = k die Komposition f : Nm Nϕ Nk g N , ϕ m = {0, . . . , m − 1} läßt sich x 7→ g (xϕ(0) , ×ϕ(1) , . . . , xϕ(k−1) ) m , πm , . . . , πm darstellen als Klon-Komposition f = g ◦ hπϕ(0) ϕ(1) ϕ(k−1) i . Corollar Ist Nk f N primitiv-rekursiv, dann auch für alle ` ∈ N die Funktion 0 Nk × N` = Nk+` f N die gegeben ist durch f 0 (x, y) = f (x) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 75 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz (Fallunterscheidung ist primitv-rekursiv) Sind für i < n die Funktionen Nk gi , hi N primitiv-rekursiv, und existiert für jedes x ∈ Nk genau ein i < n mit hi (x) = 0 , so ist auch Nk f N , x 7→ gi (x) falls hi (x) = 0 primitiv-rekursiv. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 76 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz (Fallunterscheidung ist primitv-rekursiv) Sind für i < n die Funktionen Nk gi , hi N primitiv-rekursiv, und existiert für jedes x ∈ Nk genau ein i < n mit hi (x) = 0 , so ist auch Nk f N , x 7→ gi (x) falls hi (x) = 0 primitiv-rekursiv. Beweis. f (x) = X . h (x) gi (x) · 1 − i i<n Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 76 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Mit Nk+1 g N sind auch folgende Funktionen Nk+1 f+ , f∗ N primitiv-rekursiv: X Y f+ (x, m) := g (x, i) und f∗ (x, m) := g (x, i) i<m Jürgen Koslowski (TU-BS) i<m Theoretische Informatik 2 SS 2015 77 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Mit Nk+1 g N sind auch folgende Funktionen Nk+1 f+ , f∗ N primitiv-rekursiv: X Y f+ (x, m) := g (x, i) und f∗ (x, m) := g (x, i) i<m i<m Beweis. f+ (x, 0) = 0 und f+ (x, m + 1) = f+ (x, m) + g (x, m) zeigt, wie f+ mit dem IRS aus g+ (x) = 0 und h+ (x, m, c) = g (x, m) + c entsteht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 77 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Mit Nk+1 g N sind auch folgende Funktionen Nk+1 f+ , f∗ N primitiv-rekursiv: X Y f+ (x, m) := g (x, i) und f∗ (x, m) := g (x, i) i<m i<m Beweis. f+ (x, 0) = 0 und f+ (x, m + 1) = f+ (x, m) + g (x, m) zeigt, wie f+ mit dem IRS aus g+ (x) = 0 und h+ (x, m, c) = g (x, m) + c entsteht. Analog zeigt f∗ (x, 0) = 1 und f∗ (x, m + 1) = f∗ (x, m) · g (x, m) wie f∗ mit dem IRS aus g∗ (x) = 1 und h∗ (x, m, c) = g (x, m) · c entsteht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 77 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (beschränkter µ -Operator) Für eine Funktion Nk+1 g N definieren wir Nk+1 f N durch f (x, m) = µi<m (g (x, i) = 0) ( i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0 = 0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 78 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (beschränkter µ -Operator) Für eine Funktion Nk+1 g N definieren wir Nk+1 f N durch f (x, m) = µi<m (g (x, i) = 0) ( i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0 = 0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0) In Worten: f (x, m) ist die kleinste Zahl i0 < m mit g (x, i0 ) = 0 , falls solch eine existiert, und 0 sonst. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 78 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (beschränkter µ -Operator) Für eine Funktion Nk+1 g N definieren wir Nk+1 f N durch f (x, m) = µi<m (g (x, i) = 0) ( i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0 = 0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0) In Worten: f (x, m) ist die kleinste Zahl i0 < m mit g (x, i0 ) = 0 , falls solch eine existiert, und 0 sonst. Die Schreibweise soll andeuten, dass i eine gebundene Variable ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 78 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (beschränkter µ -Operator) Für eine Funktion Nk+1 g N definieren wir Nk+1 f N durch f (x, m) = µi<m (g (x, i) = 0) ( i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0 = 0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0) In Worten: f (x, m) ist die kleinste Zahl i0 < m mit g (x, i0 ) = 0 , falls solch eine existiert, und 0 sonst. Die Schreibweise soll andeuten, dass i eine gebundene Variable ist. Wir werden später auch einen unbeschränkten µ-Operator kennenlernen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 78 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition (beschränkter µ -Operator) Für eine Funktion Nk+1 g N definieren wir Nk+1 f N durch f (x, m) = µi<m (g (x, i) = 0) ( i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0 = 0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0) In Worten: f (x, m) ist die kleinste Zahl i0 < m mit g (x, i0 ) = 0 , falls solch eine existiert, und 0 sonst. Die Schreibweise soll andeuten, dass i eine gebundene Variable ist. Wir werden später auch einen unbeschränkten µ-Operator kennenlernen. Satz Ist g in der obigen Definition primitiv-rekursiv, so auch f . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 78 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis. Wie wollen wieder das IRS anwenden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 79 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis. Wie wollen wieder das IRS anwenden. Dazu schreiben wir f wie folgt: f (x, 0) = 0 ( m falls g (x, m) + f (x, m) = 0 und g (x, 0) · m 6= 0 f (x, m + 1) = f (x, m) sonst Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 79 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis. Wie wollen wieder das IRS anwenden. Dazu schreiben wir f wie folgt: f (x, 0) = 0 ( m falls g (x, m) + f (x, m) = 0 und g (x, 0) · m 6= 0 f (x, m + 1) = f (x, m) sonst Damit funktioniert das IRS mit den Funktionen ĝ (x) = 0 ( m ĥ(x, m, c) = c Jürgen Koslowski (TU-BS) . g (x, 0) · m) = 0 falls g (x, m) + f (x, m) + (1 − . (g (x, m) + f (x, m)) · g (x, 0) · m = 0 falls 1 − Theoretische Informatik 2 SS 2015 79 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis. Wie wollen wieder das IRS anwenden. Dazu schreiben wir f wie folgt: f (x, 0) = 0 ( m falls g (x, m) + f (x, m) = 0 und g (x, 0) · m 6= 0 f (x, m + 1) = f (x, m) sonst Damit funktioniert das IRS mit den Funktionen ĝ (x) = 0 ( m ĥ(x, m, c) = c Jürgen Koslowski (TU-BS) . g (x, 0) · m) = 0 falls g (x, m) + f (x, m) + (1 − . (g (x, m) + f (x, m)) · g (x, 0) · m = 0 falls 1 − Theoretische Informatik 2 SS 2015 79 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Jürgen Koslowski (TU-BS) Prädikat Definition Theoretische Informatik 2 alternative Beschreibung SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Jürgen Koslowski (TU-BS) Prädikat sg(x) Definition sg(0) = 0 sg(y + 1) = 1 Theoretische Informatik 2 alternative Beschreibung SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Jürgen Koslowski (TU-BS) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 Theoretische Informatik 2 alternative Beschreibung . 1 − sg(x) SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Kleiner als lt(x, y ) Jürgen Koslowski (TU-BS) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 . sg(y − x) Theoretische Informatik 2 alternative Beschreibung . 1 − sg(x) SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Kleiner als Größer als lt(x, y ) gt(x, y ) Jürgen Koslowski (TU-BS) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 . sg(y − x) . sg(x − y ) Theoretische Informatik 2 alternative Beschreibung . 1 − sg(x) SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Kleiner als Größer als Gleich lt(x, y ) gt(x, y ) eq(x, y ) Jürgen Koslowski (TU-BS) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 . sg(y − x) . sg(x − y ) . . cosg((x − y ) + (y − x)) Theoretische Informatik 2 alternative Beschreibung . 1 − sg(x) . . . . 1 − (x − y ) − (y − x) SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Kleiner als Größer als Gleich Ungleich lt(x, y ) gt(x, y ) eq(x, y ) ne(x, y ) Jürgen Koslowski (TU-BS) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 . sg(y − x) . sg(x − y ) . . cosg((x − y ) + (y − x)) cosg(eq(x, y )) Theoretische Informatik 2 alternative Beschreibung . 1 − sg(x) . . . . 1 − (x − y ) − (y − x) . . sg((x − y ) + (y − x)) SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Primitiv-rekursive Prädikate Definition Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N . Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13) Name Sign Prädikat sg(x) Sign Komplement cosg(x) Kleiner als Größer als Gleich Ungleich lt(x, y ) gt(x, y ) eq(x, y ) ne(x, y ) Definition sg(0) = 0 sg(y + 1) = 1 cosg(0) = 1 cosg(y + 1) = 0 . sg(y − x) . sg(x − y ) . . cosg((x − y ) + (y − x)) cosg(eq(x, y )) alternative Beschreibung . 1 − sg(x) . . . . 1 − (x − y ) − (y − x) . . sg((x − y ) + (y − x)) Primitiv-rekursive Prädikate lassen sich mittels logischer Junktoren zu neuen solchen kombinieren. Das kann im Rahmen von Fallunterscheidungen nützlich sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 80 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Folgende Prädikate sind primitiv-rekursiv: ( ( 1 falls n teilt n 1 falls n prim ist |(n, m) = prime(n) = 0 sonst 0 sonst Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 81 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Folgende Prädikate sind primitiv-rekursiv: ( ( 1 falls n teilt n 1 falls n prim ist |(n, m) = prime(n) = 0 sonst 0 sonst Beweis. |(n, m) = 1 ⇐⇒ ∃z. (z · n = m) ⇐⇒ X eq(z · n, m) = 1 z≤m Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 81 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Folgende Prädikate sind primitiv-rekursiv: ( ( 1 falls n teilt n 1 falls n prim ist |(n, m) = prime(n) = 0 sonst 0 sonst Beweis. |(n, m) = 1 ⇐⇒ ∃z. (z · n = m) ⇐⇒ X eq(z · n, m) = 1 z≤m Folglich gilt |(n, m) = Jürgen Koslowski (TU-BS) P z≤m eq(z · n, m) . Theoretische Informatik 2 SS 2015 81 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Folgende Prädikate sind primitiv-rekursiv: ( ( 1 falls n teilt n 1 falls n prim ist |(n, m) = prime(n) = 0 sonst 0 sonst Beweis. |(n, m) = 1 ⇐⇒ ∃z. (z · n = m) ⇐⇒ X eq(z · n, m) = 1 z≤m Folglich gilt |(n, m) = P z≤m eq(z · n, m) . prime(n) = 1 ⇐⇒ n ≥ 2 ∧ ∀y < n. y = 0 ∨ y = 1 ∨ |(y , n) = 0 Jürgen Koslowski (TU-BS) 81 / 236 Theoretische Informatik 2 SS 2015 Church-Turing-These 6.2 Rekursive Funktionen Satz Folgende Prädikate sind primitiv-rekursiv: ( ( 1 falls n teilt n 1 falls n prim ist |(n, m) = prime(n) = 0 sonst 0 sonst Beweis. |(n, m) = 1 ⇐⇒ ∃z. (z · n = m) ⇐⇒ X eq(z · n, m) = 1 z≤m Folglich gilt |(n, m) = P z≤m eq(z · n, m) . prime(n) = 1 ⇐⇒ n ≥ 2 ∧ ∀y < n. y = 0 ∨ y = 1 ∨ |(y , n) = 0 . (2 − . n) + P Also prime(n) = 1 − y <n y · ne(y , 1) · |(y , n) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 81 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. Jürgen Koslowski (TU-BS) p N, die n die n -te Primzahl zuordnet, ist Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung. p(m + 1) ist die kleinste Primzahl größer als p(m) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung. p(m + 1) ist die kleinste Primzahl größer als p(m) . Der kleinste Kandidat dafür ist p(m)! + 1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung. p(m + 1) ist die kleinste Primzahl größer als p(m) . Der kleinste Kandidat dafür ist p(m)! + 1 . Aus . prime(i) + lt(i, p(m) + 1) p(m + 1) = h(m, p(m)) = µi<p(m)!+2 (1 − Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Die Funktion N primitv-rekursiv. p N, die n die n -te Primzahl zuordnet, ist Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv. Beweis. Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung. p(m + 1) ist die kleinste Primzahl größer als p(m) . Der kleinste Kandidat dafür ist p(m)! + 1 . Aus . prime(i) + lt(i, p(m) + 1) p(m + 1) = h(m, p(m)) = µi<p(m)!+2 (1 − folgern wir p = IRS(κ0;2 , h) mit . prime(i) + lt(i, b + 1) h(m, b) = µi<b!+2 (1 − Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 82 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis (Fortsetzung). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 83 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis (Fortsetzung). D(i, n) ist die kleinste Zahl j < n , so dass n nicht durch p(i)j geteilt wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 83 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beweis (Fortsetzung). D(i, n) ist die kleinste Zahl j < n , so dass n nicht durch p(i)j geteilt wird. Das läßt sich direkt mittels beschränktem µ-Operator ausdrücken D(i, n) = µj<n+1 |(p(i)j+1 , n) = 0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 83 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch für die Klon-Komposition f ◦ hgi : i < ki . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch für die Klon-Komposition f ◦ hgi : i < ki . Sind Nk−1 g N h Nk−1 × {0} definiert. Jürgen Koslowski (TU-BS) Nk+1 total, so ist f := IR(g , h) zumindest auf Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch für die Klon-Komposition f ◦ hgi : i < ki . Sind Nk−1 g N h Nk+1 total, so ist f := IR(g , h) zumindest auf Nk−1 × {0} definiert. Mit f (x, m) ist auch f (x, m + 1) = h(x, m, f (x, m)) definiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch für die Klon-Komposition f ◦ hgi : i < ki . Sind Nk−1 g N h Nk+1 total, so ist f := IR(g , h) zumindest auf Nk−1 × {0} definiert. Mit f (x, m) ist auch f (x, m + 1) = h(x, m, f (x, m)) definiert. Induktion zeigt nun: f ist auf ganz Nk definiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Eigenschaften von PR Satz Jede primitiv rekursive Funktion ist total. Beweis. Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total. Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch für die Klon-Komposition f ◦ hgi : i < ki . Sind Nk−1 g N h Nk+1 total, so ist f := IR(g , h) zumindest auf Nk−1 × {0} definiert. Mit f (x, m) ist auch f (x, m + 1) = h(x, m, f (x, m)) definiert. Induktion zeigt nun: f ist auf ganz Nk definiert. Strukturelle Induktion über den Aufbau primitv rekursiver Funktionen wie hier ist aus der Logik bekannt und wird auch nachfolgend nützlich sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 84 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F . Σpr := {π, κ, succ, |, (, ), ; , clone, IR} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 85 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F . Σpr := {π, κ, succ, |, (, ), ; , clone, IR} soll als Alphabet dienen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 85 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F . Σpr := {π, κ, succ, |, (, ), ; , clone, IR} soll als Alphabet dienen. Parallel dazu ist auch die Arität σ festzulegen: Definition Für i < k ∈ N definieren wir zunächst primitv rekursive Ausdrücke (prAs) mit folgender Arität und entsprechenden Grundfunktionen als Semantik: σ(π(|k ; |i )) = k Jürgen Koslowski (TU-BS) , σ(κ(|k )) = k Theoretische Informatik 2 bzw. σ(succ) = 1 SS 2015 85 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F . Σpr := {π, κ, succ, |, (, ), ; , clone, IR} soll als Alphabet dienen. Parallel dazu ist auch die Arität σ festzulegen: Definition Für i < k ∈ N definieren wir zunächst primitv rekursive Ausdrücke (prAs) mit folgender Arität und entsprechenden Grundfunktionen als Semantik: σ(π(|k ; |i )) = k , σ(κ(|k )) = k bzw. σ(succ) = 1 Sind F und Gi , i < σ(F ) primitiv-rekursive Ausdrücke mit σ(Gi ) = σ(Gi+1 ) für alle i < σ(F ) − 1 , so ist clone(F ; G0 ; . . . ; Gσ(F )−1 ) Jürgen Koslowski (TU-BS) ein prA mit Arität Theoretische Informatik 2 σ(Gi ) SS 2015 85 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F . Σpr := {π, κ, succ, |, (, ), ; , clone, IR} soll als Alphabet dienen. Parallel dazu ist auch die Arität σ festzulegen: Definition Für i < k ∈ N definieren wir zunächst primitv rekursive Ausdrücke (prAs) mit folgender Arität und entsprechenden Grundfunktionen als Semantik: σ(π(|k ; |i )) = k , σ(κ(|k )) = k bzw. σ(succ) = 1 Sind F und Gi , i < σ(F ) primitiv-rekursive Ausdrücke mit σ(Gi ) = σ(Gi+1 ) für alle i < σ(F ) − 1 , so ist clone(F ; G0 ; . . . ; Gσ(F )−1 ) ein prA mit Arität σ(Gi ) Sind G und H primitiv-reguläre Ausdrücke mit σ(H) = σ(G ) + 2 , so ist IR(G ; H) Jürgen Koslowski (TU-BS) ein prA mit Arität σ(G ) + 1 = σ(H) − 1 Theoretische Informatik 2 SS 2015 85 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband von M , Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband von M , die nschließend mit ebendieser Eingabe simuliert wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband von M , die nschließend mit ebendieser Eingabe simuliert wird. Realisieren die 1-Band-Maschinen L und N die totalen Funktionen Nk−1 g N h Nk+1 , so realisiert folgende 2-Band-Maschine f := IR(g , h) : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband von M , die nschließend mit ebendieser Eingabe simuliert wird. Realisieren die 1-Band-Maschinen L und N die totalen Funktionen Nk−1 g N h Nk+1 , so realisiert folgende 2-Band-Maschine f := IR(g , h) : bei Eingabe hx, mi simuliert sie zunächst L mit Eingabe x und Ausgabe f (x, 0) = g (x) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede primitiv rekursive Funktion ist Turing-berechenbar. Beweis. Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen. Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband von M , die nschließend mit ebendieser Eingabe simuliert wird. Realisieren die 1-Band-Maschinen L und N die totalen Funktionen Nk−1 g N h Nk+1 , so realisiert folgende 2-Band-Maschine f := IR(g , h) : bei Eingabe hx, mi simuliert sie zunächst L mit Eingabe x und Ausgabe f (x, 0) = g (x) . Anschließend simulieret sie m -mal N mit Eingabe hx, i, f (x, i)i und Ausgabe f (x, i + 1) , i < m . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 86 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Satz Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Satz Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv. Beweisidee ϕi , i ∈ N , sei eine Aufzählung aller primitiv-rekursiven Funktionen, die Stelligkeit sei σi = σ(ϕi ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Satz Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv. Beweisidee ϕi , i ∈ N , sei eine Aufzählung aller primitiv-rekursiven Funktionen, die Stelligkeit sei σi = σ(ϕi ) . Definiere die Diagonalfunktion N ∆ N durch ∆(n) := ϕn (hn : i < σn i) + 1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 für n ∈ N SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Satz Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv. Beweisidee ϕi , i ∈ N , sei eine Aufzählung aller primitiv-rekursiven Funktionen, die Stelligkeit sei σi = σ(ϕi ) . Definiere die Diagonalfunktion N ∆ N durch ∆(n) := ϕn (hn : i < σn i) + 1 für n ∈ N Nach Konstruktion kann ∆ mit keiner einstelligen Funktion der Form ϕn übereinstimmen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der 1-Band-Maschine für die Ergebnis-Funktion berechnen! Satz Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv. Beweisidee ϕi , i ∈ N , sei eine Aufzählung aller primitiv-rekursiven Funktionen, die Stelligkeit sei σi = σ(ϕi ) . Definiere die Diagonalfunktion N ∆ N durch ∆(n) := ϕn (hn : i < σn i) + 1 für n ∈ N Nach Konstruktion kann ∆ mit keiner einstelligen Funktion der Form ϕn übereinstimmen: aus ∆ = ϕn folgt ∆(n) = ϕn (n) + 1 6= ϕn (n) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 87 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der Turingmaschine berechnet können, die ϕn realisiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der Turingmaschine berechnet können, die ϕn realisiert. Dafür verwenden wir primitiv rekursive Ausdrücke: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der Turingmaschine berechnet können, die ϕn realisiert. Dafür verwenden wir primitiv rekursive Ausdrücke: Faßt man deren Alphabet Σpr als linear geordnete Menge auf, so läßt sich Σ∗pr nun lexikographisch linear ordnen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der Turingmaschine berechnet können, die ϕn realisiert. Dafür verwenden wir primitiv rekursive Ausdrücke: Faßt man deren Alphabet Σpr als linear geordnete Menge auf, so läßt sich Σ∗pr nun lexikographisch linear ordnen. Die Reihenfolge der primitvrekursiven Ausdrücke gemäß dieser Ordnung sei durch ϕ codiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Fortsetzung Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der Turingmaschine berechnet können, die ϕn realisiert. Dafür verwenden wir primitiv rekursive Ausdrücke: Faßt man deren Alphabet Σpr als linear geordnete Menge auf, so läßt sich Σ∗pr nun lexikographisch linear ordnen. Die Reihenfolge der primitvrekursiven Ausdrücke gemäß dieser Ordnung sei durch ϕ codiert. Nun können wir die Turing-Berechenbarkeit von ∆ zeigen: Für Eingabe n wird zunächst der prA mit Index n gemäß obiger Auflistung bestimmt; dann wird der Code der zugehörigen TM bestimmt, die die Semantik des prA mit Arität σ realisiert (siehe Folie 481); schließlich wird diese Maschine mit der Eingabe hn : i < σi simuliert (Stichwort: universelle Turingmaschine, Kapitel 7); zum Schluß wird das Ergebnis um 1 erhöht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 88 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: A(n, m) := Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := A(n − 1, 1) falls n > 0 und m = 0; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := A(n − 1, 1) falls n > 0 und m = 0; A(n − 1, A(n, m − 1)) falls n > 0 und m > 0. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := A(n − 1, 1) falls n > 0 und m = 0; A(n − 1, A(n, m − 1)) falls n > 0 und m > 0. ist Turing-berechenbar, da A(n, m) tatsächlich nur von endlich vielen vorher zu berechnenden Werten A(k, l) mit k ≤ n und l < m abhängt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := A(n − 1, 1) falls n > 0 und m = 0; A(n − 1, A(n, m − 1)) falls n > 0 und m > 0. ist Turing-berechenbar, da A(n, m) tatsächlich nur von endlich vielen vorher zu berechnenden Werten A(k, l) mit k ≤ n und l < m abhängt. Das z.B. auf Wikipedia beschriebene Wachstumsverhalten verhindert, dass A primitiv rekursiv sein kann: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 english SS 2015 deutsch 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre)) Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter zur bekannten zweistelligen Version vereinfacht: falls n = 0; m + 1 A(n, m) := A(n − 1, 1) falls n > 0 und m = 0; A(n − 1, A(n, m − 1)) falls n > 0 und m > 0. ist Turing-berechenbar, da A(n, m) tatsächlich nur von endlich vielen vorher zu berechnenden Werten A(k, l) mit k ≤ n und l < m abhängt. deutsch Das z.B. auf Wikipedia beschriebene Wachstumsverhalten english verhindert, dass A primitiv rekursiv sein kann: A “wächst zu schnell”. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 89 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies h(b, b) < h(b, b) zur Folge. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies h(b, b) < h(b, b) zur Folge. Satz Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv rekursiven Funktionen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies h(b, b) < h(b, b) zur Folge. Satz Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv rekursiven Funktionen. Insbesondere kann A nicht primitiv-rekursiv sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies h(b, b) < h(b, b) zur Folge. Satz Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv rekursiven Funktionen. Insbesondere kann A nicht primitiv-rekursiv sein. Beweisidee Man zeigt, analog zu früheren Beweisen, dass A alle Grundfunktionen majorisiert, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt g (a) < h(a, b) Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies h(b, b) < h(b, b) zur Folge. Satz Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv rekursiven Funktionen. Insbesondere kann A nicht primitiv-rekursiv sein. Beweisidee Man zeigt, analog zu früheren Beweisen, dass A alle Grundfunktionen majorisiert, und dass die Eigenschaft, von A majorisiert zu werden, unter Klon-Komposition und dem IRS erhalten bleibt, Details auf PlanetMath. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 90 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und seinen Schülern bekannt gewesen sein: David Hilbert, Über das Unendliche, Mathematische Annalen 95: 161–190 (1926). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und seinen Schülern bekannt gewesen sein: David Hilbert, Über das Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99, 118–133 aber erst 1928 erschien. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und seinen Schülern bekannt gewesen sein: David Hilbert, Über das Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99, 118–133 aber erst 1928 erschien. Hier wird auch Sudans Arbeit Sur le nombre transfini ω ω , Bulletin mathematique de la Societe roumaine des sciences 30: 11–30, (1927) zitiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und seinen Schülern bekannt gewesen sein: David Hilbert, Über das Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99, 118–133 aber erst 1928 erschien. Hier wird auch Sudans Arbeit Sur le nombre transfini ω ω , Bulletin mathematique de la Societe roumaine des sciences 30: 11–30, (1927) zitiert. Schon Hermann Grassmann beschrieb die induktive Definition von Addition und Multiplikation in seinem Lehrbuch der Arithmetik für höhere Lehranstalten (1861). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Historische Anmerkungen: Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den Zusammenhang der verschiedenen Begriffe der rekursiven Funktion, Mathematische Annalen, 110: 612–632 (1934). Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und seinen Schülern bekannt gewesen sein: David Hilbert, Über das Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99, 118–133 aber erst 1928 erschien. Hier wird auch Sudans Arbeit Sur le nombre transfini ω ω , Bulletin mathematique de la Societe roumaine des sciences 30: 11–30, (1927) zitiert. Schon Hermann Grassmann beschrieb die induktive Definition von Addition und Multiplikation in seinem Lehrbuch der Arithmetik für höhere Lehranstalten (1861). Diese Idee wurde später unabhängig von Richard Dedekind wiederentdeckt: Was sind und was sollen die Zahlen? (1888). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 91 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des beschränkten µ-Operators. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des beschränkten µ-Operators. Er abstrahiert das Programmierkonzept der unbeschränkten sequenziellen Suche oder auch WHILE-Schleife. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des beschränkten µ-Operators. Er abstrahiert das Programmierkonzept der unbeschränkten sequenziellen Suche oder auch WHILE-Schleife. Eine Übersicht zu µ-Operatoren findet sich etwa bei PlanetMath . Definition Für eine k + 1-stellige partielle Funktion Nk+1 k -stellige Minimierung Nk µg N durch g N definieren wir ihre x 7→ µg (x) := min{ m : g (x, m) = 0 ∧ ∀j < m. g (x, j) ist definiert } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des beschränkten µ-Operators. Er abstrahiert das Programmierkonzept der unbeschränkten sequenziellen Suche oder auch WHILE-Schleife. Eine Übersicht zu µ-Operatoren findet sich etwa bei PlanetMath . Definition Für eine k + 1-stellige partielle Funktion Nk+1 k -stellige Minimierung Nk µg N durch g N definieren wir ihre x 7→ µg (x) := min{ m : g (x, m) = 0 ∧ ∀j < m. g (x, j) ist definiert } Alternative Schreibweise mit m als gebundener Variable: µm (g (x, m) = 0) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der unbeschränkte µ-Operator Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des beschränkten µ-Operators. Er abstrahiert das Programmierkonzept der unbeschränkten sequenziellen Suche oder auch WHILE-Schleife. Eine Übersicht zu µ-Operatoren findet sich etwa bei PlanetMath . Definition Für eine k + 1-stellige partielle Funktion Nk+1 k -stellige Minimierung Nk µg N durch g N definieren wir ihre x 7→ µg (x) := min{ m : g (x, m) = 0 ∧ ∀j < m. g (x, j) ist definiert } Alternative Schreibweise mit m als gebundener Variable: µm (g (x, m) = 0) . Die Minimierung µf einer totalen Funktion braucht nicht länger total zu sein: Z.B. ist {∗} µsucc N undefiniert, da succ den Wert 0 nicht annimmt, die zu minimierende Menge also leer ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 92 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der Grundfunktionen unter Klon-Komposition, dem IRS und Minimierung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 93 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der Grundfunktionen unter Klon-Komposition, dem IRS und Minimierung. Beispiel Die partielle Vorgängerfunktion N pvor N, n + 1 7→ n , ist µ-rekursiv als Ergebnis der Anwendung des µ-Operators auf eine primitiv-rekursive Funktion (vergl. HA), Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 93 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der Grundfunktionen unter Klon-Komposition, dem IRS und Minimierung. Beispiel Die partielle Vorgängerfunktion N pvor N, n + 1 7→ n , ist µ-rekursiv als Ergebnis der Anwendung des µ-Operators auf eine primitiv-rekursive Funktion (vergl. HA), die wegen ihrer Totalität die orange Extrabedingung automatisch erfüllt: N2 f N , . succ m) + (succ m − . n) = eq(n, succ m) hn, mi 7→ (n − Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 93 / 236 Church-Turing-These 6.2 Rekursive Funktionen Definition Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der Grundfunktionen unter Klon-Komposition, dem IRS und Minimierung. Beispiel Die partielle Vorgängerfunktion N pvor N, n + 1 7→ n , ist µ-rekursiv als Ergebnis der Anwendung des µ-Operators auf eine primitiv-rekursive Funktion (vergl. HA), die wegen ihrer Totalität die orange Extrabedingung automatisch erfüllt: N2 f N , . succ m) + (succ m − . n) = eq(n, succ m) hn, mi 7→ (n − Offengar gilt f (n, m) = 0 gdw succ m = n , was nur im Fall n > 0 möglich ist, und zwar für m = n − 1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 93 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 dem IRS darstellen: Jürgen Koslowski (TU-BS) sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 ist µ-rekursiv. Jürgen Koslowski (TU-BS) div N, hn, mi 7→ k sofern k · m = n gilt, Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt, ist µ-rekursiv. Wir versuchen es zunächst mit f (n, m, k) := sub(n, k · m) Jürgen Koslowski (TU-BS) ( Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt, ist µ-rekursiv. Wir versuchen es zunächst mit f (n, m, k) := sub(n, k · m) Jürgen Koslowski (TU-BS) . m·k +m·k − . n) (oder f (n, m, k) := n − Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt, ist µ-rekursiv. Wir versuchen es zunächst mit f (n, m, k) := sub(n, k · m) . m·k +m·k − . n) (oder f (n, m, k) := n − Aber dann gilt f (0, 0, 0) = 0 , was µ f (0, 0) = 0 zur Folge hätte; das wäre zumindest unkonventionell. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt, ist µ-rekursiv. Wir versuchen es zunächst mit f (n, m, k) := sub(n, k · m) . m·k +m·k − . n) (oder f (n, m, k) := n − Aber dann gilt f (0, 0, 0) = 0 , was µ f (0, 0) = 0 zur Folge hätte; das wäre zumindest unkonventionell. Um im Fall m = 0 Undefiniertheit zu erzwingen, können wir m durch succ(pvor m) ersetzen, was für m = 0 undefiniert ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Beispiel Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 . Beispiel Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt, ist µ-rekursiv. Wir versuchen es zunächst mit f (n, m, k) := sub(n, k · m) . m·k +m·k − . n) (oder f (n, m, k) := n − Aber dann gilt f (0, 0, 0) = 0 , was µ f (0, 0) = 0 zur Folge hätte; das wäre zumindest unkonventionell. Um im Fall m = 0 Undefiniertheit zu erzwingen, können wir m durch succ(pvor m) ersetzen, was für m = 0 undefiniert ist. Andererseits sind im Fall f (n, m, k) = 0 die Werte f (n, m, j) mit j < k definiert, woraus dann µ f (n, m) = k folgt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 94 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede µ-rekursive Funktion ist Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 95 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede µ-rekursive Funktion ist Turing-berechenbar. Beweis. Wegen der Turing-Berechenbarkeit primitiv rekursiver Funktionen ist nur zu zeigen, dass der µ-Operator für partielle Funktionen Turing-Berechenbarkeit erhält: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 95 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede µ-rekursive Funktion ist Turing-berechenbar. Beweis. Wegen der Turing-Berechenbarkeit primitiv rekursiver Funktionen ist nur zu zeigen, dass der µ-Operator für partielle Funktionen Turing-Berechenbarkeit erhält: ausgehend von i = 0 wird i solange erhöht, bis erstmals f (x, i) = 0 auftritt; das aktuelle Argument i ist dann der Wert von µ f (x) (orange Extrabedingung!). Andernfalls ist µ f (x) undefiniert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 95 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede µ-rekursive Funktion ist Turing-berechenbar. Beweis. Wegen der Turing-Berechenbarkeit primitiv rekursiver Funktionen ist nur zu zeigen, dass der µ-Operator für partielle Funktionen Turing-Berechenbarkeit erhält: ausgehend von i = 0 wird i solange erhöht, bis erstmals f (x, i) = 0 auftritt; das aktuelle Argument i ist dann der Wert von µ f (x) (orange Extrabedingung!). Andernfalls ist µ f (x) undefiniert. Ohne Beweis (sehr technisch) geben wir die Umkehrung an: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 95 / 236 Church-Turing-These 6.2 Rekursive Funktionen Satz Jede µ-rekursive Funktion ist Turing-berechenbar. Beweis. Wegen der Turing-Berechenbarkeit primitiv rekursiver Funktionen ist nur zu zeigen, dass der µ-Operator für partielle Funktionen Turing-Berechenbarkeit erhält: ausgehend von i = 0 wird i solange erhöht, bis erstmals f (x, i) = 0 auftritt; das aktuelle Argument i ist dann der Wert von µ f (x) (orange Extrabedingung!). Andernfalls ist µ f (x) undefiniert. Ohne Beweis (sehr technisch) geben wir die Umkehrung an: Satz Jede Turing-berechenbare Funktion ist µ-rekursiv. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 95 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der leider sehr technische Beweis des letzten Satzes hat eine vielleicht überraschende Konsequenz: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 96 / 236 Church-Turing-These 6.2 Rekursive Funktionen Der leider sehr technische Beweis des letzten Satzes hat eine vielleicht überraschende Konsequenz: Corollar. (Kleene Normalform) Zu jeder µ-rekursiven Funktion f existieren primitiv-rekursive Funktionen g und h mit f (x) = g µi (h(x) = 0) bzw. elementfrei f = g ◦ µh Speziell die Ackermann-Funktion muß auf diese Weise darstellbar sein, siehe etwa Mathematcs Stack Exchange . Weitere interessante Überlegungen zur Ackermannfunktion finden sich ebenfalls bei Theoretical Computer Science Stack Exchange . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 96 / 236 Unentscheidbare Probleme Kapitel 7 Unentscheidbare Probleme Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 97 / 236 Unentscheidbare Probleme 7.0 Problemstellung 7.0 Problemstellung Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer terminierender Algorithmus existiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 98 / 236 Unentscheidbare Probleme 7.0 Problemstellung 7.0 Problemstellung Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer terminierender Algorithmus existiert. Formaler: Für eine gegebene formale Sprache L ∈ Σ∗ suchen wir nach Beweisen, dass L nicht entscheidbar ist, im Sinne des vorletzten Kaptiels. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 98 / 236 Unentscheidbare Probleme 7.0 Problemstellung 7.0 Problemstellung Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer terminierender Algorithmus existiert. Formaler: Für eine gegebene formale Sprache L ∈ Σ∗ suchen wir nach Beweisen, dass L nicht entscheidbar ist, im Sinne des vorletzten Kaptiels. Beispiel Eingabe: Programmtext P (in ALGOL 68, FORTH, . . . ), Eingabedaten E Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 98 / 236 Unentscheidbare Probleme 7.0 Problemstellung 7.0 Problemstellung Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer terminierender Algorithmus existiert. Formaler: Für eine gegebene formale Sprache L ∈ Σ∗ suchen wir nach Beweisen, dass L nicht entscheidbar ist, im Sinne des vorletzten Kaptiels. Beispiel Eingabe: Programmtext P (in ALGOL 68, FORTH, . . . ), Eingabedaten E Aufgabe: Festzustellen, ob P bei Eingabe E terminiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 98 / 236 Unentscheidbare Probleme 7.0 Problemstellung 7.0 Problemstellung Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer terminierender Algorithmus existiert. Formaler: Für eine gegebene formale Sprache L ∈ Σ∗ suchen wir nach Beweisen, dass L nicht entscheidbar ist, im Sinne des vorletzten Kaptiels. Beispiel Eingabe: Programmtext P (in ALGOL 68, FORTH, . . . ), Eingabedaten E Aufgabe: Festzustellen, ob P bei Eingabe E terminiert. Dieses Problem ist nicht entscheidbar! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 98 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: MU soll beliebige TMs simulieren können, deterministische wie nicht-deterministische. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: MU soll beliebige TMs simulieren können, deterministische wie nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein Algorithmus, der jeden beliebigen Algorithmus ausführt, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: MU soll beliebige TMs simulieren können, deterministische wie nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein Algorithmus, der jeden beliebigen Algorithmus ausführt, insbesondere auch sich selbst. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: MU soll beliebige TMs simulieren können, deterministische wie nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein Algorithmus, der jeden beliebigen Algorithmus ausführt, insbesondere auch sich selbst. Praktische Beispiele dafür sind z.B. Interpreter für Programmiersprachen (JAVA-Bytecode,. . . ), CPUs (= Interpreter für Maschinencode). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine 7.1 Universelle Turingmaschine Zunächst überzeugen wir uns von der Existenz einer “programmierbaren” Turingmaschine MU . An diese stellen wir folgende Anforderungen: MU soll beliebige TMs simulieren können, deterministische wie nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein Algorithmus, der jeden beliebigen Algorithmus ausführt, insbesondere auch sich selbst. Praktische Beispiele dafür sind z.B. Interpreter für Programmiersprachen (JAVA-Bytecode,. . . ), CPUs (= Interpreter für Maschinencode). Konkret soll MU bei Eingaben der Form hc(M), w i , c(M) der Binärcode einer TM M , diese Maschine mit Eingabe w ∈ {0, 1}∗ simulieren, im Entscheidungs- wie im Berechnungsfall. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 99 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell entspricht 01 dem ursprüngliche Blankzeichen s0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell entspricht 01 dem ursprüngliche Blankzeichen s0 . Vorteil: damit wird der relevante Bandinhalt von M durch ein zusammenhängendes Binärwort auf dem Band von M̄ beschrieben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell entspricht 01 dem ursprüngliche Blankzeichen s0 . Vorteil: damit wird der relevante Bandinhalt von M durch ein zusammenhängendes Binärwort auf dem Band von M̄ beschrieben. . Den M-Kopf zu bewegen entspricht der Suche nach der nächsten Null. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell entspricht 01 dem ursprüngliche Blankzeichen s0 . Vorteil: damit wird der relevante Bandinhalt von M durch ein zusammenhängendes Binärwort auf dem Band von M̄ beschrieben. . Den M-Kopf zu bewegen entspricht der Suche nach der nächsten Null. . Das Überschreiben von si durch sj erfordert ggf. die Verschiebung eines Teils des M̄-Bandinhalts, um keine Lücken entstehen zu lassen. Dabei dient das Blankzeichen # der Maschine M̄ als Randbegrenzer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Bemerkung Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit B = {#, 0, 1} simulieren: . Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell entspricht 01 dem ursprüngliche Blankzeichen s0 . Vorteil: damit wird der relevante Bandinhalt von M durch ein zusammenhängendes Binärwort auf dem Band von M̄ beschrieben. . Den M-Kopf zu bewegen entspricht der Suche nach der nächsten Null. . Das Überschreiben von si durch sj erfordert ggf. die Verschiebung eines Teils des M̄-Bandinhalts, um keine Lücken entstehen zu lassen. Dabei dient das Blankzeichen # der Maschine M̄ als Randbegrenzer. Weiterhin kann M̄ eine Zustandsmenge der Form Q̄ = Q × QM haben (“zusätzliches Gedächtnis”), deren zweite Komponente über den Zustand der zu simulierenden Maschine M buchführt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 100 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen. Ähnlich wie oben codieren wir den Zustand qi durch 10i+1 , i < n , Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen. Ähnlich wie oben codieren wir den Zustand qi durch 10i+1 , i < n , und die möglichen Aktionen gemäß h#, 0, 1, L, Ri 7→ h10, 102 , 103 , 104 , 105 i Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen. Ähnlich wie oben codieren wir den Zustand qi durch 10i+1 , i < n , und die möglichen Aktionen gemäß h#, 0, 1, L, Ri 7→ h10, 102 , 103 , 104 , 105 i Übergänge lassen sich nun darstellen als Binärwörter wj aus {10i+1 : i < n}{10, 102 , 103 }{10i+1 : i < n}{10, 102 , 103 , 104 , 105 } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111 (1) zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen. Ähnlich wie oben codieren wir den Zustand qi durch 10i+1 , i < n , und die möglichen Aktionen gemäß h#, 0, 1, L, Ri 7→ h10, 102 , 103 , 104 , 105 i Übergänge lassen sich nun darstellen als Binärwörter wj aus {10i+1 : i < n}{10, 102 , 103 }{10i+1 : i < n}{10, 102 , 103 , 104 , 105 } In c(M) werden deren Grenzen durch zwei Einsen markiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 101 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa h , i 7→ h , i entspricht Jürgen Koslowski (TU-BS) w0 = Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , i 7→ h , i entspricht Jürgen Koslowski (TU-BS) w0 = 10 Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ h , i entspricht Jürgen Koslowski (TU-BS) w0 = 101000 Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , i entspricht Jürgen Koslowski (TU-BS) w0 = 101000100 Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht Jürgen Koslowski (TU-BS) w0 = 10100010010000 Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 h , w1 = i 7→ h , i entspricht Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , w1 = 100 i 7→ h , i entspricht Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ h , i entspricht w1 = 10010 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ hq1 , i entspricht w1 = 10010100 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ hq1 , 1i entspricht w1 = 100101001000 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ hq1 , 1i entspricht w1 = 100101001000 Satz Die Sprachen xC = { c(M) : M ist eine binäre xTM } , x ∈ {n, d} , der Codes (nicht)deterministischer TMs sind entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ hq1 , 1i entspricht w1 = 100101001000 Satz Die Sprachen xC = { c(M) : M ist eine binäre xTM } , x ∈ {n, d} , der Codes (nicht)deterministischer TMs sind entscheidbar. Beweis. Das entspricht einem Syntaxcheck: Randbegrenzer 111 überprüfen, Zustandszahl n auslesen, Übergangscodes wj separieren und auf Konsistenz prüfen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form c(M) = 111001w0 1w1 111 . Etwa hq0 , 1i 7→ hq1 , Li entspricht w0 = 10100010010000 hq1 , #i 7→ hq1 , 1i entspricht w1 = 100101001000 Satz Die Sprachen xC = { c(M) : M ist eine binäre xTM } , x ∈ {n, d} , der Codes (nicht)deterministischer TMs sind entscheidbar. Beweis. Das entspricht einem Syntaxcheck: Randbegrenzer 111 überprüfen, Zustandszahl n auslesen, Übergangscodes wj separieren und auf Konsistenz prüfen. Im deterministischen Fall ist noch sicherzustellen, dass verschiedene Übergänge verschiedene linke Seiten haben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 102 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈ / Lcode . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈ / Lcode . Eine ähnliche Maschine M1 mit den Übergängen hq0 , 1i 7→ hq1 , #i und hq1 , #i 7→ hq1 , Ri erfüllt hingegen c(M1 ) ∈ Lcode , da sie nie hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈ / Lcode . Eine ähnliche Maschine M1 mit den Übergängen hq0 , 1i 7→ hq1 , #i und hq1 , #i 7→ hq1 , Ri erfüllt hingegen c(M1 ) ∈ Lcode , da sie nie hält. Wir rekapitulieren die Anforderungen an MU für legale Eingaben c(M)w : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈ / Lcode . Eine ähnliche Maschine M1 mit den Übergängen hq0 , 1i 7→ hq1 , #i und hq1 , #i 7→ hq1 , Ri erfüllt hingegen c(M1 ) ∈ Lcode , da sie nie hält. Wir rekapitulieren die Anforderungen an MU für legale Eingaben c(M)w : . MU hält auf c(M)w gdw. M hält auf w , und wenn die Maschinen halten, dann mit identischer Ausgabe. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Beispiel Wir erinnern an die nicht semi-entscheidbare Sprache Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈ / L(M) } Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈ / Lcode . Eine ähnliche Maschine M1 mit den Übergängen hq0 , 1i 7→ hq1 , #i und hq1 , #i 7→ hq1 , Ri erfüllt hingegen c(M1 ) ∈ Lcode , da sie nie hält. Wir rekapitulieren die Anforderungen an MU für legale Eingaben c(M)w : . MU hält auf c(M)w gdw. M hält auf w , und wenn die Maschinen halten, dann mit identischer Ausgabe. . MU akzeptiert c(M)w gdw. M akzeptiert w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 103 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt. Auf B2 wird über den aktuellen Zustand qi von M mittels i + 1 Nullen buchgeführt; zunächst wird hier eine Null geschrieben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt. Auf B2 wird über den aktuellen Zustand qi von M mittels i + 1 Nullen buchgeführt; zunächst wird hier eine Null geschrieben. Die Simulation von M liest zunächst auf B0 ein Symbol aus {#, 0, 1} . In Verbindung mit der Zustandsinformation auf B2 wird nichtdeterministisch nach einem passenden Übergang auf B1 gesucht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt. Auf B2 wird über den aktuellen Zustand qi von M mittels i + 1 Nullen buchgeführt; zunächst wird hier eine Null geschrieben. Die Simulation von M liest zunächst auf B0 ein Symbol aus {#, 0, 1} . In Verbindung mit der Zustandsinformation auf B2 wird nichtdeterministisch nach einem passenden Übergang auf B1 gesucht. Gibt es keinen solchen, so hält MU , wobei genau dann der Finalzustand von MU anzunehmen ist, wenn 0n auf B2 steht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.1 Universelle Turingmaschine Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine realisiert werden; erst diese liefert den Code c(MU ) . Auf B0 steht zunächst die Eingabe c(M)w . Der vordere Teil c(M) wird nach B1 verschoben und einem Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt. Auf B2 wird über den aktuellen Zustand qi von M mittels i + 1 Nullen buchgeführt; zunächst wird hier eine Null geschrieben. Die Simulation von M liest zunächst auf B0 ein Symbol aus {#, 0, 1} . In Verbindung mit der Zustandsinformation auf B2 wird nichtdeterministisch nach einem passenden Übergang auf B1 gesucht. Gibt es keinen solchen, so hält MU , wobei genau dann der Finalzustand von MU anzunehmen ist, wenn 0n auf B2 steht. Andernfalls wird gemäß der rechten Seite der Zustandsindex auf B2 angepaßt, die entsprechende Aktion auf B0 ausgeführt, und der Kopf auf B1 z.B. am Rand des Codes c(M) geparkt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 104 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen? Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen? Lösung: Wie in Kapitel 5 gesehen, besitzt jede nTM M eine sog. Determinisierung M0 , die M simuliert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen? Lösung: Wie in Kapitel 5 gesehen, besitzt jede nTM M eine sog. Determinisierung M0 , die M simuliert. Zwar war M0 als 4-Band Maschine beschrieben worden, aber diese kann systematisch in eine TM Md mit einem Band und Bandalphabet {#, 0, 1} transformiert werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen? Lösung: Wie in Kapitel 5 gesehen, besitzt jede nTM M eine sog. Determinisierung M0 , die M simuliert. Zwar war M0 als 4-Band Maschine beschrieben worden, aber diese kann systematisch in eine TM Md mit einem Band und Bandalphabet {#, 0, 1} transformiert werden. Beobachtung 0: Md bzw. M0 hält genau dann bei Eingabe w , wenn entweder w ∈ L(M) , oder jeder Berechnungspfad in M für w terminiert, ohne zu akzeptieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem 7.2 Das Halteproblem In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält } erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar. Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ” gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen? Lösung: Wie in Kapitel 5 gesehen, besitzt jede nTM M eine sog. Determinisierung M0 , die M simuliert. Zwar war M0 als 4-Band Maschine beschrieben worden, aber diese kann systematisch in eine TM Md mit einem Band und Bandalphabet {#, 0, 1} transformiert werden. Beobachtung 0: Md bzw. M0 hält genau dann bei Eingabe w , wenn entweder w ∈ L(M) , oder jeder Berechnungspfad in M für w terminiert, ohne zu akzeptieren. Beobachtung 1: Die Funktion c(M) 7→ c(Md ) ist Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 105 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Satz Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Satz Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar. Beweis Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit MU : v v = c(M)w ? Nein v n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Satz Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar. Beweis Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit MU : v v = c(M)w ? Ja berechne c(Md ) Nein v n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Satz Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar. Beweis Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit MU : v v = c(M)w ? Ja berechne c(Md ) c(Md )w hält MU ? Nein v n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Definition Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w } Satz Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar. Beweis Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit MU : v v = c(M)w ? Ja berechne c(Md ) c(Md )w hält MU ? Ja v akz. Nein v n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 106 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Mcode : Nein w n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. Jürgen Koslowski (TU-BS) akz. Mhalt ? Nein w akz. Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. Jürgen Koslowski (TU-BS) akz. Mhalt ? Nein w akz. Theoretische Informatik 2 Ja c(Md )w akz. MU ? Nein w akz. SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. Jürgen Koslowski (TU-BS) akz. Mhalt ? Nein w akz. Theoretische Informatik 2 Ja c(Md )w akz. MU ? Ja w n. akz. Nein w akz. SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. akz. Mhalt ? Nein w akz. Ja c(Md )w akz. MU ? Ja w n. akz. Nein w akz. Nach erfolgreichem Syntaxcheck w = c(M) wird die Maschine Mhalt auf die Eingabe c(Md )w angewendet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. akz. Mhalt ? Nein w akz. Ja c(Md )w akz. MU ? Ja w n. akz. Nein w akz. Nach erfolgreichem Syntaxcheck w = c(M) wird die Maschine Mhalt auf die Eingabe c(Md )w angewendet. Hält Md (also auch M ) nicht auf Eingabe w , so wird w = c(M) von Mcode akzeptiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Beweis (Forsetzung). Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die immer hält: w w = c(M)? Ja c(Md )w Mcode : Nein w n. akz. akz. Mhalt ? Nein w akz. Ja c(Md )w akz. MU ? Ja w n. akz. Nein w akz. Nach erfolgreichem Syntaxcheck w = c(M) wird die Maschine Mhalt auf die Eingabe c(Md )w angewendet. Hält Md (also auch M ) nicht auf Eingabe w , so wird w = c(M) von Mcode akzeptiert. Andernfalls testet MU , ob Md (also auch M ) die Eingabe w akzeptiert. Genau dann wird w von Mcode nicht akzeptiert. Aber dies ist ein Widerspruch zur Nichtentscheidbarkeit von Lcode . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 107 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Corollar Das Komplement von Lhalt ist nicht semi-entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 108 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Corollar Das Komplement von Lhalt ist nicht semi-entscheidbar. Beweis. Wegen der Semi-Entscheidbarkeit von Lhalt ist die Semi-Entscheidbarkeit des Komplements äquivalent zur Entscheidbarkeit von Lhalt . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 108 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Corollar Das Komplement von Lhalt ist nicht semi-entscheidbar. Beweis. Wegen der Semi-Entscheidbarkeit von Lhalt ist die Semi-Entscheidbarkeit des Komplements äquivalent zur Entscheidbarkeit von Lhalt . Wie sieht das Komplement von Lhalt überhaupt aus? Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 108 / 236 Unentscheidbare Probleme 7.2 Das Halteproblem Corollar Das Komplement von Lhalt ist nicht semi-entscheidbar. Beweis. Wegen der Semi-Entscheidbarkeit von Lhalt ist die Semi-Entscheidbarkeit des Komplements äquivalent zur Entscheidbarkeit von Lhalt . Wie sieht das Komplement von Lhalt überhaupt aus? Lhalt = { v ∈ {0, 1}∗ : ∃M. v = c(M)w =⇒ Md hält nicht auf w } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 108 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Gegeben: eine formale Sprache L ⊆ {0, 1}∗ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Gegeben: eine formale Sprache L ⊆ {0, 1}∗ . Zu zeigen: L ist nicht entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Gegeben: eine formale Sprache L ⊆ {0, 1}∗ . Zu zeigen: L ist nicht entscheidbar. Annahme: L ist entscheidbar. Dann exisiert eine TM M mit L(M) = L , die immer hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Gegeben: eine formale Sprache L ⊆ {0, 1}∗ . Zu zeigen: L ist nicht entscheidbar. Annahme: L ist entscheidbar. Dann exisiert eine TM M mit L(M) = L , die immer hält. Verfahren: Konstruiere mittels M eine TM M̃ für eine bekanntermaßen unentscheidbare Sprache L̃ , Widerspruch! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein. Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an unentscheidbaren Problemen kennen. Reduktionsschema Gegeben: eine formale Sprache L ⊆ {0, 1}∗ . Zu zeigen: L ist nicht entscheidbar. Annahme: L ist entscheidbar. Dann exisiert eine TM M mit L(M) = L , die immer hält. Verfahren: Konstruiere mittels M eine TM M̃ für eine bekanntermaßen unentscheidbare Sprache L̃ , Widerspruch! Damit kann L nicht entscheidbar gewesen sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 109 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Satz Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Satz Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Macc entscheidet Lacc und hält immer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Satz Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Macc entscheidet Lacc und hält immer. Idee: Eine TM M so modifizieren, dass sie jede Eingabe w akzeptiert, bei der sie hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Satz Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Macc entscheidet Lacc und hält immer. Idee: Eine TM M so modifizieren, dass sie jede Eingabe w akzeptiert, bei der sie hält. Man kann die Nichtfinalzustände nicht zu Finalzuständen machen, aber man kann einen neuen Endzustand qn hinzufügen und neue Übergänge hqi , si 7→ hqn , si , sofern keine M- Übergänge aus hqi , si existieren; die resultierende TM, bezeichnen wir mit M̄ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.0 Das Akzeptanzproblem Satz Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Macc entscheidet Lacc und hält immer. Idee: Eine TM M so modifizieren, dass sie jede Eingabe w akzeptiert, bei der sie hält. Man kann die Nichtfinalzustände nicht zu Finalzuständen machen, aber man kann einen neuen Endzustand qn hinzufügen und neue Übergänge hqi , si 7→ hqn , si , sofern keine M- Übergänge aus hqi , si existieren; die resultierende TM, bezeichnen wir mit M̄ . Die Funktion c(M) 7→ c(M̄) ist natürlich Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 110 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. Macc ? Nein u n. akz. SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. Macc ? Ja u akz. Nein u n. akz. SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. akz. Macc ? Ja u akz. Nein u n. akz. Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. akz. Macc ? Ja u akz. Nein u n. akz. Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut. Nach erfolgreichem Syntaxcheck ist festzustellen, dass M auf w genau dann hält, wenn M̄ die Eingabe w akzeptiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. akz. Macc ? Ja u akz. Nein u n. akz. Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut. Nach erfolgreichem Syntaxcheck ist festzustellen, dass M auf w genau dann hält, wenn M̄ die Eingabe w akzeptiert. Da Lhalt aber nicht entscheidbar ist, kann Macc nicht existieren Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 . 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. akz. Macc ? Ja u akz. Nein u n. akz. Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut. Nach erfolgreichem Syntaxcheck ist festzustellen, dass M auf w genau dann hält, wenn M̄ die Eingabe w akzeptiert. Da Lhalt aber nicht entscheidbar ist, kann Macc nicht existieren . Andererseits ist das Akzeptanzproblem für Kellerautomaten entscheidbar: Kellerautomaten sind analog binär codierbar und können algorithmisch in cfG’n umgewandelt werden, sogar in CNF. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet: u Mhalt : u = c(M)w ? Ja c(M̄)w Nein u n. akz. akz. Macc ? Ja u akz. Nein u n. akz. Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut. Nach erfolgreichem Syntaxcheck ist festzustellen, dass M auf w genau dann hält, wenn M̄ die Eingabe w akzeptiert. Da Lhalt aber nicht entscheidbar ist, kann Macc nicht existieren . Andererseits ist das Akzeptanzproblem für Kellerautomaten entscheidbar: Kellerautomaten sind analog binär codierbar und können algorithmisch in cfG’n umgewandelt werden, sogar in CNF. Der CYK-Algorithmus entscheidet dann das Akzeptanzproblem. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 111 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.1 Akzeptanz des leeren Worts Satz Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 112 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.1 Akzeptanz des leeren Worts Satz Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mε entscheidet Lε und hält immer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 112 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.1 Akzeptanz des leeren Worts Satz Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mε entscheidet Lε und hält immer. Idee: Die Akzeptanz von w ∈ L(M) durch M auf die Akzeptanz von ε durch eine TM Mw zurückführen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 112 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.1 Akzeptanz des leeren Worts Satz Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mε entscheidet Lε und hält immer. Idee: Die Akzeptanz von w ∈ L(M) durch M auf die Akzeptanz von ε durch eine TM Mw zurückführen. Diese enthält alle Zustände von M , aber mit um m := |w | erhöhtem Index, sowie m neue Zustände qi , i < m . Mit Hilfe von Übergängen hqi , #i 7→ hqi , si i sowie hqi , si i 7→ hqi+1 , Ri , i < m , und hqm−1 , sm−1 i 7→ hqm , sm−1 i wird w = s0 s1 . . . sm−1 von links nach rechts auf das leere Band geschrieben. Dann wird M mit um m erhöhten Zustandsindizes ausgeführt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 112 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.1 Akzeptanz des leeren Worts Satz Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mε entscheidet Lε und hält immer. Idee: Die Akzeptanz von w ∈ L(M) durch M auf die Akzeptanz von ε durch eine TM Mw zurückführen. Diese enthält alle Zustände von M , aber mit um m := |w | erhöhtem Index, sowie m neue Zustände qi , i < m . Mit Hilfe von Übergängen hqi , #i 7→ hqi , si i sowie hqi , si i 7→ hqi+1 , Ri , i < m , und hqm−1 , sm−1 i 7→ hqm , sm−1 i wird w = s0 s1 . . . sm−1 von links nach rechts auf das leere Band geschrieben. Dann wird M mit um m erhöhten Zustandsindizes ausgeführt. Die Funktion hc(M), w i 7→ c(Mw ) ist natürlich Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 112 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. Mε ? Nein u n. akz. SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. Mε ? Ja u akz. Nein u n. akz. SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. akz. Mε ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. akz. Mε ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. Nach erfolgreichem Syntaxcheck ist festzustellen, dass w genau dann von M akzeptiert wird, wenn Mw die Eingabe ε akzeptiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. akz. Mε ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. Nach erfolgreichem Syntaxcheck ist festzustellen, dass w genau dann von M akzeptiert wird, wenn Mw die Eingabe ε akzeptiert. Da Lacc aber nicht entscheidbar ist, kann Mε nicht existieren Jürgen Koslowski (TU-BS) Theoretische Informatik 2 . SS 2015 113 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer. Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei leerer Eingabe: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer. Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei leerer Eingabe: die modifizierte Maschine M̃ soll zunächst die Eingabe löschen, mit Hilfe von Übergängen hq0 , si 7→ hq1 , #i 7→ hq0 , Li , s ∈ Σ , sowie hq0 , #i 7→ hq2 , #i , Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer. Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei leerer Eingabe: die modifizierte Maschine M̃ soll zunächst die Eingabe löschen, mit Hilfe von Übergängen hq0 , si 7→ hq1 , #i 7→ hq0 , Li , s ∈ Σ , sowie hq0 , #i 7→ hq2 , #i , und bei leerem Band weiter wie M mit um 2 erhöhten Zustandsindizes verfahren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme 7.3.2 Terminierung eines Algorithmus Satz Die Sprache Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist unentscheidbar. Beweis. Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer. Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei leerer Eingabe: die modifizierte Maschine M̃ soll zunächst die Eingabe löschen, mit Hilfe von Übergängen hq0 , si 7→ hq1 , #i 7→ hq0 , Li , s ∈ Σ , sowie hq0 , #i 7→ hq2 , #i , und bei leerem Band weiter wie M mit um 2 erhöhten Zustandsindizes verfahren. Die Funktion c(M) 7→ c(M̃) ist natürlich Turing-berechenbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 114 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Mε : Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Jürgen Koslowski (TU-BS) Nein u n. akz. Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Jürgen Koslowski (TU-BS) Nein u n. akz. Theoretische Informatik 2 Ja c(Md ) akz. MU ? Nein u n. akz. SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Jürgen Koslowski (TU-BS) Nein u n. akz. Theoretische Informatik 2 Ja c(Md ) akz. MU ? Ja u akz. Nein u n. akz. SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Nein u n. akz. Ja c(Md ) akz. MU ? Ja u akz. Nein u n. akz. Mε hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun und die dritte nur bei garantierter Terminierung aufgerufen wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Nein u n. akz. Ja c(Md ) akz. MU ? Ja u akz. Nein u n. akz. Mε hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun und die dritte nur bei garantierter Terminierung aufgerufen wird. Nach erfolgreichem Syntaxcheck für M bedeutet die Nichtakzeptanz von c(M̃d ) durch Mterm , dass Md bei Eingabe ε nicht hält, und M folglich ε nicht akzeptiert. Im “Ja”-Fall hält Md bei Eingabe ε , es ist aber noch zu überprüfen, ob ε auch akzeptiert wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Nein u n. akz. Ja c(Md ) akz. MU ? Ja u akz. Nein u n. akz. Mε hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun und die dritte nur bei garantierter Terminierung aufgerufen wird. Nach erfolgreichem Syntaxcheck für M bedeutet die Nichtakzeptanz von c(M̃d ) durch Mterm , dass Md bei Eingabe ε nicht hält, und M folglich ε nicht akzeptiert. Im “Ja”-Fall hält Md bei Eingabe ε , es ist aber noch zu überprüfen, ob ε auch akzeptiert wird. Das leistet MU mit Eingabe c(Md ) . Im positiven Fall akzeptiert auch M das leere Wort, d.h., c(M) ∈ Lε . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.3 Weitere unentscheidbare Probleme Beweis (Fortsetzung). Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet: u u = c(M)? Ja akz. Mterm ? c(M̃d ) Mε : Nein u n. akz. Nein u n. akz. Ja c(Md ) akz. MU ? Ja u akz. Nein u n. akz. Mε hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun und die dritte nur bei garantierter Terminierung aufgerufen wird. Nach erfolgreichem Syntaxcheck für M bedeutet die Nichtakzeptanz von c(M̃d ) durch Mterm , dass Md bei Eingabe ε nicht hält, und M folglich ε nicht akzeptiert. Im “Ja”-Fall hält Md bei Eingabe ε , es ist aber noch zu überprüfen, ob ε auch akzeptiert wird. Das leistet MU mit Eingabe c(Md ) . Im positiven Fall akzeptiert auch M das leere Wort, d.h., c(M) ∈ Lε . Die Unentscheidbarkeit von Lε liefert den gesuchten . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 115 / 236 Unentscheidbare Probleme 7.4 Satz von Rice 7.4 Satz von Rice Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von Teilsprachen von dC oder nC und verwandten Sprachen festzustellen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 116 / 236 Unentscheidbare Probleme 7.4 Satz von Rice 7.4 Satz von Rice Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von Teilsprachen von dC oder nC und verwandten Sprachen festzustellen. Definition Für eine Eigenschaft S formaler Sprachen setze LS := { c(M) : M TM und L(M) hat Eigenschaft S } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 116 / 236 Unentscheidbare Probleme 7.4 Satz von Rice 7.4 Satz von Rice Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von Teilsprachen von dC oder nC und verwandten Sprachen festzustellen. Definition Für eine Eigenschaft S formaler Sprachen setze LS := { c(M) : M TM und L(M) hat Eigenschaft S } Wir nennen S trivial, falls keine Sprache der Form L(M) die Eigenschaft S erfüllt, oder jede solche Sprache dies tut. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 116 / 236 Unentscheidbare Probleme 7.4 Satz von Rice 7.4 Satz von Rice Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von Teilsprachen von dC oder nC und verwandten Sprachen festzustellen. Definition Für eine Eigenschaft S formaler Sprachen setze LS := { c(M) : M TM und L(M) hat Eigenschaft S } Wir nennen S trivial, falls keine Sprache der Form L(M) die Eigenschaft S erfüllt, oder jede solche Sprache dies tut. Für triviales S , etwa “L ist (nicht) semientscheidbar”, ist LS entscheidbar. Interessanter ist die Umkehrung: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 116 / 236 Unentscheidbare Probleme 7.4 Satz von Rice 7.4 Satz von Rice Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von Teilsprachen von dC oder nC und verwandten Sprachen festzustellen. Definition Für eine Eigenschaft S formaler Sprachen setze LS := { c(M) : M TM und L(M) hat Eigenschaft S } Wir nennen S trivial, falls keine Sprache der Form L(M) die Eigenschaft S erfüllt, oder jede solche Sprache dies tut. Für triviales S , etwa “L ist (nicht) semientscheidbar”, ist LS entscheidbar. Interessanter ist die Umkehrung: Satz von Rice Für nicht-triviale Eigenschaften S ist die Sprache LS nicht entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 116 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt. Lcode ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch könnte man die Eigenschaft “ c(M) ∈ / L(M) ” betrachten: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt. Lcode ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch könnte man die Eigenschaft “ c(M) ∈ / L(M) ” betrachten: dies ist ebenfalls keine “legale” Eigenschaft, die eine Sprache L ⊆ {0, 1}∗ haben kann oder nicht! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt. Lcode ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch könnte man die Eigenschaft “ c(M) ∈ / L(M) ” betrachten: dies ist ebenfalls keine “legale” Eigenschaft, die eine Sprache L ⊆ {0, 1}∗ haben kann oder nicht! Denkbar wäre die Existenz mehrerer TMs, die L akzeptieren, und von denen manche Codes zu L gehören und andere nicht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Damit erweisen sich z.B. folgende Sprachen als unentscheidbar: { c(M) : M TM und L(M) regulär } { c(M) : M TM und L(M) kontextfrei } { c(M) : M TM und L(M) 6= ∅ } Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren. Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice, da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt. Lcode ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch könnte man die Eigenschaft “ c(M) ∈ / L(M) ” betrachten: dies ist ebenfalls keine “legale” Eigenschaft, die eine Sprache L ⊆ {0, 1}∗ haben kann oder nicht! Denkbar wäre die Existenz mehrerer TMs, die L akzeptieren, und von denen manche Codes zu L gehören und andere nicht. Insofern ist auch hier der Satz von Rice nicht anwendbar! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 117 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Genauer: nachdem M0 akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu schreiben, und schließlich M auszuführen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Genauer: nachdem M0 akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu schreiben, und schließlich M auszuführen. Damit ist die Abbildung hc(M), w i 7→ c(Mw ) Turing-berechenbar (Details?), und es gilt ( L(M0 ) falls w ∈ L(M) w L(M ) = ∅ sonst Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Genauer: nachdem M0 akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu schreiben, und schließlich M auszuführen. Damit ist die Abbildung hc(M), w i 7→ c(Mw ) Turing-berechenbar (Details?), und es gilt ( L(M0 ) falls w ∈ L(M) w L(M ) = ∅ sonst Annahme: LS ist entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Genauer: nachdem M0 akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu schreiben, und schließlich M auszuführen. Damit ist die Abbildung hc(M), w i 7→ c(Mw ) Turing-berechenbar (Details?), und es gilt ( L(M0 ) falls w ∈ L(M) w L(M ) = ∅ sonst Annahme: LS ist entscheidbar. Dann existiert eine TM MS mit L(MS ) = LS , die immer hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis des Satzes von Rice. S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt. Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist danach M mit Eingabe w auszugeführen. Genauer: nachdem M0 akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu schreiben, und schließlich M auszuführen. Damit ist die Abbildung hc(M), w i 7→ c(Mw ) Turing-berechenbar (Details?), und es gilt ( L(M0 ) falls w ∈ L(M) w L(M ) = ∅ sonst Annahme: LS ist entscheidbar. Dann existiert eine TM MS mit L(MS ) = LS , die immer hält. Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 118 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja c(Mw ) Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. MS ? Nein u n. akz. SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 akz. MS ? Ja u akz. Nein u n. akz. SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) Jürgen Koslowski (TU-BS) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S gdw u = c(M)w ∧ L(Mw ) 6= ∅ Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S gdw u = c(M)w ∧ L(Mw ) 6= ∅ gdw u = c(M)w ∧ L(Mw ) = L(M0 ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S gdw u = c(M)w ∧ L(Mw ) 6= ∅ gdw u = c(M)w ∧ L(Mw ) = L(M0 ) gdw u = c(M)w ∧ w ∈ L(M) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S gdw u = c(M)w ∧ L(Mw ) 6= ∅ gdw u = c(M)w ∧ L(Mw ) = L(M0 ) gdw u = c(M)w ∧ w ∈ L(M) gdw u ∈ Lacc Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). u Macc : u = c(M)w ? Ja w c(M ) Nein u n. akz. akz. MS ? Ja u akz. Nein u n. akz. Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun. u ∈ L(Macc ) gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S gdw u = c(M)w ∧ L(Mw ) 6= ∅ gdw u = c(M)w ∧ L(Mw ) = L(M0 ) gdw u = c(M)w ∧ w ∈ L(M) gdw u ∈ Lacc Also L(Macc ) = Lacc , Widerspruch. Damit existiert Macc nicht und Lacc ist nicht entscheidbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 119 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 120 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Weil ∅ die Eigenschaft S̄ nicht hat, die ebenso wie S nichttrivial ist, folgt wie oben, dass LS̄ nicht entscheidbar ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 120 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Weil ∅ die Eigenschaft S̄ nicht hat, die ebenso wie S nichttrivial ist, folgt wie oben, dass LS̄ nicht entscheidbar ist. Wir wissen aber bereits, dass die entscheidbaren Sprachen unter Komplementbildung abgeschlossen sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 120 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Weil ∅ die Eigenschaft S̄ nicht hat, die ebenso wie S nichttrivial ist, folgt wie oben, dass LS̄ nicht entscheidbar ist. Wir wissen aber bereits, dass die entscheidbaren Sprachen unter Komplementbildung abgeschlossen sind. Also gilt das auch für die nicht entscheidbaren Sprachen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 120 / 236 Unentscheidbare Probleme 7.4 Satz von Rice Beweis (Fortsetzung). Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Weil ∅ die Eigenschaft S̄ nicht hat, die ebenso wie S nichttrivial ist, folgt wie oben, dass LS̄ nicht entscheidbar ist. Wir wissen aber bereits, dass die entscheidbaren Sprachen unter Komplementbildung abgeschlossen sind. Also gilt das auch für die nicht entscheidbaren Sprachen. Weiterhin sind die entscheidbaren Sprachen unter endlichen Durchschnitten abgeschlossen. Wegen LS̄ = LS ∩ nC unentscheidbar muß auch LS unentscheidbar sein, folglich also auch LS . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 120 / 236 Komplexität von Algorithmen Kapitel 8 Komplexität von Algorithmen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 121 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0 Übersicht Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll jetzt detaillierter untersucht werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 122 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0 Übersicht Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der Größe der Eingabe beschränkt ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 122 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0 Übersicht Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der Größe der Eingabe beschränkt ist. Die zugehörige Klasse heißt P . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 2-färbbar ist, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 122 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0 Übersicht Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der Größe der Eingabe beschränkt ist. Die zugehörige Klasse heißt P . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 2-färbbar ist, d.h., ob die Knoten so mit zwei Farben gefärbt werden können, daß jede Kante verschiedenfarbige Endpunkte hat. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 122 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0 Übersicht Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der Größe der Eingabe beschränkt ist. Die zugehörige Klasse heißt P . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 2-färbbar ist, d.h., ob die Knoten so mit zwei Farben gefärbt werden können, daß jede Kante verschiedenfarbige Endpunkte hat. Beispiel Eingabe: natürliche Zahl n > 0 Aufgabe: entscheiden, ob n eine Primzahl ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 122 / 236 Komplexität von Algorithmen 8.0 Übersicht Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM überprüft werden kann, gehört das Problem zu NP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 123 / 236 Komplexität von Algorithmen 8.0 Übersicht Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM überprüft werden kann, gehört das Problem zu NP . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 3-färbbar ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 123 / 236 Komplexität von Algorithmen 8.0 Übersicht Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM überprüft werden kann, gehört das Problem zu NP . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 3-färbbar ist. Für eine potentielle 3-Färbung V f 3 = {0, 1, 2} sind für jede Kante die Farben der Endpunkte zu vergleichen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 123 / 236 Komplexität von Algorithmen 8.0 Übersicht Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM überprüft werden kann, gehört das Problem zu NP . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 3-färbbar ist. Für eine potentielle 3-Färbung V f 3 = {0, 1, 2} sind für jede Kante die Farben der Endpunkte zu vergleichen. Beispiel Eingabe: n geographische Orte (“Städte”) und ihre Entfernungen (bzw. Reiskosten), sowie eine Zahl K > 0 Aufgabe: entscheiden, ob es eine Rundreise gibt, die alle Städte genau einmal besucht und deren Länge (oder Preis) durch K beschränkt ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 123 / 236 Komplexität von Algorithmen 8.0 Übersicht Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM überprüft werden kann, gehört das Problem zu NP . Beispiel Eingabe: ungerichteter Graph G = hV , E i Aufgabe: entscheiden, ob G 3-färbbar ist. Für eine potentielle 3-Färbung V f 3 = {0, 1, 2} sind für jede Kante die Farben der Endpunkte zu vergleichen. Beispiel Eingabe: n geographische Orte (“Städte”) und ihre Entfernungen (bzw. Reiskosten), sowie eine Zahl K > 0 Aufgabe: entscheiden, ob es eine Rundreise gibt, die alle Städte genau einmal besucht und deren Länge (oder Preis) durch K beschränkt ist. Für eine Permutation der Orte ist die Länge (der Preis) der zugehörigen Rundreise zu berechnen und mit K zu vergleichen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 123 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? Jürgen Koslowski (TU-BS) 8.0 Übersicht Millennium-Problem Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört, dann folgt P = NP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört, dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, dass ein effizienter Algorithmus für ein NP-vollständiges Problem gefunden werden kann.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört, dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, dass ein effizienter Algorithmus für ein NP-vollständiges Problem gefunden werden kann.) Es sind inzwischen sehr viele NP-vollständige Probleme bekannt: − Garey, Michael R.; Johnson, David S. (1979), Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört, dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, dass ein effizienter Algorithmus für ein NP-vollständiges Problem gefunden werden kann.) Es sind inzwischen sehr viele NP-vollständige Probleme bekannt: − Garey, Michael R.; Johnson, David S. (1979), Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman; − Eine ständig aktualisierte Liste findet sich bei Jürgen Koslowski (TU-BS) Theoretische Informatik 2 Wikipedia SS 2015 124 / 236 Komplexität von Algorithmen Offenes Problem Stimmt P mit NP überein? 8.0 Übersicht Millennium-Problem Die “schwierigsten” Probleme innerhalb der Klasse NP heißen NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört, dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, dass ein effizienter Algorithmus für ein NP-vollständiges Problem gefunden werden kann.) Es sind inzwischen sehr viele NP-vollständige Probleme bekannt: − Garey, Michael R.; Johnson, David S. (1979), Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman; − Eine ständig aktualisierte Liste findet sich bei Wikipedia − Pierluigi Crescenzi, and Viggo Kann (Eds.): A compendium of NP optimization problems Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 124 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N Jürgen Koslowski (TU-BS) R+ in Bezug auf ihr Wachstum vergleichen. Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus p(n) = X pi ni i≤t Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus p(n) = X i≤t Jürgen Koslowski (TU-BS) pi ni = nt X pi /nk−i i≤t Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus ! p(n) = X i≤t Jürgen Koslowski (TU-BS) i pi n = n t X pi /n k−i =n i≤t Theoretische Informatik 2 t pt + X pi /n t−i i<t SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus ! p(n) = X i≤t i pi n = n t X pi /n k−i =n i≤t t pt + X pi /n t−i i<t folgt sofort Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus ! p(n) = X i pi n = n i≤t folgt sofort p(n) ≤ (pt + Jürgen Koslowski (TU-BS) t X pi /n k−i =n i≤t kt)nt t pt + X pi /n t−i i<t für k ≥ max{pi : i < t} . Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.0 Übersicht 8.0.1 Wiederholung: Groß-O-Notation Wir wollen Funktionen N R+ in Bezug auf ihr Wachstum vergleichen. Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer: Definition f ∈ O(g ) gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n) Beispiel Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus ! p(n) = X i≤t i pi n = n t X pi /n k−i =n i≤t t pt + X pi /n t−i i<t kt)nt folgt sofort p(n) ≤ (pt + für k ≥ max{pi : i < t} . Andererseits gilt 2n ∈ / O(nt ) , denn limn→∞ nt /2n = 0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 125 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Definition Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten (Vertices) und einer Relation E ⊆ V × V . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Definition Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten (Vertices) und einer Relation E ⊆ V × V . Paare hu, v i ∈ E werden graphisch als gerichtete Kanten (Edges) oder Pfeile u v dargestellt, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Definition Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten (Vertices) und einer Relation E ⊆ V × V . Paare hu, v i ∈ E werden graphisch als gerichtete Kanten (Edges) oder Pfeile u v dargestellt, während E als binäre Adjazenzmatrix über V aufgefaßt werden kann ( 1 falls hu, v i ∈ E Eu,v = 0 sonst Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Definition Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten (Vertices) und einer Relation E ⊆ V × V . Paare hu, v i ∈ E werden graphisch als gerichtete Kanten (Edges) oder Pfeile u v dargestellt, während E als binäre Adjazenzmatrix über V aufgefaßt werden kann ( 1 falls hu, v i ∈ E Eu,v = 0 sonst G heißt ungerichtet, falls die Relation E symmetrisch ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären, wie Graphen sinnvoll als Eingaben für TMs codiert werden können. Definition Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten (Vertices) und einer Relation E ⊆ V × V . Paare hu, v i ∈ E werden graphisch als gerichtete Kanten (Edges) oder Pfeile u v dargestellt, während E als binäre Adjazenzmatrix über V aufgefaßt werden kann ( 1 falls hu, v i ∈ E Eu,v = 0 sonst G heißt ungerichtet, falls die Relation E symmetrisch ist. Dann werden in der graphischen Darstellung die Hin- und Rückpfeile u v durch eine ungerichtete Kante u v ersetzt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 126 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden Zeile der Adjazenzmatrix: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 127 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden Zeile der Adjazenzmatrix: Beispiel 0 1 2 3 Jürgen Koslowski (TU-BS) 4 Theoretische Informatik 2 SS 2015 127 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden Zeile der Adjazenzmatrix: Beispiel 0 1 2 3 Jürgen Koslowski (TU-BS) 4 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 Theoretische Informatik 2 0 1 0 0 0 SS 2015 127 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden Zeile der Adjazenzmatrix: Beispiel 0 1 2 3 Jürgen Koslowski (TU-BS) 4 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 Theoretische Informatik 2 0 1 0 0 0 0 → (1) 1 → (1, 2, 4) 2→() 3 → (0) 4 → (2, 3) SS 2015 127 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden Zeile der Adjazenzmatrix: Beispiel 0 1 2 3 4 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 → (1) 1 → (1, 2, 4) 2→() 3 → (0) 4 → (2, 3) Während die Größe der Adjazenzmatrix durch |V |2 gegeben ist, ist der Wert für die Darstellung mittels Adjazenzlisten mit |E | + |V | vielleicht präziser, wegen |E | ∈ O(|V |2 ) aber von derselben Größenordnung. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 127 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E Jürgen Koslowski (TU-BS) impliziert ord(u) < ord(v ) Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel • • • • Jürgen Koslowski (TU-BS) • Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel • 0 • • Jürgen Koslowski (TU-BS) • Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 • • Jürgen Koslowski (TU-BS) • Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 • • Jürgen Koslowski (TU-BS) 2 Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 3 • Jürgen Koslowski (TU-BS) 2 Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 3 4 Jürgen Koslowski (TU-BS) 2 Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 3 4 2 Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Definition Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft hu, v i ∈ E impliziert ord(u) < ord(v ) Beispiel 1 0 3 4 2 Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit. Allgemein kann ein gerichteter Graph genau dann topologisch sortiert werden, wenn er keine Zyklen hat (Test für die Existenz von Zyklen). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 128 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: {(0) Initialisierung} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Korrektheit: klar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Korrektheit: klar. Laufzeit: (unter Verwendung von Adjazenzmatrizen) Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Korrektheit: klar. Laufzeit: (unter Verwendung von Adjazenzmatrizen) Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A . Schleife 5 wird m2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Korrektheit: klar. Laufzeit: (unter Verwendung von Adjazenzmatrizen) Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A . Schleife 5 wird m2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft; in der Rest-Matrix über W ist eine 0-Spalte zu finden, in Zeit K . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 { i : die Zahl, die ord zuweisen soll} W := V { W : die Menge der noch nicht bearbeiteten Knoten} {(1) Rekursionsschritt} while ein Knoten x ∈ W ohne Vorgänger in W existiert do ord(x) := i i := i + 1 W := W − {x} end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung} Korrektheit: klar. Laufzeit: (unter Verwendung von Adjazenzmatrizen) Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A . Schleife 5 wird m2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft; in der Rest-Matrix über W ist eine 0-Spalte zu finden, in Zeit K . n n X X T (n) = 2A + (Km2 + 3A) = 2A + K m2 + 3An ∈ O(n3 ) m=1 Jürgen Koslowski (TU-BS) m=1 Theoretische Informatik 2 SS 2015 129 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } for alle Knoten w mit (v , w ) ∈ E do In[w ] := In[w ] − 1 {Laufzeit A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } for alle Knoten w mit (v , w ) ∈ E do In[w ] := In[w ] − 1 {Laufzeit A } if In[w ] = 0 then U := U ∪ {w } end if Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } for alle Knoten w mit (v , w ) ∈ E do In[w ] := In[w ] − 1 {Laufzeit A } if In[w ] = 0 then U := U ∪ {w } end if {Laufzeit 2A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } for alle Knoten w mit (v , w ) ∈ E do In[w ] := In[w ] − 1 {Laufzeit A } if In[w ] = 0 then U := U ∪ {w } end if {Laufzeit 2A } end for {Laufzeit 3A · k(v ) } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Verbesserter Algorithmus für topologisches Sortieren) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: {(0) Initialisierung} i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} for alle Knoten v in V do In[v ] := 0 {Laufzeit A , In[v ] : Vorgängeranzahl von v } end for {Laufzeit A · n } for alle Knoten u in V do for alle Knoten v mit einer Kante (u, v ) in E do In[v ] := In[v ] + 1 {Laufzeit A } end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v } end for {Laufzeit A · k bei Adjazenzlisten} U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 } for alle Knoten v in V do if In[v ] = 0 then U := U ∪ {v } end if {Laufzeit 2A } end for {Laufzeit 2A · n } {(1) Rekursionsschritt} while U einen Knoten v enthält do U := U − {v } ; ord(v ) := i ; i := i + 1 {Laufzeit 3A } for alle Knoten w mit (v , w ) ∈ E do In[w ] := In[w ] − 1 {Laufzeit A } if In[w ] = 0 then U := U ∪ {w } end if {Laufzeit 2A } end for {Laufzeit 3A · k(v ) } end while {Laufzeit 3A · (n + k) , Zyklus falls i < n , sonst topologische Sortierung} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 {A} {A·n} {A·k } {A} { 2A · n } { 3A · (n + k) } SS 2015 130 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Ein ähnliches Argument liefert für die FOR-Schleife in Zeile 20 innerhalb der WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von Adjazenzmatrizen stünde hier 3A · n2 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Ein ähnliches Argument liefert für die FOR-Schleife in Zeile 20 innerhalb der WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von Adjazenzmatrizen stünde hier 3A · n2 . Damit wäre bei Verwendung von Adjazenzmatrizen die Laufzeit gegeben durch T (n) = 4A · (n + n2 ) + 2A · (n + 1) ∈ O(n2 ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Ein ähnliches Argument liefert für die FOR-Schleife in Zeile 20 innerhalb der WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von Adjazenzmatrizen stünde hier 3A · n2 . Damit wäre bei Verwendung von Adjazenzmatrizen die Laufzeit gegeben durch T (n) = 4A · (n + n2 ) + 2A · (n + 1) ∈ O(n2 ) . Bei der Bestimmung der Effizienz kommt es also darauf an, wie man die Größe der Eingabe definiert: Hinsichtlich der Knotenzahl |V | läuft der Algorithmus mit Adjazenzmatrizen in quadratischer Zeit, verglichen mit kubischer Zeit des naiven Algorithmus. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) . Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Ein ähnliches Argument liefert für die FOR-Schleife in Zeile 20 innerhalb der WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von Adjazenzmatrizen stünde hier 3A · n2 . Damit wäre bei Verwendung von Adjazenzmatrizen die Laufzeit gegeben durch T (n) = 4A · (n + n2 ) + 2A · (n + 1) ∈ O(n2 ) . Bei der Bestimmung der Effizienz kommt es also darauf an, wie man die Größe der Eingabe definiert: Hinsichtlich der Knotenzahl |V | läuft der Algorithmus mit Adjazenzmatrizen in quadratischer Zeit, verglichen mit kubischer Zeit des naiven Algorithmus. Hinsichtlich der Summe |V | + |E | läuft der obige Algorithmus in linearer Zeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 131 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v u x w y Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v u Adjazenzlisten: u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , x w y Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v u x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: u → (v ) , Knoten i In[i] u 0 1 v 2 w 2 x 0 y v → (w , x) , w → ( ) , x → (w ) , y → (x) , ∈ U? In[i] ∈ U? In[i] ∈ U? Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v u x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: u → (v ) , Knoten i In[i] u 0 1 v 2 w 2 x 0 y v → (w , x) , w → ( ) , x → (w ) , y → (x) , ∈ U? In[i] ∈ U? In[i] ∈ U? yes Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v 0 x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 2 2 0 Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel v 0 x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 2 0 Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 x w y Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 yes Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 x w 2 Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 0 yes Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 x w 2 Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , x → (w ) , y → (x) , In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 yes 0 yes Theoretische Informatik 2 SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 3 w 2 Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 yes Theoretische Informatik 2 x → (w ) , y → (x) , In[i] ∈ U? 0 0 yes SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 3 w 2 Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 yes Theoretische Informatik 2 x → (w ) , y → (x) , In[i] ∈ U? 0 0 yes yes SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren. Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern von v in früheren Schritten kleinere Werte zugewiesen. Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt. Beispiel 1 0 3 4 2 Jürgen Koslowski (TU-BS) Adjazenzlisten: Knoten i u v w x y u → (v ) , v → (w , x) , w → ( ) , In[i] ∈ U? In[i] ∈ U? 0 yes 1 0 yes 2 1 2 1 0 yes Theoretische Informatik 2 x → (w ) , y → (x) , In[i] ∈ U? 0 0 yes yes SS 2015 132 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 133 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu. Satz Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen ungerader Länge besitzt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 133 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu. Satz Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen ungerader Länge besitzt. Beweis. Zyklen ungerader Länge sind offensichtlich nicht 2-färbbar, dürfen somit nicht als Untergraphen auftreten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 133 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu. Satz Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen ungerader Länge besitzt. Beweis. Zyklen ungerader Länge sind offensichtlich nicht 2-färbbar, dürfen somit nicht als Untergraphen auftreten. Gibt es keine Zyklen ungerade Länge, so färben wir pro Komponente einen Knoten v und alle Knoten in gerader Entfernung von v rot, und alle übrigen Knoten blau. Nach Voraussetzung haben alle Verbindungen zwischen je zwei gleichfarbigen Knoten nur gerade Längen, während alle Verbindungen zwischen Knoten unterschiedlicher Farbe von ungerader Länge sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 133 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu. Satz Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen ungerader Länge besitzt. Beweis. Zyklen ungerader Länge sind offensichtlich nicht 2-färbbar, dürfen somit nicht als Untergraphen auftreten. Gibt es keine Zyklen ungerade Länge, so färben wir pro Komponente einen Knoten v und alle Knoten in gerader Entfernung von v rot, und alle übrigen Knoten blau. Nach Voraussetzung haben alle Verbindungen zwischen je zwei gleichfarbigen Knoten nur gerade Längen, während alle Verbindungen zwischen Knoten unterschiedlicher Farbe von ungerader Länge sind. Idee für Implementieung: Schichtweises Vorgehen: färbe gewähltes v rot, alle Nachbarn blau, die ungefärbten Nachbarn dieser Menge rot usw. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 133 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {(1) Rekursionsschritt} Jürgen Koslowski (TU-BS) {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {(1) Rekursionsschritt} while ∃v ∈ V do Jürgen Koslowski (TU-BS) {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; Jürgen Koslowski (TU-BS) {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } {Laufzeit A } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } {Laufzeit A } end while end while Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } { O(n + k) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } {Laufzeit A } end while end while {(2) Ausgabe} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } { O(n + k) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } {Laufzeit A } end while end while {(2) Ausgabe} Überprüfen, ob BLAU oder ROT eine Kante enthalten Jürgen Koslowski (TU-BS) Theoretische Informatik 2 { O(1) } { O(n + k) } { O(n + k) } SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 2-Färbung) Eingabe: ungerichteter Graph G = hV , E i Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: {(0) Initialisierung} ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} {(1) Rekursionsschritt} while ∃v ∈ V do V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A } while ∃w ∈ F do for alle Knoten u ∈ V mit {u, w } ∈ E do if w ∈ ROT then BLAU := BLAU + {u} else ROT := ROT + {u} end if {Laufzeit 2A } F := F + {u} ; V := V − {u} {Laufzeit 2A } end for F := F − {w } {Laufzeit A } end while end while {(2) Ausgabe} Überprüfen, ob BLAU oder ROT eine Kante enthalten { O(1) } { O(n + k) } { O(n + k) } Die Laufzeit ist linear in |V | + |E | , da jeder Knoten und jede Kante einmal “angefasst” werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 134 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F a b, c f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F a.d.e b, c f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 d ∈F SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c d ∈F a.d.e b, c, f f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 d ∈F − b, e, f a.d.e b, c, f SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c d ∈F − b, e, f a.d.e b, c, f b∈F a.d.e b, c, f f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 d ∈F − b, e, f a.d.e b, c, f b∈F − e, f a.d.e b, c, f SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c d ∈F − b, e, f a.d.e b, c, f b∈F − e, f a.d.e b, c, f e ∈F a.d.e b, c, f f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 d ∈F − b, e, f a.d.e b, c, f b∈F − e, f a.d.e b, c, f e ∈F − f a.d.e b, c, f SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a c e b d V F ROT BLAU Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c d ∈F − b, e, f a.d.e b, c, f b∈F − e, f a.d.e b, c, f e ∈F − f a.d.e b, c, f f ∈F a.d.e b, c, f f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor. Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden (Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader Länge, Widerspruch. Beispiel a b c d e f V F ROT BLAU Jürgen Koslowski (TU-BS) Knoten a...f − − − a∈V b...f a a − a∈F d, e, f b, c a b, c c ∈F f b, d, e a.d.e b, c Theoretische Informatik 2 d ∈F − b, e, f a.d.e b, c, f b∈F − e, f a.d.e b, c, f e ∈F − f a.d.e b, c, f SS 2015 f ∈F − − a.d.e b, c, f 135 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3n ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3n ) . Andererseits kann man nichtdeterministisch eine potentielle Färbung raten und diese deterministisch überprüfen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3n ) . Andererseits kann man nichtdeterministisch eine potentielle Färbung raten und diese deterministisch überprüfen. Beispiel (Algorithmus für gerichteten Weg) Eingabe: Gerichteter Graph G = hV , E i , Knoten v , w ∈ V Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3n ) . Andererseits kann man nichtdeterministisch eine potentielle Färbung raten und diese deterministisch überprüfen. Beispiel (Algorithmus für gerichteten Weg) Eingabe: Gerichteter Graph G = hV , E i , Knoten v , w ∈ V Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3n ) . Andererseits kann man nichtdeterministisch eine potentielle Färbung raten und diese deterministisch überprüfen. Beispiel (Algorithmus für gerichteten Weg) Eingabe: Gerichteter Graph G = hV , E i , Knoten v , w ∈ V Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert Idee: iterativ die von v aus erreichbaren Knoten bestimmen und in einer Hilfs-Menge M sammeln; wenn w am Ende zu M gehört, existiert ein gerichteter Weg von v nach w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 136 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} M := {v } { M : die von v erreichbaren Knoten} {(1) Rekursionsschritt} while eine Kante hx, y i mit x ∈ M und y ∈ / M existiert do M := M + {y } E := E − {hx, y i} end while {(2) Ausgabe} JA, falls w ∈ M , sonst NEIN Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 137 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} M := {v } { M : die von v erreichbaren Knoten} {(1) Rekursionsschritt} while eine Kante hx, y i mit x ∈ M und y ∈ / M existiert do M := M + {y } E := E − {hx, y i} end while {(2) Ausgabe} JA, falls w ∈ M , sonst NEIN Korrektheit: Klar! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 137 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} M := {v } { M : die von v erreichbaren Knoten} {(1) Rekursionsschritt} while eine Kante hx, y i mit x ∈ M und y ∈ / M existiert do M := M + {y } E := E − {hx, y i} end while {(2) Ausgabe} JA, falls w ∈ M , sonst NEIN Korrektheit: Klar! Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 137 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} M := {v } { M : die von v erreichbaren Knoten} {(1) Rekursionsschritt} while eine Kante hx, y i mit x ∈ M und y ∈ / M existiert do M := M + {y } E := E − {hx, y i} end while {(2) Ausgabe} JA, falls w ∈ M , sonst NEIN Korrektheit: Klar! Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Bei Verwendung von Adjazenzlisten werden maximal n -mal alle k Kanten getestet, was in einer Laufzeit von O(n · k) resultiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 137 / 236 Komplexität von Algorithmen 8.1.0 Beispiele effizienter Algorithmen (für Graphen) Beispiel (Fortsetzung) 1: 2: 3: 4: 5: 6: 7: 8: 9: {(0) Initialisierung} M := {v } { M : die von v erreichbaren Knoten} {(1) Rekursionsschritt} while eine Kante hx, y i mit x ∈ M und y ∈ / M existiert do M := M + {y } E := E − {hx, y i} end while {(2) Ausgabe} JA, falls w ∈ M , sonst NEIN Korrektheit: Klar! Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Bei Verwendung von Adjazenzlisten werden maximal n -mal alle k Kanten getestet, was in einer Laufzeit von O(n · k) resultiert. Im Falle von Adjazenzmatrizen ist stattdessen eine (n × n)-Matrix maximal n -mal nach Einsen zu durchsuchen, also ergibt sich O(n3 ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 137 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert mit der Länge übereinstimmt). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert mit der Länge übereinstimmt). Graphen werden mittels Adjazenzmatrizen oder -listen codiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert mit der Länge übereinstimmt). Graphen werden mittels Adjazenzmatrizen oder -listen codiert. Teilmengen n -elementiger Mengen werden als binäre n -Tupel codiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert mit der Länge übereinstimmt). Graphen werden mittels Adjazenzmatrizen oder -listen codiert. Teilmengen n -elementiger Mengen werden als binäre n -Tupel codiert. Besteht die Eingabe aus mehreren Teilen, ist darauf zu achten, dass diese Teile geeignet voneinander getrennt werden, vergl. die Codierung binärer TMs auf Folie 560. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen 8.1.1 Weitere Vorüberlegungen Wir betrachten zunächst 1-Band TMs wie auf Folie 37.Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa: Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert mit der Länge übereinstimmt). Graphen werden mittels Adjazenzmatrizen oder -listen codiert. Teilmengen n -elementiger Mengen werden als binäre n -Tupel codiert. Besteht die Eingabe aus mehreren Teilen, ist darauf zu achten, dass diese Teile geeignet voneinander getrennt werden, vergl. die Codierung binärer TMs auf Folie 560. Ein wesentliches Problem der Aussagenlogik bestand darin, die Erfüllbarkeit von Formeln ϕ(x0 , . . . , xn−1 ) in den Variablen xi , i < n , zu überprüfen. Besonders nützlich waren dabei Formeln in einer speziellen Normalform. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 138 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; − jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; − jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist; − jedes Literal Lij entweder eine Variable oder Negation einer solchen ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; − jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist; − jedes Literal Lij entweder eine Variable oder Negation einer solchen ist. Ist die Anzahl der Literale pro Klausel durch m ∈ N beschränkt, sprechen man von m -KNF. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; − jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist; − jedes Literal Lij entweder eine Variable oder Negation einer solchen ist. Ist die Anzahl der Literale pro Klausel durch m ∈ N beschränkt, sprechen man von m -KNF. Jede aussagenlogische Formel kann in eine äquivalente Formel in KNF umgewandelt werden, etwa unter Verwendung der Distributivgesetze und der de Morgan’schen Regeln. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen Zur Erinnerung: Definition Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF) vor, wenn − ϕ die Konjunktion von Klauseln Ki , i < n , ist; − jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist; − jedes Literal Lij entweder eine Variable oder Negation einer solchen ist. Ist die Anzahl der Literale pro Klausel durch m ∈ N beschränkt, sprechen man von m -KNF. Jede aussagenlogische Formel kann in eine äquivalente Formel in KNF umgewandelt werden, etwa unter Verwendung der Distributivgesetze und der de Morgan’schen Regeln. Ein Beispiel in 2-KNF ist etwa ϕ = (¬x ∨ y ) ∧ (¬x ∨ z) ∧ (x ∨ ¬z) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 139 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen In Analogie zur m -Färbbarkeit von Graphen stellt sich im Fall logischer Formeln die Frage der m -Erfüllbarkeit: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 140 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen In Analogie zur m -Färbbarkeit von Graphen stellt sich im Fall logischer Formeln die Frage der m -Erfüllbarkeit: Beispiel Das E-Problem m -Sat hat als Eingabe eine Formel ϕ in m -KNF. Zu entscheiden ist, ob diese Formel erfüllbar ist, in dem Sinne, dass eine Belegung der auftretenden Variablen mit 0 (bzw. false ) und 1 (bzw. true ) existiert, so dass ϕ den Wert 1 ( true ) erhält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 140 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen In Analogie zur m -Färbbarkeit von Graphen stellt sich im Fall logischer Formeln die Frage der m -Erfüllbarkeit: Beispiel Das E-Problem m -Sat hat als Eingabe eine Formel ϕ in m -KNF. Zu entscheiden ist, ob diese Formel erfüllbar ist, in dem Sinne, dass eine Belegung der auftretenden Variablen mit 0 (bzw. false ) und 1 (bzw. true ) existiert, so dass ϕ den Wert 1 ( true ) erhält. In Abschnitt 8.3 werden wir mittels Reduktion feststellen, dass 2-Sat zu P gehört, während die NP-Vollständigkeit von 3-Sat in Abschnitt 8.4 nachgewiesen wird. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 140 / 236 Komplexität von Algorithmen 8.1.1 Weitere Vorüberlegungen In Analogie zur m -Färbbarkeit von Graphen stellt sich im Fall logischer Formeln die Frage der m -Erfüllbarkeit: Beispiel Das E-Problem m -Sat hat als Eingabe eine Formel ϕ in m -KNF. Zu entscheiden ist, ob diese Formel erfüllbar ist, in dem Sinne, dass eine Belegung der auftretenden Variablen mit 0 (bzw. false ) und 1 (bzw. true ) existiert, so dass ϕ den Wert 1 ( true ) erhält. In Abschnitt 8.3 werden wir mittels Reduktion feststellen, dass 2-Sat zu P gehört, während die NP-Vollständigkeit von 3-Sat in Abschnitt 8.4 nachgewiesen wird. Das unbeschränkte Erfüllbarkeitsproblem Sat ist natürlich ebenfalls NP-vollständig (Cooke’scher Satz). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 140 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein, d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein, d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell. Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein, d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell. Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, etwa TMs mit mehreren Bändern. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein, d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell. Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, etwa TMs mit mehreren Bändern. Definition Eine Turing-berechenbare Funktion N t N wird als Zeitkomplexität einer nTM M bezeichnet, wenn M für jede Eingabe w ∈ Σn immer nach höchstens t(n) Schritten hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP 8.2 Die Komplexitätsklassen P und NP Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst werden können. Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein, d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell. Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, etwa TMs mit mehreren Bändern. Definition Eine Turing-berechenbare Funktion N t N wird als Zeitkomplexität einer nTM M bezeichnet, wenn M für jede Eingabe w ∈ Σn immer nach höchstens t(n) Schritten hält. D. h., die Tiefe des Berechnungsbaums von w ist durch t(|w |) beschränkt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 141 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen. Dabei sind |w | und t(|w |) vorher zu bestimmen, was O(|w | + T (|w |)) Schritte braucht, wobei T die Zeitkomplexität einer dTM ist, die t berechnet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen. Dabei sind |w | und t(|w |) vorher zu bestimmen, was O(|w | + T (|w |)) Schritte braucht, wobei T die Zeitkomplexität einer dTM ist, die t berechnet. Die Zeitkomplexität der modifizierten Maschine liegt dann in O(n + T (n) + t(n)) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen. Dabei sind |w | und t(|w |) vorher zu bestimmen, was O(|w | + T (|w |)) Schritte braucht, wobei T die Zeitkomplexität einer dTM ist, die t berechnet. Die Zeitkomplexität der modifizierten Maschine liegt dann in O(n + T (n) + t(n)) . Dies stimmt nur mit O(t(n)) überein, falls {n, T (n)} ⊆ O(t(n)) gilt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Bemerkung Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste) akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein muß. Dies folgt sofort aus der obigen Definition. Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen. Dabei sind |w | und t(|w |) vorher zu bestimmen, was O(|w | + T (|w |)) Schritte braucht, wobei T die Zeitkomplexität einer dTM ist, die t berechnet. Die Zeitkomplexität der modifizierten Maschine liegt dann in O(n + T (n) + t(n)) . Dies stimmt nur mit O(t(n)) überein, falls {n, T (n)} ⊆ O(t(n)) gilt. Damit sind beide Definitionen der Zeitkomplexität nicht äquivalent, aber sofern es sich bei t und T um Polynome handelt, bleibt die Zeitkomplexität polynomial, was für unsere Zwecke ausreicht. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 142 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare Zeit O(n) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare Zeit O(n) . Beispiel Eine dTM für die Sprache L = { w ∈ {a, b}∗ : w = sp(w ) } aller Palindrome über Σ = {a, b} könnte wie folgt operieren: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare Zeit O(n) . Beispiel Eine dTM für die Sprache L = { w ∈ {a, b}∗ : w = sp(w ) } aller Palindrome über Σ = {a, b} könnte wie folgt operieren: Zeichen am rechten Rand löschen und im Zustand speichern; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare Zeit O(n) . Beispiel Eine dTM für die Sprache L = { w ∈ {a, b}∗ : w = sp(w ) } aller Palindrome über Σ = {a, b} könnte wie folgt operieren: Zeichen am rechten Rand löschen und im Zustand speichern; linken Rand suchen, und dortiges Zeichen mit dem gespeicherten Wert vergleichen; im Erfolgsfall linkes Randzeichen löschen und mit dem nächsten Zeichen von links symmetrisch analog verfahren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare Zeit O(n) . Beispiel Eine dTM für die Sprache L = { w ∈ {a, b}∗ : w = sp(w ) } aller Palindrome über Σ = {a, b} könnte wie folgt operieren: Zeichen am rechten Rand löschen und im Zustand speichern; linken Rand suchen, und dortiges Zeichen mit dem gespeicherten Wert vergleichen; im Erfolgsfall linkes Randzeichen löschen und mit dem nächsten Zeichen von links symmetrisch analog verfahren. Bei gleichzeitigem Schreiben und Bewegen erfordern die dn/2e Durchläufe n + 1 , n − 1 , . . . 1 Schritte, was sich durch dn/2e(dn/2e + 3)/2 ∈ O(n2 ) abschätzen läßt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 143 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Anmerkungen: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 144 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Anmerkungen: Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine Beschleunigung um den Faktor k erreichen, da sich die Anzahl der Durchläufe entsprechend verringert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 144 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Anmerkungen: Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine Beschleunigung um den Faktor k erreichen, da sich die Anzahl der Durchläufe entsprechend verringert. Bei Verwendung einer 2-Band TM kann die Eingabe einmal kopiert und die Kopie direkt in umgekehrter Richtung mit dem Original verglichen werden, wodurch das Speichern des am Rand gelöschten Symbols und die jeweilige Suche nach dem anderen Rand entfällt. Damit läßt sich eine Laufzeit der Größenordnung O(n) realisieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 144 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Anmerkungen: Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine Beschleunigung um den Faktor k erreichen, da sich die Anzahl der Durchläufe entsprechend verringert. Bei Verwendung einer 2-Band TM kann die Eingabe einmal kopiert und die Kopie direkt in umgekehrter Richtung mit dem Original verglichen werden, wodurch das Speichern des am Rand gelöschten Symbols und die jeweilige Suche nach dem anderen Rand entfällt. Damit läßt sich eine Laufzeit der Größenordnung O(n) realisieren. In Abschnitt 8.4 werden wir zeigen, dass folgende Definition der Klassen P und NP unter solchen Modifikationen des Maschinenmodells robust ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 144 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Anmerkungen: Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine Beschleunigung um den Faktor k erreichen, da sich die Anzahl der Durchläufe entsprechend verringert. Bei Verwendung einer 2-Band TM kann die Eingabe einmal kopiert und die Kopie direkt in umgekehrter Richtung mit dem Original verglichen werden, wodurch das Speichern des am Rand gelöschten Symbols und die jeweilige Suche nach dem anderen Rand entfällt. Damit läßt sich eine Laufzeit der Größenordnung O(n) realisieren. In Abschnitt 8.4 werden wir zeigen, dass folgende Definition der Klassen P und NP unter solchen Modifikationen des Maschinenmodells robust ist. Definition P ( NP ) ist die Klasse der entscheidbaren formalen Sprachen L , die von einer dTM (nTM) mit polynomialer Zeitkomplexität akzeptiert werden können, d.h., es existiert eine d/nTM M mit L = L(M) , und ein Polynom p so dass jede Berechnung von w nach höchstens p(|w |) Schritten hält. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 144 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren: Definition Für L ⊆ Σ∗ heißt Lcheck ⊆ Γ∗ mit Σ ⊆ Γ Zertifikatssprache, falls Lcheck ∈ P , eine entsprechende dTM heißt Verifizierer; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren: Definition Für L ⊆ Σ∗ heißt Lcheck ⊆ Γ∗ mit Σ ⊆ Γ Zertifikatssprache, falls Lcheck ∈ P , eine entsprechende dTM heißt Verifizierer; es existiert ein Polynom q so dass für jedes w ∈ Σ∗ gilt Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren: Definition Für L ⊆ Σ∗ heißt Lcheck ⊆ Γ∗ mit Σ ⊆ Γ Zertifikatssprache, falls Lcheck ∈ P , eine entsprechende dTM heißt Verifizierer; es existiert ein Polynom q so dass für jedes w ∈ Σ∗ gilt w ∈L gdw wz ∈ Lcheck Jürgen Koslowski (TU-BS) für ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz P ⊆ NP Beweis. Klar, da jede dTM auch eine nTM ist. Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren: Definition Für L ⊆ Σ∗ heißt Lcheck ⊆ Γ∗ mit Σ ⊆ Γ Zertifikatssprache, falls Lcheck ∈ P , eine entsprechende dTM heißt Verifizierer; es existiert ein Polynom q so dass für jedes w ∈ Σ∗ gilt w ∈L gdw wz ∈ Lcheck für ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) Ein solches z heißt Zertifikat für w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 145 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte; Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte; auf B2 wird Mcheck mit Eingabe wz simuliert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte; auf B2 wird Mcheck mit Eingabe wz simuliert. M hält und akzeptiert genau dann, wenn die Simulation von Mcheck dies tut und hat Zeitkomplexität in O(p(q(n))) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte; auf B2 wird Mcheck mit Eingabe wz simuliert. M hält und akzeptiert genau dann, wenn die Simulation von Mcheck dies tut und hat Zeitkomplexität in O(p(q(n))) . Umgekehrt sei M ein Entscheider für L mit Zeitkomplexität t . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Satz NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen. Beweis Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit Längenkomplexität q , liefert einen Entscheider M für L wie folgt: B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf auf B3 gespeichert, was O(q(|w |)) Schritte erfordert; auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |) erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte; auf B2 wird Mcheck mit Eingabe wz simuliert. M hält und akzeptiert genau dann, wenn die Simulation von Mcheck dies tut und hat Zeitkomplexität in O(p(q(n))) . Umgekehrt sei M ein Entscheider für L mit Zeitkomplexität t . Als Zertifikate für w ∈ L verwenden wir die Wegbeschreibungen der akzeptierenden Berechnungen von w im M-Berechnungsbaum, genauer: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 146 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z Wegbeschreibung einer akzeptierenden Berechnung für w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z Wegbeschreibung einer akzeptierenden Berechnung für w . Die Maschine Mcheck simuliert bei Eingabe wz den Ablauf der Maschine M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist somit deterministisch. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z Wegbeschreibung einer akzeptierenden Berechnung für w . Die Maschine Mcheck simuliert bei Eingabe wz den Ablauf der Maschine M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist somit deterministisch. Das erfordert |z| ≤ t(|w |) Simulationsschritte von Mcheck . Deren Länge ist aber durch eine Konstante beschränkt . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z Wegbeschreibung einer akzeptierenden Berechnung für w . Die Maschine Mcheck simuliert bei Eingabe wz den Ablauf der Maschine M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist somit deterministisch. Das erfordert |z| ≤ t(|w |) Simulationsschritte von Mcheck . Deren Länge ist aber durch eine Konstante beschränkt . Das obige maschinenbezogene Zertifikat wird in der Praxis meist sehr unhandlich sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beweis (Fortsetzung) Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in {0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z Wegbeschreibung einer akzeptierenden Berechnung für w . Die Maschine Mcheck simuliert bei Eingabe wz den Ablauf der Maschine M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist somit deterministisch. Das erfordert |z| ≤ t(|w |) Simulationsschritte von Mcheck . Deren Länge ist aber durch eine Konstante beschränkt . Das obige maschinenbezogene Zertifikat wird in der Praxis meist sehr unhandlich sein. Dort verwendet man meistens problembezogene Zertifikate. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 147 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B . wz ∈ Lcheck Jürgen Koslowski (TU-BS) gdw ∀e ∈ E . e 6⊆ R ∧ e 6⊆ G ∧ e 6⊆ B Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B . wz ∈ Lcheck gdw ∀e ∈ E . e 6⊆ R ∧ e 6⊆ G ∧ e 6⊆ B Teilmengen von V lassen sich als binäre n -Tupel codieren, während Adjazenzmatrizen die Größe n2 haben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B . wz ∈ Lcheck gdw ∀e ∈ E . e 6⊆ R ∧ e 6⊆ G ∧ e 6⊆ B Teilmengen von V lassen sich als binäre n -Tupel codieren, während Adjazenzmatrizen die Größe n2 haben. Lcheck ∈ P : zu überprüfen ist, ob die Eingabe aus n2 + 3n Bits besteht, und dann, ob die Teilmengen R, G , B ⊆ V , paarweise disjunkt sind, V ausschöpfen, und keine Kanten {u, v } ∈ E als Teilmenge enthalten. Dies kann durch bitweise Vergleiche geschehen, also in polynomialer Zeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit) Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B . wz ∈ Lcheck gdw ∀e ∈ E . e 6⊆ R ∧ e 6⊆ G ∧ e 6⊆ B Teilmengen von V lassen sich als binäre n -Tupel codieren, während Adjazenzmatrizen die Größe n2 haben. Lcheck ∈ P : zu überprüfen ist, ob die Eingabe aus n2 + 3n Bits besteht, und dann, ob die Teilmengen R, G , B ⊆ V , paarweise disjunkt sind, V ausschöpfen, und keine Kanten {u, v } ∈ E als Teilmenge enthalten. Dies kann durch bitweise Vergleiche geschehen, also in polynomialer Zeit. Damit gilt 3-Färbbarkeit ∈ NP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 148 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit p̄(n) < 2n für alle n ≥ n0 , und Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit p̄(n) < 2n für alle n ≥ n0 , und |c(M̄)| ≥ n0 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit p̄(n) < 2n für alle n ≥ n0 , und |c(M̄)| ≥ n0 (ggf. Zustände zu M̄ hinzufügen, ändert p̄ nicht) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit p̄(n) < 2n für alle n ≥ n0 , und |c(M̄)| ≥ n0 (ggf. Zustände zu M̄ hinzufügen, ändert p̄ nicht) Falls c(M̄) ∈ Lexp , wird c(M̄) von M̄ in höchstens p̄(|c(M̄)|) < 2|c(M̄)| Schritten akzeptiert, d.h., c(M̄) ∈ Lexp , . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.2 Die Komplexitätsklassen P und NP Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der entscheidbaren Probleme übereinstimmt: Beispiel Folgende entscheidbare(!) Sprache gehört nicht zu P : Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten } P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit p̄(n) < 2n für alle n ≥ n0 , und |c(M̄)| ≥ n0 (ggf. Zustände zu M̄ hinzufügen, ändert p̄ nicht) Falls c(M̄) ∈ Lexp , wird c(M̄) von M̄ in höchstens p̄(|c(M̄)|) < 2|c(M̄)| Schritten akzeptiert, d.h., c(M̄) ∈ Lexp , . Falls c(M̄) ∈ Lexp , wird c(M̄) von M̄ in höchstens 2|c(M̄)| Schritten akzeptiert, also c(M̄) ∈ L(M̄) = Lexp , . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 149 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen 8.3 Berechnungsprobleme und Reduzierbarkeit Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 150 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen 8.3 Berechnungsprobleme und Reduzierbarkeit Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Um verschiedene E-Probleme miteinander vergleichen, genauer, sie aufeinander reduzieren, zu können, müssen wir auch die Zeitkomplexität von B-Problemen betrachten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 150 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen 8.3 Berechnungsprobleme und Reduzierbarkeit Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Um verschiedene E-Probleme miteinander vergleichen, genauer, sie aufeinander reduzieren, zu können, müssen wir auch die Zeitkomplexität von B-Problemen betrachten. Beispiel Unser Algorithmus zur 2-Färbung von Graphen (falls eine solche existiert) bildet den Code eines Graphen auf den Code einer 2-Färbung ab, bzw. auf die codierte Nachricht, dass keine solche Färbung existiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 150 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen 8.3 Berechnungsprobleme und Reduzierbarkeit Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Um verschiedene E-Probleme miteinander vergleichen, genauer, sie aufeinander reduzieren, zu können, müssen wir auch die Zeitkomplexität von B-Problemen betrachten. Beispiel Unser Algorithmus zur 2-Färbung von Graphen (falls eine solche existiert) bildet den Code eines Graphen auf den Code einer 2-Färbung ab, bzw. auf die codierte Nachricht, dass keine solche Färbung existiert. Definition FP ist die Klasse aller Funktionen Σ∗ f Γ∗ , für die eine dTM M und ein Polynom p existieren, so dass f von M berechnet wird und die Berechnung von f (w ) ∈ Γ∗ höchstens p(|w |) Schritte benötigt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 150 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege miteinander verbundener Knoten (=”starke Komponenten”) berechnen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege miteinander verbundener Knoten (=”starke Komponenten”) berechnen 1: 2: {Initialisierung} i := 0 { i : der Komponentenzähler} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege miteinander verbundener Knoten (=”starke Komponenten”) berechnen 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: {Initialisierung} i := 0 { i : der Komponentenzähler} {Rekursionsschritt} while V 6= ∅ do wähle v ∈ V ; V := V − {v } ; Ki := {v } { Ki : die neu zu startende Komponente} for alle Knoten w ∈ V do if gerWeg(v , w ) und gerWeg(w , v ) then Ki := Ki + {w } ; V := V − {w } end if end for i := i + 1 end while Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege miteinander verbundener Knoten (=”starke Komponenten”) berechnen 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: {Initialisierung} i := 0 { i : der Komponentenzähler} {Rekursionsschritt} while V 6= ∅ do wähle v ∈ V ; V := V − {v } ; Ki := {v } { Ki : die neu zu startende Komponente} for alle Knoten w ∈ V do if gerWeg(v , w ) und gerWeg(w , v ) then Ki := Ki + {w } ; V := V − {w } end if end for i := i + 1 end while Im Wesentlichen wird der Algorithmus für gerichteten Weg mit Laufzeit O(n + k) in der maximal n -mal zu durchlaufenden FOR-Schleife zweimal aufgerufen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel (Starke Komponenten) Eingabe: gerichteter Graph G = hV , E i Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege miteinander verbundener Knoten (=”starke Komponenten”) berechnen 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: {Initialisierung} i := 0 { i : der Komponentenzähler} {Rekursionsschritt} while V 6= ∅ do wähle v ∈ V ; V := V − {v } ; Ki := {v } { Ki : die neu zu startende Komponente} for alle Knoten w ∈ V do if gerWeg(v , w ) und gerWeg(w , v ) then Ki := Ki + {w } ; V := V − {w } end if end for i := i + 1 end while Im Wesentlichen wird der Algorithmus für gerichteten Weg mit Laufzeit O(n + k) in der maximal n -mal zu durchlaufenden FOR-Schleife zweimal aufgerufen. Da die WHILE-Schleife auch maximal n -mal durchlaufen wird, ergibt sich mit Adjazenzlisten eine Laufzeit von O(n2 (n + k)) , und mit Adjazenzmatrizen von O(n4 ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 151 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b a c hat die starken Komponenten e d f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten e d f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten {d,e} e d f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten {d,e} e d {f} f Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten {d,e} e d {f} f Die starken Komponenten von G bilden die Knoten eines Graphen Ḡ : Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten {d,e} e d {f} f Die starken Komponenten von G bilden die Knoten eines Graphen Ḡ : dabei ist hK , K 0 i genau dann eine Kante von Ḡ , wenn eine G -Kante von einem K -Knoten zu einem K 0 -Knoten existiert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.3 Die Klasse FP von Berechnungsproblemen Beispiel b {a,b,c} a c hat die starken Komponenten {d,e} e d {f} f Die starken Komponenten von G bilden die Knoten eines Graphen Ḡ : dabei ist hK , K 0 i genau dann eine Kante von Ḡ , wenn eine G -Kante von einem K -Knoten zu einem K 0 -Knoten existiert. Konstruktionsbedingt ist Ḡ azyklisch, also topologisch sortierbar. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 152 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4 FP-Reduzierbarkeit Definition Eine Sprache L ⊆ Σ∗ ist auf eine Sprache K ⊆ Γ∗ FP-reduzierbar, Notation L / K , wenn eine Funktion Σ∗ f Γ∗ in FP existiert mit w ∈L Jürgen Koslowski (TU-BS) gdw f (w ) ∈ K Theoretische Informatik 2 SS 2015 153 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4 FP-Reduzierbarkeit Definition Eine Sprache L ⊆ Σ∗ ist auf eine Sprache K ⊆ Γ∗ FP-reduzierbar, Notation L / K , wenn eine Funktion Σ∗ f Γ∗ in FP existiert mit w ∈L gdw f (w ) ∈ K Die Einschränkung auf Funktionen aus FP ist wichtig, denn andernfalls wären alle entscheidbaren Sprachen wechselseitig aufeinander reduzierbar: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 153 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4 FP-Reduzierbarkeit Definition Eine Sprache L ⊆ Σ∗ ist auf eine Sprache K ⊆ Γ∗ FP-reduzierbar, Notation L / K , wenn eine Funktion Σ∗ f Γ∗ in FP existiert mit w ∈L gdw f (w ) ∈ K Die Einschränkung auf Funktionen aus FP ist wichtig, denn andernfalls wären alle entscheidbaren Sprachen wechselseitig aufeinander reduzierbar: für echte Teilmengen L ⊆ Σ∗ und K ⊆ Γ∗ wähle u ∈ K und ū ∈ Γ∗ − K und definiere Σ∗ f Γ∗ durch ( u falls w ∈ L f (w ) = ū falls w ∈ /L Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 153 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4 FP-Reduzierbarkeit Definition Eine Sprache L ⊆ Σ∗ ist auf eine Sprache K ⊆ Γ∗ FP-reduzierbar, Notation L / K , wenn eine Funktion Σ∗ f Γ∗ in FP existiert mit w ∈L gdw f (w ) ∈ K Die Einschränkung auf Funktionen aus FP ist wichtig, denn andernfalls wären alle entscheidbaren Sprachen wechselseitig aufeinander reduzierbar: für echte Teilmengen L ⊆ Σ∗ und K ⊆ Γ∗ wähle u ∈ K und ū ∈ Γ∗ − K und definiere Σ∗ f Γ∗ durch ( u falls w ∈ L f (w ) = ū falls w ∈ /L Dann gilt w ∈ L gdw f (w ) ∈ K , aber die “Reduktion” benötigt soviel Zeit wie die Entscheidung, ob w ∈ L gilt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 153 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Es ist also keine Ordnungsrelation im strengen Sinne, aber zumindest noch eine Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine Ordnung den /- Äquivalenzklassen, d.h., auf den Klassen gleich schwieriger Probleme Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Es ist also keine Ordnungsrelation im strengen Sinne, aber zumindest noch eine Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine Ordnung den /- Äquivalenzklassen, d.h., auf den Klassen gleich schwieriger Probleme (d.h., L / M und M / L ). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Es ist also keine Ordnungsrelation im strengen Sinne, aber zumindest noch eine Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine Ordnung den /- Äquivalenzklassen, d.h., auf den Klassen gleich schwieriger Probleme (d.h., L / M und M / L ). Zur besseren Orientierung erwähnen wir bereits jetzt, dass die oberen /-Schranken der Klasse NP , d.h., die Probleme, die mindestens so schwierig wie jedes NP-Problem sind, NP-hart heißen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L höchstens so schwierig zu lösen ist wie K . Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen enthält, folgen Reflexivität und Transitivität der Relation / . Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Es ist also keine Ordnungsrelation im strengen Sinne, aber zumindest noch eine Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine Ordnung den /- Äquivalenzklassen, d.h., auf den Klassen gleich schwieriger Probleme (d.h., L / M und M / L ). Zur besseren Orientierung erwähnen wir bereits jetzt, dass die oberen /-Schranken der Klasse NP , d.h., die Probleme, die mindestens so schwierig wie jedes NP-Problem sind, NP-hart heißen. Schließlich bezeichnet man die NP-harten Probleme innerhalb der Klasse NP , also die schwierigsten NP-Probleme, als NP-vollständig. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 154 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden, dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden, dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind. Wir zeigen Kanten-2-Färbbarkeit / 2-Färbbarkeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden, dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind. Wir zeigen Kanten-2-Färbbarkeit / 2-Färbbarkeit. Idee: Die Kanten von G als Knoten eines sog. Kantengraphen GK interpretieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden, dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind. Wir zeigen Kanten-2-Färbbarkeit / 2-Färbbarkeit. Idee: Die Kanten von G als Knoten eines sog. Kantengraphen GK interpretieren. Formal: GK := hVK , EK i mit VK := E und {e, e 0 } ∈ EK Jürgen Koslowski (TU-BS) gdw Theoretische Informatik 2 e ∩ e 0 6= ∅ ∧ e 6= e 0 SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Das E-Problem Kanten-2-Färbbarkeit) Eingabe: ungerichtete Graphen zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden, dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind. Wir zeigen Kanten-2-Färbbarkeit / 2-Färbbarkeit. Idee: Die Kanten von G als Knoten eines sog. Kantengraphen GK interpretieren. Formal: GK := hVK , EK i mit VK := E und {e, e 0 } ∈ EK e ∩ e 0 6= ∅ ∧ e 6= e 0 gdw Etwa {0, 2} 2 G : Jürgen Koslowski (TU-BS) 0 1 4 3 7→ GK : Theoretische Informatik 2 {1, 2} {0, 1} {1, 3} SS 2015 155 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G ⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅ Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G ⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅ ⇔ wenn {u, v }, {x, y } einfarbig, dann ist dies keine GK -Kante Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G ⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅ ⇔ wenn {u, v }, {x, y } einfarbig, dann ist dies keine GK -Kante ⇔ R + B = E ist eine 2-Färbung von GK Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G ⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅ ⇔ wenn {u, v }, {x, y } einfarbig, dann ist dies keine GK -Kante ⇔ R + B = E ist eine 2-Färbung von GK Laufzeit: Die Adjazenzmatrizen A und AK der ungerichteten Graphen G bzw. GK sind symmetrisch, also durch die Einträge im oberen Dreieck bestimmt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Korrektheit der Reduktion G 7→ GK : wir zeigen G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist Für eine Zerlegung der Kantenmenge E = R + B gilt. R + B = E ist eine Kanten-2-Färbung von G ⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅ ⇔ wenn {u, v }, {x, y } einfarbig, dann ist dies keine GK -Kante ⇔ R + B = E ist eine 2-Färbung von GK Laufzeit: Die Adjazenzmatrizen A und AK der ungerichteten Graphen G bzw. GK sind symmetrisch, also durch die Einträge im oberen Dreieck bestimmt. Mit n := |V | ergibt sich in Laufzeit O(n2 ) X |VK | = |E | = Ai,j i<j<n Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 156 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Wir verwenden die Positionen hi, ji mit i < j < n der Einsen in A als Knoten des Kantengraphen; diese seien lexikographisch geordnet. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 157 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Wir verwenden die Positionen hi, ji mit i < j < n der Einsen in A als Knoten des Kantengraphen; diese seien lexikographisch geordnet. Die Kanten von GK entsprechen Paaren von Einsen in derselben Zeile oder Spalte im oberen Dreieck von A . Genauer, für i < j < l < n gilt: Ai,j = Ai,l = 1 impliziert hi, ji hi, li in GK Ai,l = Aj,l = 1 impliziert hi, li hj, li in GK Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 157 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel (Fortsetzung) Wir verwenden die Positionen hi, ji mit i < j < n der Einsen in A als Knoten des Kantengraphen; diese seien lexikographisch geordnet. Die Kanten von GK entsprechen Paaren von Einsen in derselben Zeile oder Spalte im oberen Dreieck von A . Genauer, für i < j < l < n gilt: Ai,j = Ai,l = 1 impliziert hi, ji hi, li in GK Ai,l = Aj,l = 1 impliziert hi, li hj, li in GK In jedem Fall sind drei geschachtelte Schleifen über i < n , über i < j < n und über i < j < l < n zu durchlaufen, was eine Laufzeit von O(n3 ) liefert. Allerdings erfordert die Initialisierung der Matrix AK mit Nullen bereits O(n4 ) Schritte. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 157 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Beweis. Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf berechnet wird, und eine d/nTM MK mit L(MK ) = K . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Beweis. Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf berechnet wird, und eine d/nTM MK mit L(MK ) = K . Diese Maschinen mögen polynomiale Zeitkomplexität pf bzw. pK haben. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Beweis. Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf berechnet wird, und eine d/nTM MK mit L(MK ) = K . Diese Maschinen mögen polynomiale Zeitkomplexität pf bzw. pK haben. Die Hintereinanderschaltung ML von Mf und MK erfüllt w ∈ L(ML ) Jürgen Koslowski (TU-BS) gdw f (w ) ∈ L(MK ) = K Theoretische Informatik 2 gdw w ∈L SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Beweis. Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf berechnet wird, und eine d/nTM MK mit L(MK ) = K . Diese Maschinen mögen polynomiale Zeitkomplexität pf bzw. pK haben. Die Hintereinanderschaltung ML von Mf und MK erfüllt w ∈ L(ML ) gdw f (w ) ∈ L(MK ) = K gdw w ∈L Da das Schreiben der Ausgabe f (w ) mindestens |f (w )| Schritte erfordert, ist die Laufzeit von ML auf Eingabe w durch pK (pf (|w |)) beschränkt, also hat ML ebenfalls polynomiale Zeitkomplexität. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Satz Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein unterer Abschnitt der Klasse E aller E-Probleme. Beweis. Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf berechnet wird, und eine d/nTM MK mit L(MK ) = K . Diese Maschinen mögen polynomiale Zeitkomplexität pf bzw. pK haben. Die Hintereinanderschaltung ML von Mf und MK erfüllt w ∈ L(ML ) gdw f (w ) ∈ L(MK ) = K gdw w ∈L Da das Schreiben der Ausgabe f (w ) mindestens |f (w )| Schritte erfordert, ist die Laufzeit von ML auf Eingabe w durch pK (pf (|w |)) beschränkt, also hat ML ebenfalls polynomiale Zeitkomplexität. Die Zugehörigkeit zu P bzw. NP kann somit auch durch Reduktion auf andere P bzw. NP-Probleme nachgewiesen werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 158 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : x ¬x y ¬y SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) ∧ (¬x ∨ z) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : x ¬x y ¬y SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) ∧ (¬x ∨ z) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : x ¬x y ¬y z ¬z SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : x ¬x y ¬y z ¬z SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit 8.4.1 2-Sat ∈ P Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört. In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von ¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also ¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je zwei gerichteten Kanten gemäß der obigen Implikationen, etwa ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) Jürgen Koslowski (TU-BS) 7→ Theoretische Informatik 2 G (ϕ) : x ¬x y ¬y z ¬z SS 2015 159 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. ( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true belegt sein. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. ( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true belegt sein. Damit hat G (ϕ) keine Kante von einem mit true zu einem mit false belegten Literal. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. ( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true belegt sein. Damit hat G (ϕ) keine Kante von einem mit true zu einem mit false belegten Literal. Da je zwei Knoten einer starken Komponente auf einem gerichteten Kreis liegen, können somit die verschieden belegten Literale x und ¬x nicht in derselben starken Komponente auftreten. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. ( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true belegt sein. Damit hat G (ϕ) keine Kante von einem mit true zu einem mit false belegten Literal. Da je zwei Knoten einer starken Komponente auf einem gerichteten Kreis liegen, können somit die verschieden belegten Literale x und ¬x nicht in derselben starken Komponente auftreten. ( ⇐ ) Wähle eine topologische Sortierung ord des Graphen der starken Komponenten [α] von G (ϕ) , α Literal, und setze x = true Jürgen Koslowski (TU-BS) gdw ord[¬x] < ord[x] Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und ¬x in verschiedenen starken Komponenten von G (ϕ) liegen. ( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true belegt sein. Damit hat G (ϕ) keine Kante von einem mit true zu einem mit false belegten Literal. Da je zwei Knoten einer starken Komponente auf einem gerichteten Kreis liegen, können somit die verschieden belegten Literale x und ¬x nicht in derselben starken Komponente auftreten. ( ⇐ ) Wähle eine topologische Sortierung ord des Graphen der starken Komponenten [α] von G (ϕ) , α Literal, und setze x = true gdw ord[¬x] < ord[x] Ist (α ∨ β) eine Klausel mit α = false , dann gilt wegen der Kanten ¬β ⇒ α und ¬α ⇒ β in G (ϕ) ord[¬β] ≤ ord[α] < ord[¬α] ≤ ord[β] und folglich β = true . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 160 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in verschiedenen starken Komponenten von G liegen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in verschiedenen starken Komponenten von G liegen. Offenbar gehört SinvKomp zu P , da die Berechnung der starken Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die Überprüfung, ob a und f (a) zu derselben starken Komponente gehören. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in verschiedenen starken Komponenten von G liegen. Offenbar gehört SinvKomp zu P , da die Berechnung der starken Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die Überprüfung, ob a und f (a) zu derselben starken Komponente gehören. Es bleibt nachzuweisen, dass unsere Reduktion ϕ 7→ G (ϕ) zu FP gehört. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in verschiedenen starken Komponenten von G liegen. Offenbar gehört SinvKomp zu P , da die Berechnung der starken Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die Überprüfung, ob a und f (a) zu derselben starken Komponente gehören. Es bleibt nachzuweisen, dass unsere Reduktion ϕ 7→ G (ϕ) zu FP gehört. Als Maß m für die Größe der Eingabe ϕ bietet sich die Länge der Formel an, ohne die Klammern bei Infix-Notation. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Auf welches Problem habe wir 2-Sat eigentlich reduziert? Definition SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und eine selbstinverse Abbildung V f V ohne Fixpunkte. Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in verschiedenen starken Komponenten von G liegen. Offenbar gehört SinvKomp zu P , da die Berechnung der starken Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die Überprüfung, ob a und f (a) zu derselben starken Komponente gehören. Es bleibt nachzuweisen, dass unsere Reduktion ϕ 7→ G (ϕ) zu FP gehört. Als Maß m für die Größe der Eingabe ϕ bietet sich die Länge der Formel an, ohne die Klammern bei Infix-Notation. Die Ermittlung der Variablen in ϕ und somit der Knoten von G (ϕ) erfordert lineare Zeit, ebenso wie das Eintragen der zwei Kanten pro Klausel. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 161 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel Die obige Formel ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) ist erfüllbar, da sich die positiven und negativen Varianten der Variablen x , y und z auf die beiden starken Komponenten des zugehörigen Graphen G (ϕ) verteilen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 162 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel Die obige Formel ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) ist erfüllbar, da sich die positiven und negativen Varianten der Variablen x , y und z auf die beiden starken Komponenten des zugehörigen Graphen G (ϕ) verteilen. Die Belegung x = z = true und y = false und ihre Negation liefern beide den Wert true für ϕ . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 162 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel Die obige Formel ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) ist erfüllbar, da sich die positiven und negativen Varianten der Variablen x , y und z auf die beiden starken Komponenten des zugehörigen Graphen G (ϕ) verteilen. Die Belegung x = z = true und y = false und ihre Negation liefern beide den Wert true für ϕ . Andererseits ist ψ = (y ∨ x) ∧ (¬y ∨ z) ∧ (¬z ∨ x) ∧ (¬x ∨ ¬t) ∧ (t ∨ ¬x) nicht erfüllbar, da G (ψ) nur eine starke Komponente besitzt: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 162 / 236 Komplexität von Algorithmen 8.4 FP - Reduzierbarkeit Beispiel Die obige Formel ϕ = (x ∨ y ) �