Institut für Kryptographie und Sicherheit Prof. Dr. Jörn Müller-Quade Nico Döttling Dirk Achenbach Tobias Nilges Vorlesung Theoretische Grundlagen der Informatik Übungsblatt Nr. 5 Lösungsvorschlag Aufgabe 1 (K) (4 Punkte): Das Plätzchenrezeptproblem Der ebenso geniale wie turingmächtige Wissenschaftler und Superbösewicht Doktor Meta möchte Weihnachtsplätzchen backen. Sein Rezept sieht vor, dass er eine Menge von Stoffen S = {s1 , . . . , sn } in den Teig geben muss. Außerdem hat er eine Menge von Zutaten Z = {z1 , . . . , zm }. Jede Zutat zi ∈ Z besteht aus verschiedenen Inhaltsstoffen zi ⊆ S, wobei Sm i=0 zi = S. Doktor Meta stellt sich das Plätzchenrezeptproblem PRP: Gibt es eine Teilmenge Zk ⊆ Z der S Größe höchstens k, so dass ζ∈Zk ζ = S? Aus seinem lange zurückliegenden Informatikstudium weiß Doktor Meta, dass das Problem VERTEX COVER NP-vollständig ist: Gegeben einen ungerichteten Graphen G = (V, E) und k ∈ N, existiert eine Teilmenge der Knoten V 0 ⊆ V mit |V 0 | ≤ k so, dass für alle Kanten {u, v} ∈ E auch u ∈ V 0 oder v ∈ V 0 (oder beide)? i.) a) Betrachten Sie zum Einstieg das Rezept mit den Inhaltsstoffen und den Zutaten Z ={ ng S = {Aceton, Butan, Kalzium, Propan, Rum, Schwefelsäure} Grog = {Aceton, Rum, Schwefelsäure}, Benzin = {Propan, Butan, Kalzium}, Lö su Zahnpasta = {Aceton, Kalzium, Schwefelsäure}, X = {Aceton, Rum} } Finden Sie eine Zutatenmenge Z2 der Größe höchstens k = 2, die ganz S abdeckt. (0,5P) b) Betrachten Sie nun beispielhaft das Haus vom Nikolaus: Finden Sie ein Vertex Cover des gegebenen Graphen der Größe 3. (0,5P) ii.) Zeigen Sie: PRP ist NP-vollständig. Zeigen Sie dazu zunächst, dass PRP ∈ NP. Reduzieren Sie dann VERTEX COVER auf PRP. (2P) iii.) Doktor Meta ist in Weihnachtsstimmung und gibt sich ausnahmsweise mit Näherungslösungen zufrieden. Überlegen Sie sich einen Approximationsalgorithmus für PRP mit polynomieller Laufzeit. Schätzen Sie den Aufwand des Algorithmus und die Güte seiner Lösung möglichst nah ab. Verwenden Sie die Landau-Notation1 . (1P) 1 „O-Notation“. ii Lösungsvorschlag i.) a) Z2 = {Grog, Benzin} b) ii.) PRP ∈ NP: Gegeben eine Menge von Zutaten kann man einfach die Liste durchgehen, ob alle Stoffe enthalten sind. ng VERTEX COVER ≤T PRP: Wir transformieren eine Instanz von VERTEX COVER in eine Instanz des PRP, indem wir die Kanten als Inhaltsstoffe nutzen und die Knoten als Zutaten. Dann ist durch Zmin das minimale Vertex Cover gegeben und löst somit das Entscheidungsproblem, ob es ein Vertex Cover der Größe ≤ k gibt. Lö su iii.) Wir nutzen folgenden Approximations-Alogrithmus: wir wählen einen beliebigen unmarkierten Inhaltsstoff aus und speichern uns alle Zutaten, die diesen Stoff enthalten. Dann markieren wir alle Inhaltsstoffe, die durch die Zutaten abgedeckt werden. Diesen Schritt wiederholen wir so oft, bis es keinen unmarkierten Inhaltsstoff mehr gibt. Die auf diese Weise gespeicherten Zutaten decken also die Menge S ab. Mit diesem Algorithmus erhalten wir garantiert eine Lösung für das PRP mit Komplexität O(n). Um die Güte in Abhängigkeit der optimalen Lösung zu bestimmen, betrachten wir den schlimmsten Fall der eintreten kann. Dies passiert, falls mit den zu einem Inhaltsstoff zugehörigen Zutaten nur gemeinsame Inhaltsstoffe hinzukommen, sodass keine anderen Inhaltsstoffe gestrichen werden. Die Anzahl der unnötig hinzugefügten Zutaten ist l ≤ maxs∈S |Zutaten(s)|. Damit ist die Lösung maximal um den Faktor l schlechter als die optimale Lösung. Aufgabe 2 (K) (4 Punkte): Kreise auf Graphen Zur Erinnerung: Ein gerichteter Graph G besteht aus einer endlichen Menge V von Knoten und einer Menge E ⊆ V × V von Kanten; eine Kante ist also ein geordnetes Paar zweier Knoten. In einem ungerichteten Graphen sind Kanten ungeordnete Paare zweier Knoten. Ein Eulerkreis für einen Graphen G = (V, E) ist eine Folge von Knoten v1 , v2 , . . . , vm , sodass gilt • v1 = vm . • Für i = 1, . . . , m − 1 ist (vi , vi+1 ) ∈ E, und: jede Kante in E kommt genau einmal in dieser Folge von Kanten vor. iii Ein Eulerkreis ist also eine Rundreise durch einen Graphen, auf welcher jede Kante genau einmal auftaucht. Das Eulerkreis-Suchproblem SEARCH-EULERKREIS besteht darin, für einen gegebenen Graphen G = (V, E) einen Eulerkreis zu berechnen, falls ein solcher existiert. Ein Hamiltonkreis für einen Graphen G = (V, E) ist eine Folge von Knoten v1 , . . . , vm , so dass gilt • v1 = vm . • Für i = 1, . . . , m − 1 ist (vi , vi+1 ) ∈ E. • Jedes v ∈ V kommt in der Folge v1 , . . . , vm genau einmal vor. Das Hamiltonkreis-Entscheidungsproblem HAMILTON besteht darin, festzustellen, ob ein gegebener Graph G = (V, E) einen Hamiltonkreis besitzt. i.) Zeigen Sie: SEARCH-EULERKREIS ∈ P . (2P) ng ii.) Zeigen Sie: Das Hamiltonkreisproblem für gerichtete Graphen ist mindestens so schwer wie das Hamiltonkreisproblem für ungerichtete Graphen. (1P) iii.) Zeigen Sie: Das Hamiltonkreisproblem für ungerichtete Graphen ist mindestens so schwer wie das Hamiltonkreisproblem für gerichtete Graphen. (1P) Lösungsvorschlag Lö su i.) Algorithmus HORST berechnet für einen gegebenen Graphen G = (V, E) einen Eulerkreis (falls ein solcher existiert). HORST läuft in Linearzeit (und ist damit in P): In jeder Iteration der Schleife wird eine Kante e ∈ E markiert und jede Kante wird höchsten einmnal markiert. Damit läuft der Algorithmus in O(|E|). HORST ist korrekt: Nach dem Euler-Kriterium existiert genau dann ein Eulerkreis, wenn jeder Knoten geraden Grad besitzt. Beginnt ein Pfad also an einem Knoten v0 , so muss ein Pfad über unmarkierte Kanten zu v0 zurückführen, denn für jeden Knoten ausser v0 zu welchem eine unmarkierte Kante hinführt, muss auch eine unmarkierte Kante wieder wegführen (da jeder Knoten v geraden Grad besitzt). Daher endet der Pfad zwangsläufig bei v0 (da dies der einzige Knoten mit einer ungeraden Anzahl an nichtmarkierten Kanten ist). Weiterhin bleiben Kreise durch das Einfügen von Unterkreisen erhalten. Der Algorithmus terminiert erst wenn keine unmarkierten Kanten mehr existieren. ii.) Sei G = (V, E) ein ungerichteter Graph. Wir konstruieren einen gerichteten Graphen G0 = (V 0 , E 0 ) welcher genau dann einen gerichteten Hamiltonkreis besitzt wenn G einen ungerichteten Hamiltonkreis besitzt. Wir setzten V 0 = V und für jede ungerichtete Kante e = (v1 , v2 ) in E fügen wir zwei gerichtete Kanten e1 = (v1 , v2 ) und e2 = (v2 , v1 ) in E 0 ein. Jeder Hamiltonkreis v1 , . . . , vn in G ist nun auch ein Hamiltonkreis in G0 und umgekehrt. iii.) Sei G = (V, E) ein gerichteter Graph. Wir konstruieren einen ungerichteten Graphen G0 = (V 0 , E 0 ) welcher genau dann einen gerichteten Hamiltonkreis besitzt wenn G einen ungerichteten Hamiltonkreis besitzt. Für jeden Knoten v ∈ V fügen wir drei Knoten v1 , v2 und v3 in E 0 . Wir verbinden v2 mit v1 und v3 , v1 mit allen Knoten von welchen iv Lö su ng Eingabe : Graph G = (V, E) Ergebnis : Ein Eulerkreis v1 , . . . , vn ) Beginn Wähle einen Startknoten v0 ∈ V ; Setze v := v0 ; Setze C := [ ]; Setze i := 1; solange Unmarkierte Kanten existieren tue Wähle eine umarkierte Kante e ∈ E welche mit v inzident ist und markiere e; Füge v in die Folge C an der Stelle i ein ein.; Setze v auf den anderen Endknoten von e; Setze i := i + 1; wenn v = v0 und unmarkierte Kanten existieren dann Suche einen Knoten v ∈ C welcher inzident zu einer nichtmarkierten Kante ist; Sei i der Index von v in der Liste C; Setze v0 := v; Ende wenn v 6= v0 und keine unmarkierten Kanten inzident zu v sind dann Zurück ⊥; Ende Ende zurück C Ende Algorithmus 1 : HORST eingehende Kanten kommen und v3 mit allen Knoten zu welchen ausgehende Kanten führen v v1 v2 v3 Der Knoten v2 stellt nun sicher, dass ein Kreis den Knoten v1 über v2 und v3 verlässt, ansonsten wäre v2 nichtmehr erreichbar. Jeder Kreis erreicht also den simulierten Knoten v über v1 und verlässt ihn über v3 . Damit besitzt G genau dann einen Hamiltonkreis wenn G0 einen Hamiltonkreis besitzt. Aufgabe 3 (K) (4 Punkte) Das Problem k-COLOR ist folgendermaßen definiert. Gegeben sei ein Graph G = (V, E). Frage: Lassen sich die Knoten so mit k Farben einfärben, sodass je zwei adjazente Knoten (also Knoten v u, v ∈ V mit (u, v) ∈ E) unterschiedlich gefärbt sind? i.) Zeichnen Sie das Haus vom Nikolaus ohne Absetzen. (1P) ii.) Zeigen Sie: Für jede Konstante k ≥ 3 ist das k-COLOR-Problem mindestens so schwer wie das 3-COLOR-Problem. (3P) Lösungsvorschlag 2 3 4 1 ng 5 8 Lö su 7 6 i.) ii.) Sei G = (V, E) ein 3-COLOR-Instanz. Wir konstruieren nun aus G einen Graphen G0 , welcher genau dann k-färbbar ist wenn G 3-färbbar ist. Zunächst fügen wir zu G k neue Knoten hinzu und verbinden diese alle miteinander, wir fügen also eine k-Clique hinzu. Seien v1 , . . . vk die Knoten dieser k-Clique. v1 , . . . , vk dient uns nun als Farbpalette: Wird dieser Graph mit k Farben eingefärbt, so taucht jede Farbe in dieser k-Clique exakt einmal auf. Nun verbinden wir die jeden Knoten in V mit v4 , . . . , vk . Die Knoten in V können also nurnoch mit drei verschiedenen Farben eingefärbt werden, nämlich den Farben von v1 , v2 und v3 . Damit ist G0 genau dann k-färbbar wenn G 3-färbbar ist. Aufgabe 4 (K) (4 Punkte): Subgraphisomorphie Aus der Vorlesung kennen Sie das Problem CLIQUE in der Entscheidungsvariante: Gegeben ist ein Graph G = (V, E) und eine natürliche Zahl k ∈ N. Gibt es eine Clique der Größe k in G? (Eine Clique ist ein vollständig verbundener Graph.) i.) Betrachten Sie außerdem das Problem SUBGRAPHISOMORPHIE: Gegeben sind zwei Graphen G1 = (V1 , E1 ) und G2 = (V2 , E2 ). Enthält G1 einen Subgraphen, der isomorph zu G2 ist? Gibt es also V ⊆ V1 und E ⊆ E1 derart, dass |V | = |V2 |, |E| = |E2 | und existiert außerdem eine Bijektion f : V2 → V , so dass {u, v} ∈ E2 ⇔ {f (u), f (v)} ∈ E? vi Zeigen Sie: SUBGRAPHISOMORPHIE ist NP-vollständig, wenn CLIQUE NP-vollständig ist? (1,5P) ii.) Stellen Sie sich nun vor, Sie verfügen über ein CLIQUE-Orakel. a) Zeigen Sie: Die Optimierungsvariante von CLIQUE ist dann in P . Das heißt also, es existiert ein Polynomialzeitalgorithmus, der das größte k findet, so dass eine Clique der Größe k in G existiert. (1P) b) Können Sie einen Polynomialzeitalgorithmus angeben, der einen Zeugen dafür findet, wenn ein gegebener Graph eine k-Clique enthält? (1,5P) Lösungsvorschlag ng i.) Wir zeigen, dass wir eine gegebene Instanz von CLIQUE (in polynomieller Zeit) so transformieren können, dass sie eine Instanz von SUBGRAPHISOMORPHIE ist, die genau dann eine Ja-Instanz ist, wenn die CLIQUE-Instanz eine Ja-Instanz ist: Wir setzen G1 = G und G2 = Kk , wobei Kk der vollständig verbundene Graph mit k Knoten ist. ii.) Wir stellen uns vor, wir verfügen über ein CLIQUE-Orakel. Dieses aufzurufen, koste uns polynomiell viel Zeit. Wir nennen es CLIQUE. a) Wir beschreiben den Algorithmus und analysieren dessen Laufzeit: Lö su Eingabe : Graph G = (V, E) Ergebnis : k, die Größe der größten Clique in G Beginn k := 0; solange CLIQUE(G, k + 1) = Ja tue k := k + 1 Ende zurück k; Ende Die Schleife wird k mal durchlaufen. Ihr Rumpf hat eine polynomielle Laufzeit. Damit hat auch der Algorithmus polynomielle Laufzeit. b) Ja: vii ng Eingabe : Graph G = (V, E), k ∈ N Ergebnis : Clique V 0 ⊆ V mit |V 0 | = k Beginn wenn CLIQUE(G, k) = Nein dann zurück E Ende V 0 := ∅; für v ∈ V 0 tue wenn CLIQUE(V \ {v}, k) = Ja dann V := V \ {v}; Ende sonst V 0 := V 0 ∪ {v}; Ende Ende zurück V 0 Ende Der Algorithmus geht die Knoten des Graphen einzeln durch und löscht sie testweise. Ist nach dem Löschen eines Knoten immer noch eine k-Clique im Graph, gehört der gelöschte Knoten nicht dazu. Andernfalls schon. Aufgabe 5 (K) (1 Punkt): Bonusaufgabe Lö su Geben Sie eine Dreifärbung des unten gegebenen Graphen an. (1P) viii ix ng Lö su Lö su ng Lösungsvorschlag x