Musterlösung 12 - Cadmo

Werbung
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
Herunterladen