u u v z w y v z x w y x Abbildung 1: Reduktion: CLIQUE zu VERTEX-COVER. links: Clique V 0 = {u, v, x, y}. rechts:der Graph Ḡ mit VC V \ V 0 = {w, z} Definition 0.0.1 (Vertex Cover (VC)). Gegeben: Ein ungerichteter Graph G = (V, E), k ∈ N. Frage: Existiert eine Knotenüberdeckung der Grösse k? D.h. ∃V 0 ⊂ V , |V 0 | = k, ∀(u, v) ∈ E: u ∈ V 0 oder v ∈ V 0 (oder beides). Satz 0.0.2. VC ist NP-vollständig. Beweis. 1) Wir zeigen zunächst, dass VC in NP liegt. Gegeben sei hierzu ein Graph G = (V, E) und ein k ∈ N. Ein Zeuge ist V 0 ⊂ V . Der Verifikationsalgorithmus bestätigt, ob |V 0 | = k und überprüft, ob für jeder Kante(u, v) ∈ E gilt, dass u ∈ V 0 oder v ∈ V 0 . Dies kann offenbar in O(|E|) durchgeführt werden. 2) Nun zeigen wir, dass VC NP-schwer ist, indem wir CLIQUE darauf reduzieren, d.h. CLIQUE≤p VC (Zur Erinnerung: CLIQUE Gegeben: Ein ungerichteter Graph G = (V, E) Frage: Existiert ein vollständiger Teilgraph (Clique) der Grösse k?) In der Reduktion konstruieren wir in polynomieller Zeit aus einer Eingabe (G, k) für CLIQUE eine Eingabe (G0 , k 0 ) für VC, sodass gilt: G enthält eine k-Clique ⇔ G0 hat einen VC der Grösse k 0 . Wir wählen als G0 das Komplement Ḡ von G und k 0 = n − k mit n = |V |. (Erinnerung: Ḡ = (V, Ē) mit Ē = {(u, v)|(u, v) ∈ / E}). Dies ist in polynomieller Zeit möglich. Es bleibt nun also noch zu zeigen: G enthält eine k-Clique ⇔ Ḡ hat einen VC der Grösse n−k. Wir betrachten hierzu V 0 ⊂ V , eine k-Clique von G. Per Definition heißt das: ∀u, v ∈ V 0 : (u, v) ∈ E und |V 0 | = k. Da Ē das Komplement von E ist, bedeutet dies nichts anderes als: ∀u, v ∈ V 0 : (u, v) ∈ / Ē und |V 0 | = k . Das heißt, entweder u oder v liegen nicht 0 in V , ∀(u, v) ∈ Ē : u ∈ V \V 0 oder v ∈ V \V 0 (oder Beides) und |V \V 0 | = n−k. Es wird also jede Kante aus Ē von V \ V 0 bedeckt, was genau der Definition eines VC entspricht: V \ V 0 ist n − k-VC in Ḡ. Definition 0.0.3 (SUBSET-SUM). Gegeben: Eine Menge S = {a1 , . . . , ar } ⊂ N und eine Zahl b ∈ N. P Frage: Existiert eine Teilmenge S 0 ⊂ S mit a∈S a = b? Satz 0.0.4. SUBSET-SUM ist NP-vollständig. Beweis. 1) Dass SUBSET-SUM ∈ NP ist, wurde bereits gezeigt. 2) Nun zeigen wir, dass SUBSET-SUM NP-schwer ist, durch VERTEX-COVER≤p SUBSETSUM. Die Reduktion funktioniert wie folgt: Wir konstruieren in polynomieller Zeit aus einer Eingabe (G, k) für VC eine Eingabe a1 , . . . , an , b ⊂ N für 1 v1 e5 e0 v2 e3 e4 e2 v0 e1 v4 v3 Abbildung 2: Der Graph V ertex − Cover mit Vertex-Cover {v0 , v1 , v2 } x0 x1 x2 x3 x4 y0 y1 y2 y3 y4 y5 b 1 1 1 1 1 0 0 0 0 0 0 k e5 0 1 0 0 1 1 0 0 0 0 0 2 e4 1 1 0 0 0 0 1 0 0 0 0 2 e3 1 0 1 0 0 0 0 1 0 0 0 2 e2 0 0 1 1 0 0 0 0 1 0 0 2 e1 1 0 0 1 0 0 0 0 0 1 0 2 e0 1 0 0 0 1 0 0 0 0 0 1 2 v0 v1 v2 v3 v4 Tabelle 1: Die fertige Matrix zum Graphen V ertex − Cover. SUBSET-SUM, sodass gilt: G hat einen VC der Grösse k ⇔ ∃I ⊂ {1, . . . , n} P mit i∈I ai = b. Man betrachte hierzu die Inzidenzmatrix von G: Sei ( V = {v0 , . . . , vn−1 } und 0 falls vj ∈ ei E = {e0 , . . . , em−1 }, M = (bij ) i=m−1,...,0 mit bij = j=0,...,n−1 1 sonst M wird zuerst um eine Einheitsmatrix Em mit Dimension m nach unten erweitert. Dann wird eine zusätzliche linke Spalte hinzugefügt, deren oberen n Einträge Einsen enthalten und die unteren m Nullen. Zuletzt wird die unterste Zeile angehängt, die k als ersten Eintrag und an den übrigen Stellen Zweien enthält. Alle Zeilen der Matrix werden nun als 4äre Zahlen interpretiert, wobei k beliebige Werte aus N annehmen darf. Nun identifizieren wir die SUBSET-SUM Eingabe S = {a0 , . . . , ar } mit {x0 , . . . , xn−1 , y0 , . . . , ym−1 }, wobei Pm−1 xi = 4m + j=0 bij ∗ 4j y j = 4j Pm−1 und b = k ∗ 4m + j=0 2 ∗ 4j Dies ist in polynomieller Zeit möglich. Wir zeigen nun die Behauptung für die so konstruierte Eingabe: ⇒: Sei V 0 ⊂ V mit V 0 = {vi1 , . . . , vik } ein VC von G. Wählt man nun ein S 0 ⊂ S mit S 0 = {xi1 , . . . , xik } ∪ {yi genau ein Knoten ei ist in V 0 }, so ist nach 2 Konstruktion P a∈S 0 a = b. ⇐: Sei umgekehrt S 0 = {xi1 , . . . , xik } ∪ {yj1 , . . . , yjl } sodass ist V 0 = {vi1 , . . . , vik } ein VC von G. P a∈S 0 a = b. Dann Definition 0.0.5 (PARTITION). Gegeben: EineP Menge R =P{a1 , . . . , ar } ⊂ ˙ 2 mit a∈R a = a∈R a? N. Frage: Existiert eine Zerlegung R = R1 ∪R 1 2 Satz 0.0.6. PARTITION ist NP-vollständig. Beweis. 1) Dass PARTITION ∈ NP ist, wurde schon gezeigt. 2) Nun zeigen wir noch, dass PARTITION auch NP-schwer ist durch SUBSET-SUM≤p PARTITION. Um die Reduktion durchzuführen,konstruieren wir also polynomieller Zeit aus einer Eingabe (S, b) R für PARTITION, sodass Pfür SUBSET-SUM eine EingabeP P ˙ 2 mit a∈R a = a∈R a. gilt: ∃S 0 ⊂ S mit a∈S 0 a = b ⇔ ∃R = R1 ∪R 1 2 Wir wählen hierzu R = {a0 , . . . , ar , x, y} = S ∪ {x, y} wobei x = 2P ∗ A − b und y = A + b A = a∈S 0 a Dies ist in polynomieller Zeit möglich. Wir beobachten nun Folgendes: x und y können nicht in der gleichen Menge der P Zerlegung von R liegen, denn es ist x + y = 2 ∗ A − b + A − b = 3 ∗ A, aber a∈R a = A + x + y = 4 ∗ A, jede Zerlegungsmenge muss also die Grösse 2 ∗ A haben. Demnach müssen R1 und R2 folgende Form haben: R1 = S 0 ∪ {x} und R2 = S \ S 0 ∪ {y} für ein S 0 ⊂ S. Wir zeigen jetzt die Behauptung für die so konstruierte Eingabe: P P 0 0 ⇒: Für S ⊂ S mit 0 a = b wähle R1 = S ∪ {x}. Dann ist a∈S a∈R1 a = P a∈S 0 a + 2 ∗ A − b = 2 ∗ A. ⇐: Aus der Beobachtung folgt, dass R1 und R2 von genau dieser Form sein müssen, d.h. S 0 ist Lösung für SUBSET-SUM. Definition 0.0.7 (3-FÄRBBARKEIT). Gegeben: Ein ungerichteter Graph G = (V, E). Frage: Ist G 3-färbbar? Definition 0.0.8 (k-Färbung). Sei G = (V, E) ungerichteter Graph. Eine Funktion c : V → {1, . . . , k} heißt k-Färbung von G, wenn gilt: ∀(u, v) ∈ E : c(u) 6= c(v). Satz 0.0.9. 3-FÄRBBARKEIT ist NP-vollständig. Beweis. Wir zeigen zunächst, dass 3-FÄRBBARKEIT in NP liegt. Ein Zeuge ist eine Färbung c mit |c| ∈ O(n). Ob c eine gültige Färbung ist lässt sich einfach in O(|E|) Zeit überprüfen. Nun zeigen wir noch, dass 3-FÄRBBARKEIT NPschwer ist durch 3-SAT≤p 3-FÄRBBARKEIT. Als Reduktion konstruieren wir in polynomieller Zeit aus einer Eingabe Φ für 3-SAT eine Eingabe G = (V, E) für 3-FÄRBBARKEIT, sodass gilt: G ist 3-färbbar ⇔ ∃ erfüllende Belegung φ vpn Φ. Hierbei ist Φ = c1 ∧ . . . ∧ cm mit Klauseln ci = xi1 ∨ xi2 ∨ xi3 und Literalen xij ∈ {v1 , . . . , vm , v¯1 , . . . , v¯m }. Eine Belegung φ ist eine Abbildung φ : {v1 , . . . , vm } → 0, 1. 3 False True T F Base B v¯3 v1 v3 v¯1 v2 v¯2 Abbildung 3: 1. Schritt der Reduktion für 3-Färbung Wir konstruiere nun G in zwei Schritten: 1) Sei G = (V, E) ein Graph mit V = {v1 , . . . , vm , v¯1 , . . . , v¯m , T, F, B} Man assoziiert also die Knoten des Graphen mit den Variablen und ihren Negationen. T, F und B sind spezielle Knoten, die mit True, False und Base bezeichnet werden. Zuerst verbinden wir jedes Paar von Knoten vi und v¯i mit einer Kante und jeden von ihnen mit Base. Ebenso verbinden wir True, False und Base zu einem Dreieck. Dieser Graph hat einige hilfreiche Eigenschaften: (i) In jeder 3-Färbung von G müssen vi und v¯i verschiedene Farben haben, und beide müssen sich von B unterscheiden. (ii) In jeder 3-Färbung von G müssen die Knoten T,F und B die 3 verschiedenen Farben annehmen, insofern können wir die Farben als True, False und Base-Farbe auffassen. Insbesondere bekommen die Knoten vi und v¯i die Farben True oder False. Wir haben jetzt einen Graph G, in dem jede 3-Färbung eine gültige Belegung der Variablen in 3-SAT definiert. 2)Nun müssen wir G so erweitern, dass nur erfüllende Belegungen (d.h. solche die als Antwort true haben) von Φ zu einer 3-Färbung führen. Sei ci = xi1 ∨xi2 ∨xi3 eine beliebige Klausel von Φ. ci ist erfüllt, wenn mindestens eins der Literale mit true belegt ist. (Es muss also gelten: ¬(φ(xi1 ) = φ(xi2 ) = φ(xi3 ) = f alse) Wir benötigen also einen Teilgraphen, den wir so in G einbauen, dass jede 3-Färbung von G zu einer wahren Belegung von mindestens einem der Knoten vi1 , vi2 , vi3 führt. Der in Abbildung 4 gezeigte Teilgraph wird in G an den fünf markierten Knoten eingefügt, indem T, F, vi1 , vi2 und vi3 mit denselbigen im schon bestehenden Graphen G identifiziert werden. Dies wird füer alle Klauseln aus Φ durchgeführt. Diesen Graphen nennen wir G’. Dies ist in polynomieller Zeit möglich. Nach obiger Konstruktion gilt also: G0 ist 3-färbbar ⇔ ∃ erfüllende Belegung φ von Φ. Satz 0.0.10 (VIERFARBEN-THEOREM). Alle planaren Graphen lassen sich mit 4 Farben färben. Bemerkung. Planaren Graphen lassen sich in der Ebene zeichnen, ohne dass sich ihre Kanten kreuzen. Für k ≥ 4 ist das k-Färbproblem für planare Graphen trivial. 4 vi2 F T vi1 vi3 Abbildung 4: 2.Schritt: Dieser Teilgraph wird an den bereits bestehenden Graphen angehanngt. Der obere Knoten kann nicht gefärbt werden, wenn alle 3 Literale False gefärbt werden. 5