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). 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, 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 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. 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 . 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 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 . 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 . 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. 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. 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. 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. 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): 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 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 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 ). 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. 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: 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 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. 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. 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. 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. 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) . 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. 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: 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. 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. 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: 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 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. 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. 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. 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 Σ∗ 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. 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 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: 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 β 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 ) 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 . 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 ) . 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. 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. 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. 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. 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 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. 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 (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. 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: 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. 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. 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. ... 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. 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. 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: 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} . 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. 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)) 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: 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! = 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. 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 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. 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. 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 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) 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. 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 . 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 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. 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). 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. 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} 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. 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. 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. 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 87); 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. (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) 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: 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, 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. 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 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. 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: 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. 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: 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: . 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 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 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) } 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. 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. 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 } 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. 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. 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. 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 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: 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. 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: 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. 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: 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. 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: { 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. 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 ? 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̄ . 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. 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 . 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? 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 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. 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: 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 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 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: 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) . 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. 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 v1 u 0 x3 w 4 y2 Jürgen Koslowski (TU-BS) →(v (v)), , v → (w , x) , ww → →(()), , xx → →(w (w)), , yy → →(x) (x), , Adjazenzlisten: uu → Knoten i In[i] ∈ U? In[i] ∈ U? In[i] ∈ U? u 0 yes 1 0 yes v 2 1 0 yes w 2 1 0 yes x 0 yes y Theoretische Informatik 2 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. 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 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 . 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 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 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 15.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 101. 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 − ϕ 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: 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. 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ß. 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. 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: 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 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. 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 |) . 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 | . 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: 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. 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 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,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 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. 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 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 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. 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. 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. 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. ( ⇒ ) 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? 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. 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) x y z t ¬x ¬y ¬z ¬t Theoretische Informatik 2 SS 2015 162 / 236 Komplexität von Algorithmen 8.5 Robustheit der Klassen P und NP 8.5 Robustheit der Klassen P und NP Wir müssen nun untersuchen, of die Definition der Klassen P und NP gegenüber Änderungen des TM-Models robust ist. Ähnche Überlegungen könnten für andere Algorithmus-Modelle angestellt werden. Schließlich interessieren uns Abschlußeigenschaften der Klasse P . Zusätzlicher Speicher: Zustandsmengen der Form Q × A erlauben es, nur eine Komponente für die Steuerung der Maschine zu verwenden, während man in der zweiten andere Informationen zwischenspeichern und transportieren kann, statt dafür das Band zu verwenden. Das war aber von Beginn an erlaubt und erweitert das Modell nicht. Erweitertes Bandalphabet: Optionale Bandsymbole, die über Σ + {#} hinausgehen, können die Arbeit einer TM erheblich vereinfachen, insbesondere Verschiebe-Opertationen zwecks Erhaltung eines zusammenhängenden Bandinhalts können entfallen. Der Taschenspielertrick der Hausaufgabe, das Alpahbet Σ zu vergrößern und einen Präprozessor zu verwenden, erzeugt aber nur linearen Overhead. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 163 / 236 Komplexität von Algorithmen 8.5 Robustheit der Klassen P und NP Mehrspur-TM: Hier dient Bk als Bandalphabet, mit Blanksymbol h# : i < ki . Zu Beginn steht die Eingabe auf der ersten Spur. Die Identifikation des Alphabets Σ mit Σ × {h# : i < n − 1i} erlaubt uns nun, Mehrspur-Maschinen als Spezialfall von Maschinen mit erweitertem Bandalphabet aufzufassen, s.o. Mehrband-TM: Hierbei existieren k unabhängige Schreib-Leseköpfe. ObdA nehmen wir an, dass M pro Schritt immer nur auf einem Band arbeitet. Andernfalls verlängert die Sequentialisierung von M die Zeitkomplexität nur um einen Faktor k . Die Simulation kann durch eine TM mit 2k Spuren erfolgen: Spur 2i enthält den Inhalt von Band i , während Spur 2i + 1 nur die Kopfposition auf Band i verzeichnet. Satz Jede k -Band dTM M mit mindestens linearer Zeitkomplexität t kann durch eine Einband-TM M0 mit Zeitkomplexität t 2 simuliert werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 164 / 236 Komplexität von Algorithmen 8.5 Robustheit der Klassen P und NP Beweis. In den ungeraden Spuren wird zunächst unter dem letzten Eingabesymbol in Spur 0 eine Kopfmarkierung gesetzt, was konstante Zeit erfordert. Eine M-Aktion auf Band i kann durch M0 auf den Spuren 2i und 2i + 1 simuliert werden, in derselben Zeit, die M benötigt. Um eine nachfolgende Aktion auf Band j zu simulieren, ist der Kopf von M0 zur Kopf-Markierung auf Spur 2j + 1 zu verschieben. Dazu sind bei Eingabe w maximal t(|w |) Schritte nötig. Insgesamt wird die Schrittzahl also höchstens quadriert. Somit dürfen wir auch bei Komplexitätsargumenten auf die bequemeren Mehrband-Maschinen zurückgreifen. Für andere Algorithmenmodelle (RAM, reale Rechner, etc.) kann man den Zeitbedarf bei der Simulierung durch (Mehrband-)TMs ermitteln. Dieser stellt sich als polynomial heraus, daher bleibt P invariant. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 165 / 236 Komplexität von Algorithmen 8.5 Robustheit der Klassen P und NP Satz P ist abgeschlossen unter binären Vereinigungen und Durchschnitten, Komplementbildung, Konkatenation und Kleene-Stern. Beweis. Für binäre Vereinigungen und Durchschnitte, sowie für Kleene-Stern vergl. 0 HA. Für die Komplementbildung verwende die Konstruktion M 7→ M̄ aus dem Beweis der Charakterisierung entscheidbarer Sprachen durch ihre Semi-Entscheidbarkeit und die des Komplements (Folie 35). Konkatenation: Die dTM Mi möge immer halten und Li ⊆ Σ∗i in polynomialer Zeit pi akzeptieren, i < 2 . Die Maschine M zerlegt die Eingabe w ∈ (Σ0 ∪ Σ1 )∗ systematisch in zwei Teile w0 und w1 mit w0 w1 = w und untersucht diese auf Zugehörigkeit zu Li , i < 2 . Sobald beide Tests positiv ausfallen, wird w akzeptiert. Die Anzahl der Zerlegungen ist durch |w | + 1 beschränkt, die Laufzeit der Tests auf max{p0 (|w |), p1 (|w |)} . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 166 / 236 Komplexität von Algorithmen 8.6 Einige Probleme aus NP 8.6 Einige Probleme aus NP Beispiel ( Hamiltonscher Kreis ∈ NP ) Das E-Problem Hamiltonscher Kreis hat als Eingabe einen ungerichteten Graphen G = hV , E i mit n := |V | Knoten. Zu entscheiden ist, ob G einen Hamiltonschen Kreis besitzt, d.h., eine Permutation π der Knoten, so dass sie in dieser Reihenfolge durch Kanten zu einem Kreis verbunden werden können, formal {π(i), π(i + 1 mod n)} ∈ E für i < |V | Als Zertifikate eignen sich Permutationen von V . Die Überprüfung, ob die entsprechenden Kanten existieren, kann in linearer Zeit erfolgen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 167 / 236 Komplexität von Algorithmen 8.6 Einige Probleme aus NP Beispiel ( TSP ∈ NP ) Das Travelling Salesman Problem in seiner Entscheidungsvariante TSP hat als Eingabe n Städte (geographische Orte) Si , i < n , eine (symmetrische) Matrix d von Entfernungen und eine Schranke K . Zu entscheiden ist, ob eine Rundreise existiert, die alle Städte genau einmal besucht (ein Hamilton’scher Kreis), so dass ihre Länge, die Summe der Entfernungen aufeinanerfolgender Städte, durch K nach oben beschränkt ist. Als potentielle Zertifikate eignen sich wieder Permutationen π von V . In linearer Zeit überprüft man die Gültigkeit von X dπ(i),π(i+1 mod n) ≤ K i<|V | (Die Optimierungsvariante dieses Problems gibt keine Schranke K vor; gesucht ist die bestmögliche Lösung.) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 168 / 236 Komplexität von Algorithmen 8.6 Einige Probleme aus NP Beispiel ( Sat ∈ NP ) Sat hat als Eingabe eine Boole’sche Formel ϕ(x0 , . . . , xn−1 ) in KNF (ohne Beschränkungen in der Länge der Klauseln). Zu entscheiden ist, ob ϕ erfüllbar ist. Als Kandidaten für ein Zertifikat eignen sich Zufallsbelegungen der Variablen x0 . . . xm−1 . Die Berechnung des Wahrheitswerts von ϕ kann wiederum in polynomialer Zeit erfolgen. Beispiel ( Zerlegbarkeit ∈ P , erst seit 2004 bekannt) Primes hat als Eingabe eine natürliche Zahl n . Zu entscheiden ist, ob n eine Primzahl ist. 2004 zeigten Agrawal, Kayal und Saxena Primes ∈ P . Da P unter Komplementbildung abgeschlossen ist, gehört das Problem Zerlegbarkeit ebenfalls zu P , bei dem zu entscheiden ist, ob n zusammengesetzt ist. Eine Lösung liefert aber leider keine Hinweise auf Primfaktoren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 169 / 236 Komplexität von Algorithmen 8.6 Einige Probleme aus NP Wie wir auf Folie 30 gesehen haben, kann jede immer haltende 1-Band nTM M durch eine immer haltende 3-Band dTM M 0 simuliert werden, indem “breadth first” alle M-Berechnungen bis zu einer vorgegebenen Tiefe nach akzeptierenden Haltekonfigurationen durchsucht werden. Corollar Jede nTM mit Zeitkomplexität t(n) kann durch eine dTM mit Zeitkomplexität O(2c·t(n) ) , c ∈ R+ geeignete Konstante, simuliert werden. Speziell ist jede Sprache L ∈ NP durch eine dTM mit Zeitkomplexität 2p(n) , p Polynom, entscheidbar. Beweis P i t(n) ) Für |w | = n ist die Anzahl der Tupel auf B2 durch i<t(n) r ∈ O(r beschränkt. Jedes Tupel führt zu maximal t(n) Simulationsschritten. Der Übergang zu einer 1-Band-Maschine quadriert die Laufzeit nochmals: O(t(n)r t(n) ) ⊆ O(r 2·t(n) ) ⊆ O(r 4·t(n) ) ⊆ O(2c·t(n) ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 wobei r 4 ≤ 2c SS 2015 170 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz 8.7 NP-Vollständigkeit und Cooke’scher Satz Definition Ein E-Problem L heißt NP-hart, falls L obere /-Schranke von NP ist, d.h., für jedes NP-Problem K gilt K / L ; Klassenbezeichnung NPH NP-vollständig, falls L /-größtes Elemente von NP ist, d.h., L ∈ NP ist NP-hart; Bezeichnung NPV . Satz Existiert ein NP-vollständiges Problem L ∈ P , so folgt P = NP . Beweis. Nach Definition läßt sich jedes Problem K ∈ NP auf L reduzieren und folglich in polynomialer Zeit durch eine dTM lösen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 171 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Satz (Cook’scher Satz) Das E-Problem Sat der Erfüllbarkeit einer Boole’schen Formel in KNF ist NP-vollständig. Beweis Die Zugehörigkeit zu NP war bereits oben gezeigt worden. Für jede Sprache {0, 1}∗ ⊇ L ∈ NP bleibt zu zeigen: L / Sat Idee: Ausgehend von einer nTM M mit m Zuständen, die L in polynomialer Zeit p akzeptiert, konstruiert man zu jedem w ∈ Σ∗ eine Boole’sche Formel ϕw in KNF, die eine akzeptierende Berechnung von w durch M beschreibt. Dann ist nachzuweisen: . w ∈ L gdw. ϕw erfüllbar (Korrektheit der Reduktion) . ϕw kann in Zeit O(p(|w |)2 ) aus w konstruiert werden (damit gehört die Reduktion zu FP ). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 172 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Vorbereitung: gegeben ist eine binäre 1-Band nTM M mit polynomialer Zeitkomplexität p und L(M) = L . . Die Zustände sind vom Anfangszustand q0 bis zum Endzustand qm−1 (dieser hat keine Übergänge) durchnummeriert. . B = {s0 , s1 , s2 } mit s0 = # , s1 = 0 , s2 = 1 , s3 = L und s4 = R . . Das Band sei durch Z indexiert, mit 0 an der Position des Kopfes in der Initialkonfiguration mit Eingabe w . Es genügt, Felder im Bereich −p(|w |) bis p(|w |) zu betrachten. . Es gibt d Übergänge hqi(y ) , sj(y ) i 7→ hqi 0 (y ) , sj 0 (y ) i , y < d , mit d i, i 0 n , d j 3 und d j0 5 (Indexfunktionen) Die Formel ϕw soll eine akzeptierende Berechnung von M auf Eingabe w beschreiben. Dabei ist zu maximal p(|w |) Zeitpunkten der Inhalt von 2p(|w |) Bandzellen zu spezifizieren, weiterhin Zustand und Kopfposition der Maschine und, bis auf den letzten Zeitpunkt, der aktuelle Übergang. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 173 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Dafür dienen entsprechende Variable: Name qit krt `tr , nrt , ert , uyt Interpretation: in Schritt t ist M in Zustand qi ließt M Bandzelle r steht #, 0, 1 in Bandzelle r wird Übergang y ausgeführt Anzahl i < m, t < p(|w |) −p(|w |) < r < p(|w |), t < p(|w |) −p(|w |) < r < p(|w |), t < p(|w |) y < d, t < p(|w |) − 1 ϕw wird Konjunktion der Beschreibung folgender vier Teile sein: der Initialkonfiguration; der Akzeptanzbedingung für w ; der Konsistenzbedingungen (KBD’n) für M : zu jedem Zeitpunkt t − − − − ist M in höchstens einem Zustand; steht in jedem Feld genau ein Symbol; steht der Kopf auf genau einer Position; findet höchstens ein Übergang statt. des Übergangseffekts auf Zustand, Kopfposition und Bandinhalt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 174 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Initialkonfiguration: Initialzustand bzw. -kopfposition sind bestimmt durch q00 und k00 , während der Bandinhalt w = s0 . . . sn−1 ∈ {0, 1}∗ mittels geeigneter Variablen nr0 bzw. er0 mit −n < r ≤ 0 spezifiziert wird. Dazu kommt die Angabe, dass die übrigen relevanten Felder leer sind: ^ ^ `0r ∧ `0r −p(n)<r ≤−n 0<r <p(n) Dies benötigt O(p(n)) triviale Klauseln. Z.B. liefert w = 010 die Formel ^ ^ 0 0 q00 ∧ k00 ∧ `0r ∧ n−2 ∧ e−1 ∧ n00 ∧ `0r −p(3)<r ≤−3 Akzeptanzbedingung: 0<r <p(3) _ t qm−1 (1 Klausel) t<p(|w |) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 175 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) KBD Zustände: Für t < p(n) ist M in höchstens einem Zustand: qit ⇒ ¬qjt bzw. ¬qit ∨ ¬qjt für alle i < j < m (m(m − 1)/2 Klauseln) KBD Feldinhalt: Für t < p(n) und −p(n) < r < p(n) gilt (`tr ∨ nrt ∨ ert ) ∧ (¬`tr ∨ ¬nrt ) ∧ (¬nrt ∨ ¬ert ) ∧ (¬ert ∨ ¬`tr ) Diese 4 · p(n)(2p(n) − 1) ∈ O((p(n))2 ) Klauseln besagen, dass jedes relevante Feld genau ein Symbol enthält. KBD Kopfposition: Für t < p(n) drücken 1 + (2p(n) − 1)(p(n) − 1) Klauseln aus, dass der Kopf in genau einer Position steht: ^ _ krt ∧ ¬krt ∨ ¬krt0 −p(n)<r <p(n) Jürgen Koslowski (TU-BS) −p(n)<r <r 0 <p(n) Theoretische Informatik 2 SS 2015 176 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) KBD Übergänge: Für t < p(n) drücken d(d − 1)/2 Klauseln aus, dass höchstens ein Übergang stattfindet: ¬uyt ∨ ¬uzt für y < z < d Beschreibung der Übergangseffekte: Für jeden der d Übergänge hqi(y ) , sj(y ) i 7→ hqi 0 (y ) , sj 0 (y ) i drücken p(n) − 1 Teilformeln(!) die Zustandsänderung für t < p(n) − 1 aus: t+1 t uyt ⇒ qi(y ∧ q ) i 0 (y ) Gemäß der Definition der Implikation liefern die Distributivgesetze nun insgesamt 2 (p(n) − 1) d äquivalente Klauseln: t+1 t t ¬uyt ∨ qi(y ∧ ¬u ∨ q für t < p(n) − 1 und y < d 0 y ) i (y ) Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 177 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Speziell für sj(y ) = 0 und sj 0 (y ) = L , beschreiben weitere 2(p(n) − 1)2 Teilformeln Kopfbewegung und den ursprünglichen Feldinhalt: t uyt ∧ krt ⇒ krt+1 für t < p(n) − 1 , − p(n) + 1 < r < p(n) −1 ∧ nr Nach Definition der Implikation liefern die de Morganschen Regeln und die Distributivgesetze nun 4(p(n) − 1)2 äquivalente Klauseln: t+1 t t t t ¬ uyt ∧ krt ∨ krt+1 −1 ∧ nr ⇔ ¬uY ∨ ¬kr ∨ kr −1 ∧ nr t t t ⇔ ¬uYt ∨ ¬krt ∨ krt+1 −1 ∧ ¬uY ∨ ¬kr ∨ nr Schließlich bleibt wegen sj 0 (y ) = L der Bandinhalt unverändert: uyt ∧ xrt ⇒ xrt+1 bzw. ¬uyt ∨ ¬xrt ∨ xrt+1 (∗) für t < p(n) − 1 , −p(n) + 1 < r < p(n) und x ∈ {`, n, e} , was weitere 6(p(n) − 1)2 Klauseln liefert. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 178 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Falls sj(y ) ∈ {#, 1} bzw. sj 0 (y ) = R kann man analog verfahren, während für Aktionen der Form sj 0 (y ) ∈ {#, 0, 1} insbesondere die Klauseln (∗) für den Bandinhalt zur Zeit t + 1 anzupassen sind (HA). Schließlich bleibt auszudrücken, dass Zustände außer q00 tatsächlich nur aufgrund von ÜbergängenWentstehen. Leider ist es nicht möglich, für t < p(n) − 1 die Klausel y <d uyt zu verwenden (warum?) Stattdessen soll ein Zustand zur Zeit t + 1 nur aufgrund eines Übergangs zur Zeit t angenommen werden können ( k(p(n) − 1) Klauseln): _ _ uyt bzw. ¬qzt+1 ∨ uyt qzt+1 ⇒ i 0 (y )=z i 0 (y )=z Hingegen kann die Änderung der Feldinhalte kann aufgrund der zu (∗) analogen Formeln für sj(y ) ∈ {#, 1} nur jene Ursache haben, braucht also nicht gesondert betrachtet zu werden. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 179 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Beweis (Fortsetzung) Laufzeit: ϕw entsteht durch Konjunktion aller Klauseln. Die resultierende Formel in KNF hat eine Länge, die quadratisch in p(n) , und damit polynomial in n = |w | ist. Korrektheit: Nach Konstruktion existiert eine Variablenbelegung, die ϕw den Wert true zuordnet, wenn M bei Eingabe w eine akzeptierende Berechnung durchführen kann. Umgekehrt ist im Fall der Erfüllbarkeit von ϕw die Akzeptanzbedingung T erfüllt, d.h., es gibt eine Zeit T < p(n) mit qm−1 = true . Sofern T > 0 , existiert mindestens ein Übergang, der den Endzustand qm−1 produziert. Zum Zeitpunkt T − 1 wird aber nur genau ein Zustand quT −1 angenommen und es findet genau ein Übergang uyT −1 statt. Auf diese Weise kann man rückwärts den Zustand q00 erreichen. Die Initialkonfiguration und die Konsistenzbedingungen garantieren dann, dass wirklich eine Berechnung der Maschine M vorliegt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 180 / 236 Komplexität von Algorithmen 8.7 NP - Vollständigkeit und Cooke’scher Satz Satz (Ladner 1975) Falls P 6= NP , dann wird NP nicht von P und NPV ausgeschöpft, d.h., es gibt dann E-Probleme, die weder NP-vollständig sind, noch zu P gehören. Beispiel Ein Kandidat für ein derartiges Problem ist Graph-Isomorphismus: die Eingabe besteht aus zwei Graphen Gi = hVi , Ei i , i < 2 . Zu entscheiden ist, ob es eine Bijektion V0 f V1 gibt mit hu, v i ∈ E0 gdw. hf (u), f (v )i ∈ E1 . Bemerkung Im Gegensatz dazu ist das Problem Subgraph-Isomorphismus NP-vollständig: für eine Eingabe aus zwei Graphen Gi = hVi , Ei i , i < 2 , ist zu entscheiden, ob es eine Injektion V0 f V1 gibt mit hu, v i ∈ E0 gdw. hf (u), f (v )i ∈ E1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 181 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme 8.8 Weitere NP-vollständige Probleme Beispiel ( 3-Sat ist NP-vollständig) 3-Sat gehört aus demselben Grund wie Sat zu NP , vergl. S. 148. Idee für eine Reduktion Sat / 3-Sat : Wir formen eine Klausel ϕ := (α0 ∨ α1 ∨ · · · ∨ αk−1 ) der Länge k > 3 iterativ um zu (α0 ∨ α1 ∨ b0 ) ∧ (¬b0 ∨ α2 ∨ · · · ∨ αk−1 ) (α0 ∨ α1 ∨ b0 ) ∧ (¬b0 ∨ α2 ∨ b1 ) ∧ (¬b1 ∨ α3 ∨ · · · ∨ αk−1 ) ... bis eine Konjunktion von k − 2 Klauseln der Länge 3 erreicht ist. Dafür sind k − 3 neue Variablen nötig, also ist die Laufzeit pro Klausel linear. Korrektheit: Die Existenz eines j < k mit αj = true ist äquivalent zu b0 = true und es existiert 2 ≤ j < k mit αj = true, oder b0 = false und es existiert j < 2 mit αj = true Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 182 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Beispiel ( 3-Färbbarkeit ist NP-vollständig) Auf S. 124 haben 3-Färbbarkeit ∈ NP gezeigt. Um 3-Sat auf 3-Färbbarkeit zu reduzieren, betrachten wir H: • a • x d • b • c Behauptung 0: Sind a , b und c in H rot, dann auch d . Beweis: Wenn b und c rot sind müssen die Farben blau und gelb bei den links danebenliegenden Knoten auftreten, folglich ist x rot. Dasselbe Argument für a und x liefert, dass d rot sein muß. Behauptung 1: Ist einer der Knoten a , b oder c blau, kann auch d blau gefärbt werden. Beweis: Klar, wenn a , b und c blau sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 183 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Beispiel (Fortsetzung) Ist a blau und x rot, können wir die links danebenliegenden Knoten rot bzw. gelb und dann d blau färben. Ist b oder c blau, kann x blau gefärbt werden, und ebenso d , unabhängig von der Farbe von a . Reduktion: Einer Formel ϕ in KNF ordnen wir einen Graphen Gϕ zu, der aus drei Typen von Teilgraphen besteht: Dreiecken G R ¬x x und für jede Variable x in ϕ G B und für jede Klausel (α ∨ β ∨ γ) eine Kopie von H • α • x B • β • γ mit Knoten α , β bzw. γ in den obigen Literal-Dreiecken. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 184 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Beispiel (Fortsetzung) So ist etwa die Klausel (x ∨ ¬y ∨ ¬z) für den folgenden Teilgraphen verantwortlich: ¬z z ¬y y ¬x x G • R • B • • • Jede weitere 3-Klausel liefert eine weitere Kopie des Hilfsgraphen H , die bei B anzuheften ist, und ggf. weitere bei G anzuheftende Dreiecke für neue Variablen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 185 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Beispiel (Fortsetzung) Korrektheit: Ist ϕ erfüllbar, so färben wir die Knoten R , G und B mit den Farben rot, gelb bzw. blau. Im Dreieck für die Variable x ist dann das wahre Literal blau und das falsche rot zu färben. Wegen der Erfüllbarkeit von ϕ ist in jeder Kopie von H ein Knoten α , β oder γ blau gefärbt, was mit der Färbung von B konsistent ist. Ist Gϕ 3-färbbar, dann seien oBdA die Knoten R , G und B rot, gelb und blau gefärbt. Kein Variablen-Knoten kann dann gelb gefärbt sein, und nach der ersten Behauptung können in keiner Kopie von H die Knoten α , β und γ rot gefärbt sein. Also ist einer dieser Knoten blau, was nach der zweiten Behauptung zur blau-Färbung von B konsistent ist, und damit ist die Klausel wahr. Laufzeit: Die Anzahl der Variablen-Dreiecke und der Kopien von H beträgt jeweils O(|ϕ|) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 186 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Satz k -Färbbarkeit ist NP-vollständig für jedes k > 2 . Beweis. Das Beispiel zeigt die NP-Vollständigkeit von 3-Färbbarkeit. Zwecks Reduktion k -Färbbarkeit / (k + 1)-Färbbarkeit fügen wir einen neuen Knoten zu G hinzu, den wir in linearer Zeit mit allen alten Knoten verbinden. Der neue Graph G 0 ist genau dann (k + 1)-färbbar, wenn G k -färbbar ist. Definition Ein Graph heißt planar, wenn er ohne Kantenüberschneidungen in der Ebene gezeichnet werden kann. Planare k -Färbbarkeit ist trivial für k > 3 Appel, Haken 1976 ; NP-vollständig für k = 3 ; in P für k < 3 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 187 / 236 Komplexität von Algorithmen 8.8 Weitere NP - vollständige Probleme Beispiel (Hamilton’scher Kreis (HC) ist NP-vollständig) Eingabe: ungerichteter Graph G = hV , E i . Zu entscheiden ist, ob ein Rundweg (Kreis) existiert, der alle Knoten genau einmal besucht. Aufgabe 6.5 (zum Selbststudium) zeigt einen expliziten Beweis basierend auf [Christos H. Papadimitriou. Computational Complexity. Addison-Wesley, 1994]. Beispiel (TSP ist NP-vollständig) TSP ∈ NP : vergl. Seite 147. HC / TSP : ordne einem ungerichteten Graphen G = hV , E i die Konstante K := |V | zu und die {1, 2}-wertige Kostenmatrix mit di,j = 1 gdw {i, j} ∈ E Korrektheit: Klar, da ein Hamilton’scher Kreis in einem Graphen mit n Knoten die Länge n haben muß. Die Laufzeit ist im Falle von Adjazenzmatrizen quadratisch in n , da einzig dieJürgen Nullen der(TU-BS) AdjazenzmatrixTheoretische durch Zweien Koslowski Informatik 2 zu ersetzen sind. SS 2015 188 / 236 Komplexität von Algorithmen 8.9 Die Klasse coNP 8.9 Die Klasse coNP Der Abschluß von P unter Komplementbildung sollte “von rechts wegen” bewiesen werden, indem man die Endzustandsmenge einer dTM, die immer hält, durch ihr Komplement ersetzt (wie im Fall regulärer Sprachen). Die technische Konvention eines einzigen Endzustands qF erfordert den Umweg, einen neuen Endzustand qG einzuführen, und Übergänge hp, si 7→ hqG , ai , sofern q 6= qF und keine Übergänge aus hp, si existieren. Die Zeitkomplexität wird davon nicht tangiert. Wendet man dasselbe Verfahren auf eine nTM M an, die immer hält, so braucht die Sprache L(M̄) nicht mit dem Komplement Σ∗ − L übereinzustimmen: sobald für w ∈ L(M) auch eine nicht-akzeptierende Berechnung existiert, gehört w auch zu L(M̄) . Tatsächlich ist die Frage, ob NP mit coNP übereinstimmt, bisher offen. Im negativen Fall würde P 6= NP folgen. Auf jeden Fall gilt aber P ⊆ coNP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 189 / 236 Komplexität von Algorithmen 8.9 Die Klasse coNP Beispiel (Gültigkeit ist coNP-vollständig) Eingabe: Boole’sche Formel ϕ in KNF. Zu entscheiden ist, ob jede Belegung der Variablen ϕ den Wert true zuordnet. Als Alphabet für Boole’sche Formeln diene Σ = {x, 0, 1, ∧, ∨, ¬, (, )} . Die Variablen sollen die Form xw haben, w eine Binärzahl. Somit können wir die Menge der Formeln in KNF als (reguläre!) Sprache Knf über Σ auffassen, die die Menge Gültigkeit der gültigen Formeln enthält. Das Komplement Gültigkeit ist die Vereinigung aus . Σ∗ − Knf , was regulär ist und folglich zu P ⊆ NP gehört; und . Knf − Gültigkeit = { ϕ ∈ Knf : ¬ϕ erfüllbar } ; mit Belegungen der Variablen, die für ϕ den Wert false liefern, als Zertifikaten folgt auch hier die Zugehörigkeit zu NP . Da NP unter binären Vereinigungen abgeschlossen ist, folgt Gültigkeit ∈ NP , und somit Gültigkeit ∈ coNP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 190 / 236 Komplexität von Algorithmen 8.9 Die Klasse coNP Beispiel (Fortsetzung) Der Nachweis der coNP-Vollständigkeit erfordert zu zeigen, dass jedes coNP-Problem auf Gültigkeit FP-reduziert werden kann. Aber aus L ∈ coNP folgt L̄ / Sat , etwa vermöge einer FP-Reduktion g . Für die Selbst-Abbildung w 7→ ¬g (w ) auf Σ∗ gilt zweifellos w ∈ L gdw w∈ / L gdw g (w ) nicht erfüllbar gdw ¬g (w ) gültig Leider ist dies noch keine FP-Reduktion von L auf Gültigkeit , da ¬g (w ) als Negation einer KNF-Formel i.A. nicht in KNF vorliegt; das Hineinziehen der Negation zu den Literalen liefert sogar eine Formel in DNF, deren äquivalente Umwandlung in KNF zu exponentiellem Längenwachstum führen kann. Mit Hilfe neuer Variablen läßt sich ¬g (w ) aber in eine gleicherfüllbare Formel ψ(w ) in KNF umwandeln, die gegenüber ¬g (w ) nur linear wächst (vergl. HA 5.5(d)). Damit liefert w 7→ ψ(w ) die gewünschte FP-Reduktion L . Gültigkeit . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 191 / 236 Komplexität von Algorithmen 8.9 Die Klasse coNP Der nächste Satz folgt aus der entsprechenden Aussage in NP : Satz Aus L / K ∈ coNP folgt L ∈ coNP , d.h., bzgl. / ist coNP ein unterer Abschnitt der Klasse E aller E-Probleme. Offenes Problem Stimmt der Durchschnitt von NP und coNP mit P überein? Satz NP = coNP genau dann wenn es ein coNP-vollständiges Problem in NP gibt. Beweis. ( ⇐ ) Aus coNPV ∩ NP 6= ∅ folgt coNP ⊆ NP , da NP ein unterer Abschnitt ist. Also gilt auch NP = cocoNP ⊆ coNP . ( ⇒ ) Das coNP-vollständige Problem Gültigkeit gehört zu NP . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 192 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen 8.10 Komplexität von Optimierungsproblemen Das TSP in seiner E-Variante wirkt etwas künstlich: die Schranke K hat intrinsisch wenig mit dem Problem zu tun. Gesucht ist eigentlich die “beste” Reiseroute. Ähnlich verhält es sich mit der Färbbarkeit von Graphen: hier ist eigentlich die minimale Farbenzahl von Interesse, mit der ein Graph gefärbt werden kann. An diese kann man sich “herantasten”, indem man die Schranke k im zugehörigen E-Problem sukzessive verringert. Das deutet an, dass es neben den Klassen der Entscheidungs- oder E-Probleme und der Berechnungs- oder B-Probleme eine weitere Klasse interessanter und wichtiger Probleme von praktischer Relevanz gibt: die Optimierungs- oder O-Probleme. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 193 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Die Probleme MaximalesMatching und MaxFlow Definition Ein gerichteter Graph G = hV , E i heißt bipartite, wenn eine Zerlegung V = V0 + V1 existiert, so dass alle Kanten nur von Knoten in V0 zu Knoten in V1 verlaufen, formal E ⊆ V0 × V1 + V1 × V0 . Unter einem Matching versteht man dann eine Menge paarweise disjunkter Kanten, d.h., je zwei Kanten haben keinen gemeinsamen Endpunkt. Bzgl. der Kantenzahl maximale Matchings kann man finden, indem man gegebene Matchings solange mittels sog. “erweiternder Wege”in größere Matchings umwandelt, wie möglich. Dann ist zu beweisen, dass alle derart konstruierbaren Matchings dieselbe Kantenzahl haben. Stattdessen werden wir das Optimierungsproblem MaximalesMatching auf ein allgemeineres Problem reduzieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 194 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Definition Einem Netzwerk ist ein gerichteter Graph G = hV , E i zusammen mit zwei ausgezeichneten Knoten s, t ∈ V (für “Source” und “Target”) ohne ein- bzw. ausgehende Kanten; einer Kapazitätsfunktion V × V gdw chu, v i = 0 genügt. c N, die der Bedingung hu, v i ∈ /E Ein Fluß durch das Netzwerk ist eine Abbildung V × V (F0) f hu, v i ≤ chu, v i für hu, v i ∈ V × V ; f Z mit Kapazitätsbeschränkung (F1) f hu, v i = −f hv , ui für alle u, v ∈ V ; Schiefsymmetrie P (F2) Gleichgewicht u∈V f hu, v i = 0 für alle Knoten v ∈ V − {s, t} . Schließlich ist die Größe des Flusses f gegeben durch P P kf k := hs,v i∈E f hs, v i = hv ,ti∈E f hv , ti Achtung: f ist ein Netto-Fluß: fließen tatsächlich 4L von u nach v und 3L von v nach u , so gilt f (u, v ) = 1 und f (v , u) = −1 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 195 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Ford-Fulkerson Algorithmus (1956), informell Um einem Fluß f in einem Netzwerk auf Maximalität zu prüfen versuchen wir, einen größeren Fluß f 0 zu finden. Dann hat auch der Differenzfluß ∆f = f 0 − f positive Größe. Dieser lebt aber auf einem hinsichtlich f modifizierten Netzwerk: Definition Zu einem Netzwerk hhV , E i, s, t, ci und einem Fluß f ist das abgeleitete Netzwerk N(f ) = hhV , E 0 i, s, t, c 0 i bestimmt durch hu, v i ∈ E 0 gdw c 0 hu, v i := chu, v i − f hu, v i > 0 Achtung: Die Bedingung chu, v i − f hu, v i > 0 kann auch erfüllt sein, wenn hu, v i ∈ / E und somit chu, v i = 0 gilt. Somit können in N(f ) alte Kanten verschwinden und neue hinzukommen. Wegen (F2) impliziert ein positiver Fluß auf N(f ) , dass t von s aus erreichbar sein muß. Anderfalls ist der bisherige Fluß maximal. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 196 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Algorithmus für maximalen Fluß (Initialisierung:) f0 sei der Null-Fluß. (Rekursion:) Falls t von s in N(fn ) erreichbar ist, − wähle einen Pfad P von s nach t in N(fn ) ; − bestimme die minimale Kapazität k entlang der P - Kanten; − Hinzufügen aller P - Kanten mit dem Wert k zu fn liefert fn+1 . Beispiel 12 12 v0 12 19 v1 16 4 N(f3210 ) : 20 8 1 10 s 4 7 9 13 6 2 11 7 v0 t 4 v2 14 7 3 12 v1 12 f3210 : 12 19 7 s 11 7 v3 t 4 v2 11 7 v3 11 7 In N(f3 ) ist t von s aus nicht mehr erreichbar, also ist f3 maximal. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 197 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Die maximale Größe eines Flusses ist natürlich durch das Minimum der Kapazitätssummen der Kanten aus s bzw. nach t beschränkt. Daher terminiert der obige Algorithmus nach endlich vielen Schritten, da der Fluß pro Schritt um mindestens 1 größer wird. (Für R-wertige Kapazitäten und Flüsse gilt dieses Argument nicht mehr!) Da obiges Argument bzgl. des Differenzflusses für jeden Fluß f und jeden Fluß F maximaler Größe anwendbar ist, folgt sofort, dass der Algorithmus unabhängig von der Wahl der Verbindungspfade immer ein globales Maximum liefert, nicht nur ein lokales. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 198 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Beispiel ( MaximalesMatching / MaxFlow ) Einem bipartiten Graph G = hV0 + V1 , E ⊆ V0 × V1 i ordnen wir als Netzwerk N(G ) den Graphen hV0 + V1 + {s, t}, {s} × V0 + E + V1 × {t}i zusammen mit den neuen Knoten s und t und der auf der neuen Kantenmenge konstant 1-wertigen Kapazitätsfunktion zu. Laufzeit: Zwei neue Knoten lassen den Graphen linear wachsen; die Adjazenzmatrix codiert die Kapazitätsfunktion. Korrektheit: Ein Matching M für G läßt sich durch Verbinden der beteiligten Knoten mit s bzw. t zu einem Fluß m auf N(G ) ergänzen; die paarweise Disjunktheit der Kanten des Matchings ist äquivalent zur Gleichgewichtsbedingung des Flusses. Die Anzahl der Kanten in M stimmt mit der Größe des Flusses überein, also bewirkt eine Vergrößerung des Matchings eine Vergrößerung des Flusses und umgekehrt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 199 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Beispiel (Fortsetzung) N(f43210 ) : f43210 : Wir stellen fest: Haben alle Kanten Kapazität c , entsteht das abgeleitete Netzwerk durch Umkehrung aller Kanten im gewählten Pfad von s nach t . Beim Anfügen des neuen Pfades an den bestehenden Fluß heben sich entgegengesetzt gerichtete Kanten auf. Auch die Wahl eines absurd langen Pfades, etwa in N(f1 ) oben, vergrößert das bisherige Matching nur um eine Kante (warum?). Kürzere Pfade haben denselben Effekt und sind daher vorzuziehen. In N(f3 ) ist dagegen kein kürzerer Pfad möglich. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 200 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Formalisierung von Optimierungsproblemen Definition Ein Optimierungsproblem hΣ, E , A, L, ci besteht aus einem Alphabet Σ , codiert Probleminstanzen und Lösungen; Sprachen E , A ⊆ Σ∗ der Probleminstanzen bzw. Lösungen; einer Lösungsrelation L ⊆ E × A , die Probleminstanzen mit zulässigen Lösungen verbindet; einer Kostenfunktion L c N. Eine TM M löst das Mini/Maximierungsproblem hΣ, E , A, L, ci , falls M bei Eingabe von v ∈ E mit Ausgabe w ∈ A hält und gilt . v Lw ; . chv , w i ≤ ≥ chv , w 0 i für alle w 0 ∈ A mit v L w 0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 201 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Da die Kostenfunktion N-wertig ist, hat jede lösbare Instanz eines Minimierungsproblems auch eine minimale Lösung, während bei Maximierungsproblemen keine maximale Lösung zu existieren braucht. Definition PO ist die Klasse der Optimierungsprobleme P = hΣ, E , A, L, ci mit E, A ∈ P ; Es gibt ein Polynom p , so dass aus hv , w i ∈ L folgt |w | ≤ p(|v |) (die Lösungen sind “kurz”); die charakteristische Funktion χL und c gehören zu FP ; P wird von einer dTM mit polynomialer Zeitkomplexität gelöst. Definition Das dem Mini/Maximierungsproblem P = hΣ, E , A, L, ci zugrunde liegende E-Problem P dec hat neben v ∈ E eine Zahl k ∈ N als Eingabe. Zu entscheiden ist, ob w ∈ A existiert mit hv , w i ∈ L und chv , w i ≤ ≥ k. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 202 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Bemerkung P ∈ PO impliziert natürlich P dec ∈ P . Sofern P 6= NP , folgt aus der NP-Vollständigkeit von P dec dann auch P ∈ / PO . Beispiel ( MaxMatching ∈ PO ) Codierung einer Probleminstanz: Knotenzahl n , Adjazenzmatrix A und binäres Partitionierungs-n -Tupel β , bzgl. dessen Bipartizität vorliegt. Codierung von potentiellen Lösungen durch (n × n)-Matrizen M . Syntaxcheck Probleminstanz: A hat nur Einsen in Positionen, deren Koordinaten verschiedene β -Werte haben (der Graph ist bipartite). Syntaxcheck potentielle Lösung: pro Zeile und Spalte tritt höchstens eine Eins auf (das Matching besteht aus disjunkten Kanten). A L M gdw M ≤ A komponentenweise (Teilgraph). c(M) ist die Hälfte der Anzahl der Einsen in M (Symmetrie). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 203 / 236 Komplexität von Algorithmen 8.10 Komplexität von Optimierungsproblemen Beispiel (Fortsetzung) Der Lösungsalgorithmus verwendet Erreichbarkeit ∈ P bzgl. s und t im abgeleiteten Netzwerk; letzteres entsteht durch Umkehrung gewisser Kanten, was in polynomialer Zeit machbar ist. Terminologie Optimierungsproblemen tragen Namen mit Präfix Min oder Max. Beispiel ( MinFärbb ∈ / PO ) Eingabe: ungerichteter Graph; zu bestimmen ist die Minimalzahl an Farben für eine Knotenfärbung. Das zugehörige E-Problem MinFärbbdec umfaßt 3-Färbbarkeit, was bekanntlich NP-vollständig ist. Beispiel ( MinTSP ∈ / PO ) Hier stimmt MinTSPdec mit dem NP-vollständigen E-Problem TSP überein, vergl. S. 144. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 204 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen 8.11 Approximation von Optimierungsproblemen Gegeben: ein Optimierungsproblem P mit P dec NP-vollständig Ziel: optimale Lösung effizient approximieren, mittels einer dTM mit polynomialer Zeitkomplexität Wir unterscheiden verschiedene Ansätze: Heuristik: ein Algorithmus, der erfahrungsgemäß “gute” Lösungen konstruiert, aber ohne harte Schranken für die Approximationsgüte. Approximationsalgorithmus: dieser liefert harte Schranke für die Güte der Approximation. PTAS (polynomial-time approximation scheme): parametrisierter Algorithmus, der beliebig gute Approximationen erlaubt, auf Kosten der Laufzeit. volles PTAS: zusätzlich hängt die Laufzeit polynomial von der Approximationsgüte ab. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 205 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Approximationsalgorithmus für MinKÜ Gegeben: ungerichteter Graph G = hV , E i ; Gesucht: minimale Knotenmenge D ⊆ V , die jede Kante e ∈ E nichtleer schneidet (Knotenüberdeckung). Gemäß einer Übungsaufgabe ist MinKÜdec = KÜ NP-vollständig. D := ∅ ; {bisherige Überdeckung} while der aktuelle Graph eine Kante e hat do 3: D := D ∪ e ; {Überdeckung um Endpunkte von e vergrößern.} 4: G := hV − e, E 0 i ; {diese Knoten und inzidente Kanten aus G entfernen (zwei Zeilen und Spalten der Adjazenzmatrix löschen)} 5: end while 1: 2: Korrektheit: Jede aus E entfernte Kante schneidet D nichtleer, und alle Kanten werden aus E entfernt. Laufzeit: O(|E |) , denn jede Kante wird irgendwann entfernt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 206 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Güte der Approximation Satz Die minimale Größe opt(G ) einer Knotenüberdeckung und die Größe c(G ) der vom Algorithmus gelieferten Lösung erfüllen c(G ) ≤ 2opt(G ) . Beweis. D entsteht durch Vereinigung paarweise disjunkter Kanten. Jede andere Knotenüberdeckung D 0 , speziell eine optimale, muß einen Endpunkt jeder dieser Kanten enthalten, also mindestens |D|/2 viele Knoten. Definition Für ε > 0 heißt ein deterministischer Algorithmus für P mit polynomialer Laufzeit ε-approximierend für P = hΣ, E , A, L, ci , falls |chv , w i − opt(v )| ≤ ε wobei |opt(v )| Jürgen Koslowski (TU-BS) opt(v ) := opt{ chv , w i : hv , w i ∈ L } Theoretische Informatik 2 SS 2015 207 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beispiel Der obige Algorithmus für MinKÜ ist 1-approximierend, denn c(G ) ≤ 2opt(G ) impliziert c(G ) − opt(G ) ≤ opt(G ) . Für ε < 1 ist der Algorithmus nicht ε-approximierend: G : • c(G ) = 2 aber opt(G ) = 1 . • liefert Beispiel ( SiT(k) ) Das O-Problem Scheduling of Independent Tasks(k) hat ein n -Tupel t ∈ Nn als Eingabe, zu interpretieren als Bearbeitungszeiten von n voneinander unabhängigen Aufgaben (Tasks). Für diese stehen k gleichmächtige Prozessoren zur Verfügung. Gesucht ist eine Abbildung n S(t) k (Arbeitsplan oder Schedule), die die Gesamtlaufzeit T (t) X minimiert: T (t) = max{ ti : j < k } i∈S(t)−1 {j} Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 208 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Ein typischer Laufzeitplan hat etwa die Form 5 Prozessor 4 3 2 1 0 0 20 40 60 Zeit Verschieben der letzten Aufgabe von Prozessor 4 nach Prozessor 1 verbessert in diesem Fall die Gesamtlaufzeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 209 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Idee für einen SiT(k)-Algorithmus: die Aufgaben gemäß Zeitbedarf absteigend sortieren, in dieser Reihenfolge so verteilen, dass Prozessoren mit der bisher geringsten Belastung bevorzugt werden. Algorithmus für SiT(k) Gegeben: t ∈ Nn ; Gesucht: Schedule n 1: 2: 3: 4: 5: 6: 7: 8: 9: S(t) k, der die Gesamtlaufzeit minimiert. t absteigend sortieren; for m < k do Tm = 0 ; end for for i < n do wähle j < k mit Tj = minm<k Tm ; S(i) := j ; Tj := Tj + ti ; end for Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 210 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Korrektheit: Die zweite FOR-Schleife sorgt dafür, dass jedem Task ein Prozessor zugeordnet wird. Laufzeit: Wegen der Konstanz von k haben die erste FOR-Schleife und der Körper der zweiten FOR-Schleife konstante Laufzeit. Also benötigt die zweite Schleife lineare Laufzeit. Die Sortierung erfordert O(n log n) . Beispiel h1, 3, 5, 3, 10, 7i liefert umsortiert ht0 , t1 , t2 , t3 , t4 , t5 i = h10, 7, 5, 3, 3, 1i , was bei k = 3 Maschinen zu folgenden Zuordnungen und Laufzeiten führt: S(t)−1 {0} = {0} , S(t)−1 {1} = {1, 4} , S(t)−1 {2} = {2, 3, 5} Prozessor 2 1 0 0 2 4 6 8 10 Zeit Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 211 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Satz Der obige Algorithmus ist 1-approximierend. Beweis Wähle eine Aufgabe i , die zur Zeit T (t) endet. Falls i < k folgt ti = T (t) , und somit T (t) = T opt . Andernfalls haben wir Prozessor k−1 . . . 3 2 1 0 0 T (t) − ti T (t) Da alle Prozessoren bis zur Zeit T (t) − ti beschäftigt sind, gilt T (t) − ti ≤ T opt Jürgen Koslowski (TU-BS) und folglich Theoretische Informatik 2 T (t) − T opt ≤ ti SS 2015 212 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beweis (Fortsetzung) Nach Voraussetzung muß zudem ti ≤ T (t) − ti und folglich ti ≤ T opt gelten, denn sonst wäre die Aufgabe i früher verplant worden. Damit also T (t) − T opt T opt ≤ ti ti ≤ =1 T opt ti Ohne Beweis stellen wir fest, dass der Algorithmus sogar 13 -approximierend ist. Man spricht in diesem Zusammenhang auch von der Güte der Approximation. Ziel: PTAS für k = 2 . Dazu: Optimalalgorithmus für SiT(2) verwenden: finde alle Teilsummen von t ∈ Nn mit dynamischer Programmierung; P jede minimale Teilsumme ≥ τ := 12 i<n ti liefert das Minimum; es kann verschiedene Möglochkeiten geben, das zu erreichen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 213 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Für t ∈ Nn sei im Folgenden Bj die Liste der möglichen Teilsummen des Anfangsstücks hto , t1 , . . . , tj−1 i , und || bezeichne die Konkatenation von Listen. Optimalalgorithmus für SiT(2) Gegeben: t ∈ Nn ; Gesucht: Schedule n S(t) 2, der die Gesamtlaufzeit minimiert. P 1: τ := 12 i<n ti ; B0 = h0i ; 2: for j < n do 3: Bj+1 := BJ ||(tj + Bj ) = Bj ||h b + tj : b ∈ Bj i ; 4: end for 5: finde die kleinste Komponente b∗ in Bn mit b∗ ≥ τ ; 6: finde eine Teilfolge von hti : i < ni mit Summe b∗ durch Backtracking durch die Bi ; ordne diese dem Prozessor 0 zu Korrektheit: Klar. Laufzeit: O(n · τ ) , aber dies ist exponentiell in der Länge der (vernünftigen nicht-unären) Codierungen der ti ! Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 214 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beispiel Für t = h10, 53, 37, 22i erhalten wir τ = 122/2 = 61 sowie B0 = h0i B1 = h0, 0 + 10i B2 = h0, 10, 0 + 53, 10 + 53i B3 = h0, 10, 53, 63, 0 + 37, 10 + 37, 53 + 37, 63 + 37i B4 = h0, 10, 53, 63, 37, 47, 90, 100, 22, 32, 75, 59, 69, 112, 122i Damit ordnet die optimale Lösung den beiden Prozessoren die Aufgaben der Längen 22 und 37 bzw. 10 und 53 zu. Idee: ε-Approximation für Eingabe t ∈ Nn durch Optimallösung für linear verkürzte Eingabe t 0 = rnd( λ1 · t) ∈ Nn mit λ > 1 realisieren. Durch die Verkürzung der Eingabewerte um den Faktor λ gehen Bits verloren (Rundungsfehler), daher wird S(t 0 ) i.A. nicht mit S(t) übereinstimmen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 215 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Der relative Fehler der Kosten hat dann die Form |c(t) − opt(t)| |λ · opt(t 0 ) − opt(t)| |λ · opt(t 0 ) − opt(t)| le ≤ |opt(t)| |opt(t)| τ Nun müssen wir durch geeignete Wahl von λ sicherstellen, dass der Zähler nach oben durch τ ε beschränkt ist, damit der relative Fehler ≤ ε bleibt. Der Vergleich entsprechender Teilsummen b∗0 und b∗ für t 0 bzw. t aus den jeweiligen Optimalalgorithmen liefert |λ · b∗0 − b∗ | = λ · |b∗0 − b∗ /λ| ≤ λ·n 2 (∗) da b∗0 eine Summe aus höchstens n gerundeten Werten ist. Setze λ := max{1, 2τ /n} Falls 1 ≥ 2τ /n gilt, ist die optimale Lösung des ursprünglichen Problems zu bestimmen, was dem Zähler des obigen Bruchs den Wert 0 zuweist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 216 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Lineare Verkürzung durch Abschneiden von Ziffern/Bits umgeht reelle Arithmetik: statt rnd ist dann b−c zu verwenden, wodurch in (∗) der Faktor 12 entfällt. Für die β Basis der Zahlencodierung erhält man den Skalierungsfaktor λ := β r mit r := max{ x ∈ N : β x ≤ τ ε/n } Die Zeitkomplexität liegt nun in O(n · τ /λ) = O(n/ε) , was linear ist. Definition Ein PTAS für ein O-Problem P = hΣ, E , A, L, ci ist ein Algorithmus M mit Eingabe v ∈ E und ε > 0 , dessen Ausgabe w ∈ A mit hv , w i ∈ L einen relativen Fehler ≤ ε aufweist. Weiterhin muß für jedes ε > 0 ein Polynom pε existieren, so dass M( , ε) eine Laufzeit in O(pε ) hat. Ein PTAS heißt voll, falls die Laufzeit des Algorithmus polynomial in |v | und in 1/ε ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 217 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beispiel Der oben beschriebene Algorithmus für SiT(2) ist ein volles PTAS. Beispiel Das O-Problem MinBinPAcking hat als Eingabe ein Tupel a ∈ Nn von “Gewichten” und eine “Kapazität” C ∈ N . Gesucht ist die Minimalzahl an “Körben” der Kapazität C , die alle Gewichte aufnehmen können. Diese Problem besitzt ein PTAS dessen Laufzeit exponentiell in 1/ε ist. Unter der Voraussetzung P 6= NP existiert kein volles PTAS für MinBinPAcking (ohne Beweis). Satz Unter der Voraussetzung P 6= NP existiert für kein ε > 0 ein ε-approximierender Algorithmus für MinTSP. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 218 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beweis Indirekt: wir nehmen an, A sei ein ε-approximierender Algorithmus für MinTSP. Dann läßt sich das E-Problem HamiltonscherKreis (HK) in polynomialer Zeit von einer dTM lösen, im Widerspruch zu seiner NP-Vollständigkeit. Zu einem ungerichteten Graphen G = hV , E i definieren wir die Entfernungsmatrix falls u = v 0 du,v := 1 falls {u, v } ∈ E 2 + dεne sonst Die von A berechnete Rundreise möge die Länge K haben. Behauptung: G hat genau dann einen HK, wenn K ≤ n(1 + ε) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 219 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Beweis (Fortsetzung) ( ⇒ ) Besitzt G einen HK, so hat die optimale Rundreise die Länge n . Dann gilt |K − n| K = − 1 ≤ ε gdw K ≤ n(1 + ε) n n ( ⇐ ) Ohne HK in G hat die optimale Rundreise mindestens die Länge 2 + dεne + n − 1 ≥ 1 + n + εn = 1 + n(1 + ε) > n(1 + ε) Der resultierende Algorithmus für HK berechnet also d wie oben, wendet A auf die entsprechende Instanz von MinTSP an und prüft, ob die Länge des gefundenen Rundwegs durch n(1 + ε) beschränkt ist. Die Korrektheit ist klar, und die Laufzeit ist polynomial. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 220 / 236 Komplexität von Algorithmen 8.11 Approximation von Optimierungsproblemen Die Voraussetzung P 6= NP liefert eine Einteilung der O-Probleme in eine strikt wachsende Hierarchie von Klassen mit Trennbeispielen: PO vPTAS PTAS det. Polynomialzeit-Lösungsalgorithmen volle PTAS SiT(2) Polynomialzeitapproximationsschemata APX es ex. ein ε-approximierender Algo NPO ndet. Polynomialzeit-Lösungsalgorithmen Jürgen Koslowski (TU-BS) MaxMatching Theoretische Informatik 2 MinBinPacking MinKÜ MinTSP SS 2015 221 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität 8.12 Raumkomplexität Speicherbedarf von Algorithmen ist das zweite wichtige Effizienzkriterium. Definition (1. Versuch) Eine Funktion N t R+ wird als Raumkomplexität einer nTM M bezeichnet, wenn der Kopf von M für jede Eingabe w ∈ X n höchstens auf t(n) verschiedene Felder zugreift. (Á priori muß M nicht immer halten!) (N)PSPACE bezeichnet die Klasse aller E-Probleme, die von einer (n)dTM mit polynomialer Raumkomplexität akzeptiert werden können. In Analogie zur oben verwendeten Schreibweise findet man auch die Bezeichnungen PTIME und NPTIME für P bzw. NP . Da eine TM pro Schritt nur ein Feld beschreiben kann, gilt automatisch P = PTIME ⊆ PSPACE und NP = NPTIME ⊆ NSPACE Obwohl die Turingmaschinen hier nicht immer halten müssen, gilt Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 222 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Satz PSPACE-Sprachen sind entscheidbar. Beweisskizze Für jede Eingabe kann nur endlicher Teil des Bandes erreicht werden, also gibt es auch nur endlich viele mögliche Konfigurationen. Berechnet man zunächst eine Schranke für deren Anzahl und zählt dann die Schritte, so kann man feststellen, wann sich eine Konfiguration wiederholt haben muß. Im deterministischen Fall kann die Eingabe dann nicht mehr akzeptiert werden, insofern kann man die Berechnung abbrechen. Für eine nTM M versagt dieses Argument, weil Berechnungszweige ignoriert werden können. Der übliche Übergang zur Determinisierung Md , führt hier leider nicht weiter: die Schranke für die Anzahl der erreichbaren Konfigurationen ist exponentiell in der Raumkomplexität, aber die Buchführung über die Berechnungstiefe in Md erfolgte unär! Statt hier etwa zu binärer Darstellung überzugehen, wählen wir einen anderen Ausweg. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 223 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Zuvor aber eine vereinfachende Annahme über Turingmaschinen: Lemma Jede 1-Band TM mit Raumkomplexität t(n) ≥ n ist äquivalent zu einer 1-Band TM mit derselben Raumkomplexität, die nur mit leerem Band halten kann. Beweisskizze Die Eingabe w ∈ Σ∗ wird am rechten und am linken Rand durch spezielle Randmarkierer begrenzt. Nach Rückkehr zum rechten Rand von w wird die Ursprungsmaschine ausgeführt, wobei die Randmarkierer nach Bedarf verschoben werden. Hält diese Berechnung, wird der Bandbereich zwischen den Randmarkierern (einschließlich) gelöscht. Im Gegensatz zum bislang unbestimmten Verhältnis zwischen nichtdeterministischen und deterministischen Turing-Maschinen bei der Zeitkomplexität, herrscht bei der Raumkomplexität Klarheit: Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 224 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Satz (Savitch, 1970) Jede nTM mit polynomialer Raumkomplexität p kann von einer dTM mit Raumkomplexität p 2 simuliert werden, also PSPACE = NPSPACE . Beweis Die nTM M habe Raumkomplexität p(n) ≥ n und möge nur bei leerem Band halten, d.h., KF = hqF , #i ist die einzige Haltekonfiguration. Zwecks Abschätzung der Anzahl κ der von der Initialkonfiguration bei der Berechnung von w mit |w | = n aus potentiell erreichbaren Konfigurationen setzen wir r := |Q| und m := |B| . κ ≤ r · mp(n) · p(n) < r · mp(n) 2 < 2C ·p(n) für geeignetes C ∈ N Wir betrachten jetzt nur noch solch potentiell erreichbare Konfigurationen. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 225 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Beweis (Fortsetzung) Genau dann, wenn eine Konfiguration K 0 von K aus in höchstens 2i Schritten erreicht werden kann, setzen wir abkürzend REACH(K , K 0 , i) = true Also akzeptiert M die Eingabe w genau dann, wenn gilt REACH(Kw , KF , C · p(n)) = true wobei Kw die Initialkonfiguration bei Eingabe w ist. Gesucht: ein deterministischer Algorithmus für REACH(K , K 0 , i) , der für Werte i < C · p(n) selbst polynomiale Raumkomplexität hat. Wir geben eine rekursive Konstruktion für einen derartigen Algorithmus an: i = 0 : REACH(K , K 0 , 0) = true gdw K = K 0 oder K ` K 0 . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 226 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Beweis (Fortsetzung) i + 1 : Wir nehmen an, für i ≥ 0 haben wir einen REACH-Algorithmus mit der gewünschten Eigenschaft. Nun ist REACH(K , K 0 , i + 1) genau dann wahr, wenn eine Zwischenkonfiguration K̄ existiert mit REACH(K , K̄ , i) = true und REACH(K̄ , K 0 , i) = true Insgesamt sind dann höchstens 2 · 2i = 2i+1 Schritte nötig, um K 0 von K aus zu erreichen. Der Algorithmus für i + 1 probiert nun systematisch alle von der Kw aus potentiell erreichbaren Konfigurationen K̄ durch. Raumkomplexität: Die Spezifikation einer erreichbaren Konfiguration benötigt maximal p(n) + 2 Bandzellen. Beim rekursiven Aufruf kann der Platz vom letzten Versuch wiederverwendet werden. Der Zähler i ist durch C · p(n) ∈ O(p(n)) beschränkt. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 227 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Beweis (Fortsetzung) Der Raumbedarf S(i) erfüllt damit die Rekursion S(0) = C · p(n) und S(i + 1) = C · p(n) + S(i) Dies läßt sich auflösen zu S(C · p(n)) = C · p(n) + S(C · p(n) − 1) = C · p(n) + C · p(n) + S(C · p(n) − 2) ... = (C · p(n))2 Damit ist die Behauptung bewiesen. Nun folgt unmittelbar NP ⊆ NPSPACE = PSPACE ⊆ REC . Für die Oberklasse PSPACE von NP läßt sich nun in analoger Weise der Begriff der Vollständigkeit formulieren. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 228 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Definition Die Syntax quantifizierter Boole’scher Formeln (qBF) hat die BNF ϕ ::= x | true | false | ¬ϕ | ϕ ∧ ϕ | ϕ ∨ ϕ | ϕ → ϕ | ∀x.ϕ | ∃x.ϕ Die Menge der freien Variablen einer qBF ϕ ist gegeben durch Frei(true) = Frei(false) := ∅ Frei(x) := {x} Frei(¬ϕ) := Frei(ϕ) Frei(ϕ ∧ ψ) = Frei(ϕ ∨ ψ) = Frei(ϕ → ψ) := Frei(ϕ) ∪ Frei(ψ) Frei(∀x.ϕ) = Frei(∃x.ϕ) := Frei(ϕ) − {x} Nicht freie Variablen sind durch einen Quantor gebunden. ϕ heißt geschlossen, falls jede auftretenden Variable gebunden ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 229 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Schreibweise: ϕ(x0 , x1 , . . . , xn−1 ) bedeutet Frei(ϕ)⊆{ xi : i < n} . Fakt Jede geschlossene qBF ϕ kann in sogenannter Prenex-Normalform (PNF) dargestellt werden ϕ = Q0 x0 . Q1 x1 . . . . Qn−1 xn−1 . ψ(x0 , . . . , xn−1 ) wobei ψ keine Quantoren enthält. Mit Hilfe von “Dummy-Variablen” ist es zudem möglich, alternierende Prenex-Normalform (aPNF) zu erreichen, bei der Existenz- und All-Quantor alternieren: ϕ = ∃x0 . ∀x1 . . . . Qm−1 xm−1 . ψ(x0 , . . . , xm−1 ) Beispiel Das E-Problem QuantifizierteBoolescheFormel (QBF) hat als Eingabe eine geschlossene quantifizierte Boolesche Formel ϕ in PNF. Zu entscheiden ist, ob ϕ wahr ist. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 230 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Satz QBF ∈ PSPACE . Beweis. Enthält ϕ = Q0 x0 . Q1 x1 . . . . Qn−1 xn−1 . ψ(x0 , . . . , xn−1 ) keine Quantoren, gilt ϕ ∈ {true, false} . Andernfalls entfernt man Q0 und bewertet A = Q1 x1 . . . . Qn−1 xn−1 . ψ(false, . . . , xn−1 ) B = Q1 x1 . . . . Qn−1 xn−1 . ψ(true, . . . , xn−1 ) Falls Q0 = ∃ , bildet man A ∨ B , andernfalls A ∧ B . Die Laufzeit dieses rekursiven Verfahrens beträgt O(2n ) , bei einer Rekursionstiefe von n (Anzahl der Quantoren). Da die Auswertung quantorenfreier Formeln logarithmischen Platz in der Anzahl der Variablen benötigt (HA), liegt der Platzbedarf in O(n + log n) = O(n) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 231 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Satz QBF ist PSPACE-hart und somit PSPACE-vollständig. Beweis (vergl. Sipser) Für L ∈ PSPACE ist L . QBF nachzuweisen. Betrachte eine dTM M für L ⊆ Σ∗ mit polynomialer Raumkomplexität p . Analog zum Beweis des Cooke’schen Satzes können Zustand, Bandinhalt und Kopfposition von M durch Boolesche Formeln in KNF beschrieben werden, also auch die Konfigurationen von M . Wir führen neue Variable ci für Konfigurationen ein und konstruieren daraus entsprechend der Idee im Beweis des Satzes von Savitch eine qBF ρhc0 ,c1 ,ii , die ausdrückt, dass c1 von c0 aus in höchstens 2i Schritten erreicht werden kann. Für w ∈ Σn ist dann w ∈ L äquivalent zur Wahrheit von ρhcw ,cF ,C ·p(n)i . Behauptung: w 7→ ρhcw ,cF ,C ·p(n)i braucht polynomiale Zeit in |w | = n . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 232 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Beweis (Fortsetzung) Idee: Abschätzung der Zeit durch Abschätzung der Länge. Wie zuvor ist der Fall ρhc0 ,c1 ,0i trivial. i 7→ i + 1 mittels Zwischenkonfigurationen: ρhc0 ,c1 ,i+1i = ∃m. (ρhc0 ,m,ii ∧ ρhm,c1 ,ii ) (vorläufig) Das Einfügen von Zwischenkonfigurationen verdoppelt aber die Länge der Formeln, was zu exponentiellem Wachstum führt. Das läßt sich mit Hilfe universeller Quantifizierung verhindern: ρhc0 ,c1 ,i+1i = ∃m. ∀x.∀y . (hx, y i = hc0 , mi ∨ hx, y i = hm, c1 i) ⇒ ρhx,y ,ii was die Länge pro Schritt um eine Konstante vergrößert, bei O(p(n)) Schritten also |ρhcw ,cF ,C ·p(n)i | ∈ O(p(n)) . Das Hinschreiben braucht also O(p(n)) Zeit. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 233 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität QBF kann als Erweiterung von Sat aufgefaßt werden: eine KNF-Formel ϕ(x0 , . . . , xt−1 ) ist genau dann erfüllbar, wenn folgende Formel wahr ist ∃x0 . ∃x1 . . . . ∃xt−1 . ϕ(x0 , . . . , xt−1 ) qBF-Formeln in aPNF lassen sich auch spieltheoretisch interpretieren: zwei Spieler, Eloise und Abelard, wählen abwechsend Werte für die Variablen in ψ = ∃x0 . ∀x1 . . . . Qm−1 xm−1 . ϕ(x0 , . . . , xm−1 ) Eloise für die durch Existenzquantoren gebundenen Variablen, Abelard für die übrigen. Eloise gewinnt, falls in der so bestimmten Belegung ϕ wahr ist, andernfalls gewinnt Abelard. Definition Die Sprache FormelSpiel besteht aus denjenigen geschlossenen Formeln in aPNF, für die Eloise eine Gewinnstrategie hat. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 234 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Man überzeugt sich leicht davon (HA!), dass FormelSpiel PSPACE vollständig ist. Die kleinste Raumkomplexität, die sich mit der ursprünglichen Definition formulieren läßt, ist linear, O(n) , denn der Platz der Eingabe zählt mit! Doch eine sinnvolle Definition sub-linearer Raumkomplexität erfordert, die Handhabung der Eingabe zu überdenken: Definition (Raumkomplexität revisited) Eine 2-Band Turingmaschinen mit einem read-only Eingabeband und einem normalen Arbeitsband hat Raumkomplexität f (n) , falls jede Eingabe der Länge n höchstens f (n) Raum auf dem Arbeitsband benötigt. Wenn es um die Berechnung von Funktionen geht, ist zusätzlich noch ein write-only Ausgabeband vorzusehen. Im Gegensatz zu endlichen Automaten und Kellerautomaten wird die Eingabe nicht notwendig als Strom verarbeitet, da auf dem Eingabeband Schritte in beiden Richtungen möglich sind, two-way statt one-way. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 235 / 236 Komplexität von Algorithmen 8.12 Raumkomplexität Weitere interessante Raum-Komplexitätsklassen: Definition Die Klasse L ( NL ) besteht aus allen E-Problemen, die von einer (nicht)deterministischen Turingmaschine mit Raumkomplexität in O(log n) gelöst werden können. Beispiel Sowohl die Sprache der korrekt geklammerten Ausdrücke über {), (} als auch die die Sprache {w ∈ {a, b}∗ : |w |a = |w |b } liegen in L : Man muß nur die Anzahl noch offener Klammern bzw. die Anzahlen von Symbolen a sowie b binär bestimmen und mit 0 bzw. miteinander vergleichen. Man kann zeigen, dass Erreichbarkeit in gerichteten Graphen und 2-Sat in NL liegen und sogar NL-vollständig sind, woraus L ⊆ NL ⊆ P folgt. Es ist offen, ob diese Inklusionen echt sind. Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2015 236 / 236