Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 5 Vorlesung Theoretische Grundlagen der Informatik im WS 16/17 Ausgabe 9. Dezember 2016 Abgabe 20. Dezember 2016, 11:00 Uhr (im Kasten im UG von Gebäude 50.34) Bitte nutzen Sie den WebInScribe Deckblattgenerator und heften Sie das Deckblatt an Ihr Übungsblatt. https://webinscribe.ira.uka.de/deckblatt/index.php?course=10588. Aufgabe 1 (2 + 3 = 5 Punkte) Der ebenso geniale, wie auch frustrierte Wissenschaftler und Superbösewicht Doktor Meta ist in Geldnot. Es ist zum aus der Haut fahren! Sven van Hagen befindet sich in seiner Gewalt, Turing-Man ist in einer Endlosschleife gefangen und die schöne Elsa unterstützt Metas Pläne. Doch nach dem Bau seines neuen Hauptquartiers ist der Doktor finanziell in Schwierigkeiten. Schon seit langem hofft Doktor Meta deswegen auf die Unterstützung der Allianz für Diktatoren, die unter Superbösewichten sehr bekannt ist. Dort wird eine Liste von Bösewichten geführt, die einer (sehr größzügigen) Spende würdig sind. Offensichtlich steht Metas Name nicht darauf. Um sich in die Liste eintragen zu lassen muss man dieses Jahr allerdings nur ein dort noch nicht bekanntes co-N P-Vollständiges Problem einschicken. Das ist seine Chance. Elsa erinnert sich, dass das Problem Sat co-N P-vollständig ist. Das Problem Sat ist folgendermaßen definiert: Gegeben: Menge U von Variablen, Menge C von Klauseln. Frage: Existiert keine Wahrheitsbelegung von U , so dass C erfüllt wird? Das heißt, nimmt für jede Wahrheitsbelegung von U mindestens eine Klausel aus C den Wahrheitswert falsch an? Da Doktor Meta aufgrund der Bekanntheit von SAT befürchtet, dass Sat bereits bekannt ist, denkt er sich ein neues Problem aus. Die Sprache Lreg ist über einem endlichen Alphabet Σ folgendermaßen definiert: Lreg = {(R, S) | R, S sind einfache reguläre Ausdrücke mit L(R) = L(S)} In einfachen regulären Ausdrücken wird der Kleensche Abschluss nicht verwendet. Helfen Sie Dr. Meta und beweisen Sie, dass Lreg co-N P-vollständig ist, indem Sie wie folgt vorgehen: (a) Zeigen Sie Lreg ∈ co-N P. Sie dürfen davon ausgehen, dass ein Algorithmus existiert, der zu einem einfachen regulären Ausdruck R der Länge m und einem Wort w der Länge n in O(mn) Zeit entscheidet, ob w ∈ L(R). (b) Zeigen Sie, dass Lreg co-N P-schwer ist, indem Sie Sat ∝ Lreg zeigen. Lösung: (a) Seien R, S einfache reguläre Ausdrücke mit (R, S) 6∈ Lreg . Dann existiert ein Wort w, so dass gilt w ∈ L(R) und w 6∈ L(S), oder w 6∈ L(R) und w ∈ L(S). Also ist w ein Zeuge dafür, dass R und S nicht dieselben Sprachen beschreiben. Zu einem gegebenen Wort kann mit dem in der Aufgabenstellung genannten Algorithmus mit polynomialem Zeitaufwand entschieden werden, ob es ein Zeuge dafür ist, dass (R, S) 6∈ Lreg . Somit ist Lreg ∈ co-N P. (b) Definiere ϕ : C × U → {{0}, {1}, {0, 1}} durch ϕ : (c, u) 7→ {0} falls u ein positives Literal in c ist, ϕ : (c, u) 7→ {1}, falls ¬u ein negiertes Literal in c ist, und schließlich ϕ : (c, u) 7→ {0, 1}, falls u kein Literal in c ist. Sei U = {u1 , u2 , . . . , un } und C = {c1 , c2 , . . . , cm }. Konstruiere dann die einfachen regulären Ausdrücke R= m [ (ϕ(ci , u1 ) · ϕ(ci , u2 ) · . . . · ϕ(ci , un )) i=1 und S= mn [ {0, 1} . j=1 Sowohl R als auch S können durch eine deterministische Turingmaschine mit polynomialem Zeitaufwand berechnet werden. Weiter gilt L(R) = L(S) genau dann, wenn C durch keine Wahrheitsbelegung von U erfüllt wird. Die Sprache L(R) enthält nämlich genau die kodierten Wahrheitsbelegungen von U , die C nicht erfüllen. Um eine einzelne Klausel zu erfüllen reicht es aus, dass ein einziges enthaltenes Literal den Wahrheitswert wahr erhält. Dies wird dadurch verhindert, dass ϕ alle vorkommenden Literale mit dem Wahrheitswert falsch belegt. Alle anderen Variablen spielen für die Wahrheitsbelegung der Klausel keine Rolle und bekommen also keinen Wahrheitswert zugewiesen. Aufgabe 2 (3 + 1 = 4 Punkte) Zeigen Sie, dass aus P = N P folgt, dass alle Sprachen in P, bis auf ∅ und Σ? , N P-vollständig sind. Wieso gilt die Aussage nicht für ∅ und Σ? ? Lösung: Sei L ∈ P. Da P = N P folgt direkt L ∈ N P. Es bleibt zu zeigen, dass zu jeder Sprache L0 ∈ N P eine polynomiale Transformation f existiert, so dass x ∈ L0 ⇐⇒ f (x) ∈ L. Da L0 ∈ N P und deshalb auch L0 ∈ P, existiert eine deterministische Turingmaschine M mit polynomialer Laufzeit, die L0 entscheidet. Wähle w+ ∈ L und w− 6∈ L, was genau dann möglich ist, wenn ∅ ( L ( Σ? . Die Tranformation f simuliert zur einer Eingabe x dann einfach M. Akzeptiert M, setze f (x) = w+ . Lehnt M die Eingabe x ab, setze f (x) = w− . Da M in polynomialer Zeit läuft existiert ebenfalls eine deterministische Turingmaschine M0 , die in polynomialer Zeit die Funktion f berechnet. Somit ist f eine geeignete polynomiale Transformation. Die Aussage gilt nicht für ∅ und Σ? , da dann Ja“-Instanzen nicht mehr von Nein“-Instanzen ” ” unterschieden werden können. Aufgabe 3 (3 + 3 = 6 Punkte) w ∈ LJΠ ⇐⇒ ∃x ∈ Σ? : M akzeptiert hw, xi, wobei die Laufzeit von M polynomial in n = |w| ist. Hinweis: dies ist die Zeugendefinition“ der Klasse N P, da x die Zugehörigkeit von w zu L bezeugt. ” (a) Beweisen Sie, dass jede Sprache L ∈ N P von einer deterministischen Turingmaschine in O(2p(n) ) entschieden werden kann, wobei p(n) ein Polynom über n ist. (b) Nehmen Sie nun an, dass sie für eine N P-vollständige Sprache L die Turingmaschine M so modifizieren können, dass M für jedes w ∈ L höchstens 42 Zeugen x ablehnt. Zeigen Sie, dass dann P = N P gilt. Lösung: (a) Aufgrund der polynomialen Laufzeit von M gilt die Aussage auch für x ∈ Σp(n) mit einem Polynom p(n). Dann kann eine deterministische Turingmaschine M0 bei Eingabe von w für jeden möglichen Zeugen x ∈ Σp(n) ausprobieren, ob M die Eingabe hw, xi akzeptiert. Ist dies der Fall, akzeptiert M0 die Eingabe w. Werden alle Zeugen abgelehnt lehnt auch M0 die Eingabe w ab. Dies entspricht genau der obigen Definition von N P . Insgesamt gibt es 2p(n) mögliche Zeugen. Die Gesamtlaufzeit beträgt dann O(2p(n) · poly(n)) = O(2p(n) ). (b) Konstruiere eine deterministische Turingmaschine M0 , die zunächst 43 paarweise verschiedene Zeugen xi ∈ Σ? wählt. Für i = 1, 2, . . . , 43 simuliert M0 dann die Turingmaschine M auf der Eingabe hw, xi i. Akzeptiert M, so gilt w ∈ L. Lehnt M alle 43 Zeugen ab, so gilt w 6∈ L, denn M lehnt im Fall w ∈ L höchstens 42 Zeugen ab. Da M polynomiale Laufzeit hat, hat auch M0 polynomiale Laufzeit. Mit der N P-Volltändigkeit von L folgt dann P = N P. Aufgabe 4 (2 + 2 + 3 + 1 + 1 = 9 Punkte) Das Problem 3-Sum ist wie folgt definiert. Gegeben: Eine endliche Menge S ⊂ R. Frage: Existieren drei nicht notwendigerweise unterschiedliche Zahlen a, b, c ∈ S, so dass a + b + c = 0? Es ist offen, ob ein Algorithmus existiert der das Problem 3-Sum in der Laufzeit O(n2− ), > 0 löst. Ein Problem Π heißt 3-Sum-schwer, wenn ein subquadratischer Algorithmus für Π impliziert, dass 3-Sum in subquadratischer Zeit lösbar ist. Das Problem 3-Linienschnitt ist wie folgt definiert: Gegeben: Eine endliche Menge L von Linien in der euklidischen Ebene. Frage: Existieren drei Linien aus L die sich in genau einem Punkt schneiden? Im Folgenden sollen Sie zeigen, dass 3-Linienschnitt 3-Sum-schwer ist. Gehen Sie dafür davon aus, das Sie eine Linie y = mx + b als Paar (m, b) kodieren. Sie wissen außerdem, dass die Steigung m nur die Werte {−1, 0, 1} annehmen kann. (a) Geben Sie für jede Zahl x ∈ S eine Menge von Linien Lx an, so dass für drei Zahlen a+b+c = 0 genau dann gilt, wenn drei Linien la ∈ La , lb ∈ Lb und lc ∈ Lc existieren, die sich in genau einem Punkt schneiden. Lösung: Lx = {(−1, x), (0, −x/2), (1, x)}. (b) Konstruieren Sie zu der Instanz S = {1, 2, −3, −4} die Mengen La , a ∈ S graphisch. Kennzeichnen Sie die Mengen La eindeutig. Geben Sie zwei Lösungen der Form {(m1 , b1 ), (m2 , b2 ), (m3 , b3 )} für die 3-Linienschnitt Instanz an. Entspricht Ihre Lösung der 3-Linienschnitt Instanz einer Lösung der 3-Sum Instanz? Lösung: L1 ∩ L2 ∩ L−3 = L2 ∩ L2 ∩ L−4 = 1+2-3 = 0 2+2-4 = 0 (c) Zeigen Sie die Korrektheit Ihrer Transformation aus (a). Lösung: Drei Linien schneiden sich genau dann in genau einem Punt, wenn sie unterschiedliche Steigungen haben. Ein Lösungstripel ist also immer der Form {(−1, x), (0, y), (1, z)}. Wir wählen für drei Zahlen a, b, c ∈ S aus den Mengen Lx , x = a, b, c je eine Linie mit noch nicht verwendeter Steigung. Wir zeigen, dass die Geraden (−1, a), (0, −b/2, 1, c) sich genau dann in einem Punkt schneiden, wenn a + b + c = 0. y = −1x + a ∧y = −b/2 ∧y = 1x + c ⇐⇒ 2y = a + c ∧y = −b/2 ⇐⇒ −b = a + c ⇐⇒ 0=a+b+c (d) Benötigt Ihre Transformation subquadratische Zeit? Lösung: Die Transformation benötigt tatsächlich nur lineare Zeit, da für jede Zahl a ∈ S nur drei Linien erzeugt werden. (e) Der sogenannte Sweep-Line Algorithmus zum Schnitt von Linien benötigt O(n log n + k) Laufzeit, wobei k ∈ N die Anzahl der Schnittpunkte ist. Warum impliziert dies noch keinen subquadratischen Algorithmus für das 3-Sum Problem? Welche Voraussetzungen muss die Transformation von S nach L erfüllen, damit Sie mit Hilfe des Sweep-Line Algorithmus einen subquadratischen Algorithmus für 3-Sum erhalten? Lösung: Die in (a) angegebene Transformation erzeugt eine quadratische Anzahl an Schnittpunkten. Um den Sweep-Line Algorithmus verwenden zu können, müssen Sie sicher stellen, dass die Ihre Transformation nur eine geringe Anzahl an Schnittpunkten erzeugt. Aufgabe 5 (3 + 3 + 3 = 9 Punkte) Beweisen Sie die N P-vollständigkeit der folgenden Probleme. • Gegeben: Zwei Graphen G1 = (V1 , E1 ), G2 = (V2 , E2 ) und eine Zahl K ∈ N. Frage: Gibt es zwei Teilmengen E10 ⊂ E1 , E20 ⊂ E2 , mit |E10 | = |E20 | ≥ K, so dass die Graphen G01 = (V (E10 ), E10 ), G02 = (V (E20 ), E20 ) isomorph sind? Nutzen Sie, dass das Problem Hamiltonischer Kreis N P-vollständig ist. Lösung: Largest Common Subraph ∈ N P: Sei (G01 , G02 , φ) mit φ einer Bijektion von V10 nach V20 eine Zeuge für die Largest Common Subgraph Instanz. In O(|E||V |) Zeit kann überprüft werden – |E10 | = |E20 | < K – Vi0 ⊂ Vi , Ei0 ⊂ Ei – {u, v} ∈ E10 genau dann, wenn {φ(u), φ(v)} ∈ E20 Polynomiale Transformation: Sei G = (V, E) eine Instanz für das Hamiltonischer Kreis Problem. Wir wählen G1 = G, G2 sei ein Zyklus der Länge |V | und K = |V |. Die Transformation ist offenbar in polynomieller Zeit berechenbar. Korrekheit: Sei Π (eine Permutation der Knotenmenge) ein Hamiltonischer Kreis in G. Sei φ : V1 → V2 eine beliebige Bijektion. Dann ist (V, φ ◦ Π) eine Zeuge dafür das G2 ein Subgraph von G1 . Desweiteren ist K ≥ |V | erfüllt. Sei G0 der größte gemeinsame Subgraph von G1 und G2 . Da |E 0 | ≥ K = |V | gefordert ist, folgt das G = G2 . G ist also ein Hamiltonischer Kreis. • Gegeben: Ein gerichteter Graph G = (V, E), eine positive Zahl K ∈ N. Frage: Gibt es eine Teilmenge V 0 ⊂ V , mit |V 0 | ≤ K, so dass für jeden gerichteten Zyklus C in G, V (C) ∩ V 0 6= ∅ gilt. Nutzen Sie das Problem Vertex Cover für die Reduktion. Hinweis: V (C) bezeichnet die Knotenmenge des Zyklus C. Lösung: Feedback Vertex Set ∈ N P: Es kann wie folgt in polynomial Zeit überprüft werden, ob eine Menge V 0 eine Feedback Vertex Set ist. Es müssen folgende Bedingungen geprüft werden. – V0 ⊂V – |V 0 | ≤ K – Markiere mit Hilfe einer Tiefensuche jeden Zyklus der von v ∈ V 0 erreichbar ist. Überprüfe für jeden nicht markierten Knoten, ob ein nicht markierter Zyklus existiert. Polynomiale Transformation der Transformation: G0 = (V, E 0 ) mit E 0 = {(u, v) | {u, v} ∈ E} ∪ {(v, u) | {u, v} ∈ E}. Wir verwenden für beide Probleme dasselbe K. Die Transformation ist offensichtlich in polynomial Zeit, da für jede Kante e ∈ E zwei Kanten e1 , e2 zu E 0 hinzugefügt werden und sonst keine weiteren Veränderungen an dem Graphen vorgenommen werden. Korrektheit: Im Folgenden bezeichnen wir mit Ce den Kreis der beiden Kanten e, e−1 ∈ E 0 der durch die Transformation von der Kante e ∈ E entsteht. Wer zeigen zu erst, das ein Vertex Cover V 0 der Größe K für G ein Feedback Vertex Set für G0 ist. Sei V 0 ⊂ V ein Vertex Cover von G. Es existiert somit zu jeder Kante in e ∈ E ein inzidenter Knoten v ∈ V 0 . Da der Knoten v überdeckt, überdeckt er auch den Zyklus Ce . Somit werden alle Zyklen Ce , e ∈ E von V 0 überdeckt. Sei C ein Zyklus der Länge mindestens drei. Dann existiert zu jeder Kante f ∈ E(C) eine inverse Kante f −1 ∈ E 0 . Die Kanten f und f −1 bilden einen Zyklus der schon von einem Knoten v 0 ∈ V 0 überdeckt wird und somit überdeckt v 0 auch C. Sei V 0 ⊂ V ein Feedback Arc Set in G0 . Wir zeigen das V 0 ein Vertex Cover für G ist. Die Menge V 0 überdeckt jeden gerichteten Zyklus in G0 und somit insbesondere jeden Zyklus Ce , damit wird auch jede Kante e ∈ E von einem Knoten v 0 ∈ V überdeckt. • Gegeben: Eine Menge S und eine Menge A = {A1 , A2 , . . . , An } von Teilmengen Ai von S. ˙ 1 = S, so dass kein Ai vollständig in S0 oder S1 enthalten Frage: Gibt es eine Partition S0 ∪S ist? Nutzen Sie das Problem 3-SAT zur Reduktion. Lösung: Wir zeigen Set-Splitting ∈ N P. Sei (S0 , S1 ) ein Zeuge zu einer Set-Splitting Instanz (S, A). Der Zeuge kann in O(Σni=1 |Ai ||S|) Zeit wie folgt überprüft werden. Es können in polynomial Zeit Validität des Zeugens überprüft werden. – Si ⊂ S – S0 ∪ S1 = – S0 ∪ S1 = S – Für jedes Ai kann in O(|Ai ||Sj |) Zeit überprüft werden, ob alle Element in Sj Zeit enthalten sind. Polynomiale Transformation: Im Folgenden bezeichnen wir mit U = {x : x ∈ U }. Wähle S = {f } ∪ U ∪ U . Die Menge A konstruieren wir wie folgt. Für jede Variable x ∈ U , setze Ax = {x, x}. Für eine Klausel Ci = (x ∨ y ∨ z) konstruiere Ai = {x, y, z, f } wobei, x, y, z ∈ U ∪ U . Die Transformation ist offensichtlich polynomial. Korrektheit der Transformation: Zu einer erfüllten 3-SAT Instanz konstruieren wir eine gültige Set-Splitting Instanz wie folgt: SFalse = {x ∈ U | x = False} ∪ {x ∈ U | x = True} ∪ {f } , STrue = {x ∈ U | x = True} ∪ {x ∈ U | x = False}. SFalse enthält somit die Literale die zu False auswerten und STrue enthält die Literale die zu True auswerten. Somit ist die Menge Ax in keiner der beiden Menge vollständig enthalten. Da in einer Klausel Ci mindestens ein Literal zu True auswertet, ist dieses Literal in STrue enthalten. Da f ∈ SFalse , ist keine Menge Ai vollständig in einer der beiden Mengen enthalten. ˙ 1 = S ein Zeuge einer Ja-Instanz (A, S) der Splitting-Set Problems. Sei ohne Sei S0 ∪S Beschränkung der Allgemeinheit f ∈ S0 . Wir weisen jedem Literal x ∈ S1 den Wert True (x = True, falls x ∈ U , x = False, falls x ∈ U ). In jeder Menge Ai existiert ein x, mit x ∈ S1 somit wertet jede Klausel zu wahr aus. Die Menge Ax stellt sicher, dass x und x eine konsistente Wahrheitsbelegung haben.