ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Ralph Keusch, Florian Meier HS 2016 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 12 Lösungsvorschlag zu Aufgabe 1 Wir zeigen zuerst, dass 3-SAT in N P liegt. Sei F = C1 ∧ . . . ∧ Cm eine gegebene 3-KNF, und sei φ eine gegebene Belegung für die Variabeln x1 , . . . , xn . Durch Einsetzten von φ in F kann in O(m) überprüft werden, ob jede Klausel von F erfüllt ist, also liegt das Problem in der Menge N P . Jetzt zeigen wir, dass E RFÜLLBARER S CHALTKREIS ≤ p 3-SAT gilt. Sei dazu C ein gegebener Schaltkreis auf Variabeln x1 , . . . , xn , und wir wollen herausfinden, ob es eine Belegung x gibt, so dass C ( x ) = 1. Es seien G1 , . . . , Gk die Gatter von C und Gz der Ausgabeknoten. Wir konstruieren nun eine 3-KNF F, die für jedes Gatter von C und jede Konstante höchstens vier Klauseln enthält. Zunächst denken wir daran, dass in einem Schaltkreis auch Konstanten 0 und 1 erlaubt sind. Dazu führen wir je eine Variable w0 und w1 ein. F soll die beiden Klauseln (w0 ) und (w1 ) enthalten. Damit ist sichergestellt, dass in jeder erfüllenden Belegung für F die Variable w0 mit 0 und w1 mit 1 belegt sind, das heisst die Variabeln entsprechen genau den gewünschten Werten. Nun führen wir für jedes Gatter Gi eine Variable yi ein. Wir unterscheiden nach dem Typ des Gatters: • Gi = Ga ∧ Gb : Wir erweitern F um die vier Klauseln ( a ∨ b ∨ yi ), ( a ∨ b ∨ yi ), ( a ∨ b ∨ yi ) und ( a ∨ b ∨ yi ), wobei a und b diejenigen Variabeln sind, die den Gattern Ga und Gb entsprechen (also xi , y j oder w` ). • Gi = Ga ∨ Gb : Wir erweitern F um die vier Klauseln ( a ∨ b ∨ yi ), ( a ∨ b ∨ yi ), ( a ∨ b ∨ yi ) und ( a ∨ b ∨ yi ). • Gi = ¬ Ga : Wir erweitern F um die beiden Klauseln ( a ∨ yi ) und ( a ∨ yi ). Schliesslich enthält F noch zusätzlich die Klausel (yz ), die dem Ausgabeknoten entspricht. Offensichtlich konnten wir F in polynomieller Zeit bezüglich der Grösse von C konstruieren, denn wir haben für jeden Knoten von C höchstens 4 Klauseln dazugefügt, plus eine Zusatzklausel für den Ausgabeknoten. Es bleibt zu zeigen, dass F erfüllbar ⇐⇒ C erfüllbar. Sei x eine beliebige Belegung der Variabeln, so dass F ( x ) = 1. Klarerweise gilt dann w0 = 0 und w1 = 1. Ebenso gilt • yi = a ∧ b für jedes Gatter Gi = Ga ∧ Gb , • yi = a ∨ b für jedes Gatter Gi = Ga ∨ Gb und • yi = ¬ a für jedes Gatter Gi = ¬ Ga , denn wir haben für jedes Gatter 4 respektive 2 Formeln geschrieben, welche die Wahrheitstabelle des Gatters in die KNF F übertragen. Ausserdem folgt aus F ( x ) = 1 dass yz = 1, da F ja die Klausel (yz ) enthält. Dies bedeutet aber gerade, dass der Ausgabeknoten des Schaltkreises mit 1 belegt ist. Setzen wir nun in den Schaltkreis die gleiche Belegung x ein, so bekommen wir wie gewünscht C ( x ) = 1. 1 Sei nun x eine Belegung so dass C ( x ) = 1. Wir übernehmen die Belegung von x in F, und setzen yz = 1, w1 = 1 und w0 = 0. Damit sind schon einige der Klauseln von F erfüllt - übrig bleiben die Klauseln, die den Gattern entsprechen. Da wir die Wahrheitstabelle der Gatter übertragen haben, ist es leicht festzustellen, dass jede mögliche Kombination, die in einem Gatter Gi und seinen Vorgängerknoten a und b (resp. a) auftritt, die entsprechenden 4 oder 2 Klauseln in F erfüllt. Und damit erhalten wir F ( x ) = 1. Lösungsvorschlag zu Aufgabe 2 a) Um zu entscheiden, ob G eine k-Clique besitzt, listet der naive Algorithmus alle (|Vk |) Teilmengen von V der Grösse k auf und überprüft für jede dieser Mengen, ob sie eine Clique bildet. Dabei muss jeweils die Existenz von (2k ) Kanten überprüft werden. Die Eingabegrös se ist ` = Θ(|V | + | E|), und die Laufzeit des Algorithmus ist Θ (|Vk |)(2k ) . Für festes k ist dies wegen (|Vk |) ≤ |V |k und |V | = O(`) polynomiell, für allgemeines k aber nicht: Mit √ (|Vk |) ≥ (|V |/k)k und ` = O |V |2 , d.h. |V | = Ω( `), ergibt sich z.B. für k = |V |/2 eine Laufzeit von √ √` Θ 2|V |/2 · |V |2 = Ω 2 ` , was nicht polynomiell ist. b) Offensichtlich ist C LIQUE in N P : wenn die Knotenmenge V 0 ⊆ V einer Clique in G als „Zertifikat“ vorliegt, lässt sich leicht in polynomieller Zeit überprüfen, dass G tatsächlich eine k-Clique enthält. Wir zeigen nun, dass 3-SAT ≤ p C LIQUE. Wir gehen davon aus, dass eine 3-SAT-Instanz F = C1 ∧ C2 ∧ · · · ∧ Ck mit k Klauseln gegeben ist. Für jedes r = 1, . . . , k besitzt Cr genau 3 Literale l1r , l2r , l3r . Die Eingabelänge ist offensichtlich proportional zu k. Wir konstruieren nun einen Graph G = (V, E), der genau dann eine k-Clique enthält, wenn die Formel F erfüllbar ist. Für jede Klausel Cr = (l1r ∨ l2r ∨ l3r ) enthält V die 3 Knoten v1r , v2r , v3r . Wir verbinden zwei Knoten vri und vsj genau dann mit einer Kante, wenn gilt: (i) vri und vsj stammen von verschiedenen Klauseln, d.h. r 6= s; (ii) die entsprechenden Literale sind miteinander verträglich, d.h. lir ist nicht die Negation von l js . Der so konstruierte Graph G hat 3k Knoten und ist k-partit. In einer erfüllenden Belegung von F besitzt jede Klausel Cr mindestens ein Literal lir mit dem Wahrheitswert 1. Die entsprechenden Knoten vri von G bilden dann eine k-elementige Menge von Knoten, in der je zwei Knoten vri 6= vsj durch eine Kante verbunden sind: Nach Konstruktion stammen sie aus zwei verschiedenen Klauseln von F, und da die zugehörigen Literale lir , l js beide den Wahrheitswert 1 haben, können sie nicht die Negation voneinander sein. Nach der Definition von G sind die beiden Knoten also durch eine Kante verbunden. Somit gibt es für jede erfüllende Belegung von F eine k-Clique in G. Umgekehrt hat jede k-Clique von G genau einen Knoten in jeder Partitionsklasse, und indem man die diesen Knoten entsprechenden Literale in F auf 1 setzt, erhält man eine erfüllende Belegung von F. (Da alle Kanten vorhanden sind, kann das Problem, dass eine Variable gleichzeitig mit 0 und 1 belegt werden soll, nicht auftreten.) Es gibt also genau dann eine erfüllende Belegung von F, wenn es eine k-Clique in G gibt. Zudem kann man den einer gegebenen 3-SAT-Formel entsprechenden Graphen G leicht in polynomieller Zeit konstruieren (man liest die Knotenmenge aus F ab und überprüft 2 für jede der (3k 2 ) möglichen Kanten, ob sie vorhanden ist; der Zeitaufwand ist also O k , quadratisch in der Eingabelänge). Damit ist gezeigt, dass C LIQUE N P -vollständig ist. 2 Lösungsvorschlag zu Aufgabe 3 Wir zeigen zuerst, dass A LMOST 3-SAT in N P liegt. Sei F = C1 ∧ . . . ∧ Cm eine gegebene 3-KNF, und sei φ eine gegebene Belegung für die Variabeln x1 , . . . , xn . Durch Einsetzten von φ in F kann in O(m) überprüft werden, ob genau eine Klausel nicht erfüllt ist. Es bleibt zu zeigen, dass 3-SAT ≤ p A LMOST 3-SAT. Für jede Formel F über x1 , . . . , xn können wir durch Hinzunahme von xn+1 in konstanter Zeit die Formel F 0 := F ∧ ( xn+1 ) ∧ ( xn+1 ) konstruieren. Falls es eine Belegung φ gibt, welche F erfüllt, so erfüllt φ zusammen mit xn+1 = 1 genau eine Klausel von F 0 nicht. Umgekehrt gilt, dass für jede Belegung der Variablen x1 . . . , xn+1 genau eine der zwei Klauseln ( xn+1 ) oder ( xn+1 ) nicht erfüllt ist. Gibt es also eine Belegung welche genau eine Klausel von F 0 nicht erfüllt, so erfüllt diese Belegung alle Klauseln in F. 3