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 svorschlag
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 = {s 1,..., s n } in den Teig geben muss. Außerdem hat er eine Menge von Zutaten Z = {z 1,..., z m }. Jede Zutat z i Z besteht aus verschiedenen Inhaltsstoffen z i S, wobei mi=0 z i = S. Doktor Meta stellt sich das Plätzchenrezeptproblem PRP: Gibt es eine Teilmenge Z k Z der Größe höchstens k, so dass ζ Z k ζ = 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 V mit V k so, dass für alle Kanten {u, v} E auch u V oder v V (oder beide)? i.) a) Betrachten Sie zum Einstieg das Rezept mit den Inhaltsstoffen und den Zutaten S = {Aceton, Butan, Kalzium, Propan, Rum, Schwefelsäure} Z ={ Grog = {Aceton, Rum, Schwefelsäure}, Benzin = {Propan, Butan, Kalzium}, Zahnpasta = {Aceton, Kalzium, Schwefelsäure}, X = {Aceton, Rum} } Finden Sie eine Zutatenmenge Z 2 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 möglichst nah ab. Verwenden Sie die Landau-Notation 1. (1P) 1 O-Notation. ii
svorschlag i.) a) Z 2 = {Grog, Benzin} b) ii.) PRP NP: Gegeben eine Menge von Zutaten kann man einfach die Liste durchgehen, ob alle Stoffe enthalten sind. 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 Z min das minimale Vertex Cover gegeben und löst somit das Entscheidungsproblem, ob es ein Vertex Cover der Größe k gibt. 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 für das PRP mit Komplexität O(n). Um die Güte in Abhängigkeit der optimalen 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 max s S Zutaten(s). Damit ist die maximal um den Faktor l schlechter als die optimale. 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 v 1, v 2,..., v m, sodass gilt v 1 = v m. Für i = 1,..., m 1 ist (v i, v i+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 v 1,..., v m, so dass gilt v 1 = v m. Für i = 1,..., m 1 ist (v i, v i+1 ) E. Jedes v V kommt in der Folge v 1,..., v m 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) 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) svorschlag 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 v 0, so muss ein Pfad über unmarkierte Kanten zu v 0 zurückführen, denn für jeden Knoten ausser v 0 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 v 0 (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 G = (V, E ) welcher genau dann einen gerichteten Hamiltonkreis besitzt wenn G einen ungerichteten Hamiltonkreis besitzt. Wir setzten V = V und für jede ungerichtete Kante e = (v 1, v 2 ) in E fügen wir zwei gerichtete Kanten e 1 = (v 1, v 2 ) und e 2 = (v 2, v 1 ) in E ein. Jeder Hamiltonkreis v 1,..., v n in G ist nun auch ein Hamiltonkreis in G und umgekehrt. iii.) Sei G = (V, E) ein gerichteter Graph. Wir konstruieren einen ungerichteten Graphen G = (V, E ) welcher genau dann einen gerichteten Hamiltonkreis besitzt wenn G einen ungerichteten Hamiltonkreis besitzt. Für jeden Knoten v V fügen wir drei Knoten v 1, v 2 und v 3 in E. Wir verbinden v 2 mit v 1 und v 3, v 1 mit allen Knoten von welchen iv
Eingabe : Graph G = (V, E) Ergebnis : Ein Eulerkreis v 1,..., v n ) Beginn Wähle einen Startknoten v 0 V ; Setze v := v 0 ; 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 = v 0 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 v 0 := v; wenn v v 0 und keine unmarkierten Kanten inzident zu v sind dann Zurück ; zurück C Algorithmus 1 : HORST eingehende Kanten kommen und v 3 mit allen Knoten zu welchen ausgehende Kanten führen v v 1 v 2 v 3 Der Knoten v 2 stellt nun sicher, dass ein Kreis den Knoten v 1 über v 2 und v 3 verlässt, ansonsten wäre v 2 nichtmehr erreichbar. Jeder Kreis erreicht also den simulierten Knoten v über v 1 und verlässt ihn über v 3. Damit besitzt G genau dann einen Hamiltonkreis wenn G 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) svorschlag i.) 1 2 3 5 7 ii.) Sei G = (V, E) ein 3-COLOR-Instanz. Wir konstruieren nun aus G einen Graphen G, 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 v 1,... v k die Knoten dieser k-clique. v 1,..., v k 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 v 4,..., v k. Die Knoten in V können also nurnoch mit drei verschiedenen Farben eingefärbt werden, nämlich den Farben von v 1, v 2 und v 3. Damit ist G genau dann k-färbbar wenn G 3-färbbar ist. 4 6 Aufgabe 4 (K) (4 Punkte): Subgraphisomorphie 8 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 G 1 = (V 1, E 1 ) und G 2 = (V 2, E 2 ). Enthält G 1 einen Subgraphen, der isomorph zu G 2 ist? Gibt es also V V 1 und E E 1 derart, dass V = V 2, E = E 2 und existiert außerdem eine Bijektion f : V 2 V, so dass {u, v} E 2 {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) svorschlag 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 G 1 = G und G 2 = K k, wobei K k 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: 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 zurück k; Die Schleife wird k mal durchlaufen. Ihr Rumpf hat eine polynomielle Laufzeit. Damit hat auch der Algorithmus polynomielle Laufzeit. b) Ja: vii
Eingabe : Graph G = (V, E), k N Ergebnis : Clique V V mit V = k Beginn wenn CLIQUE(G, k) = Nein dann zurück E V := ; für v V tue wenn CLIQUE(V \ {v}, k) = Ja dann V := V \ {v}; sonst V := V {v}; zurück V 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 Geben Sie eine Dreifärbung des unten gegebenen Graphen an. (1P) viii
ix
svorschlag x