Komplexitaet-WS-2010.. - Parallele Systeme
Komplexitaet-WS-2010.. - Parallele Systeme
Komplexitaet-WS-2010.. - Parallele Systeme
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Komplexitätstheorie - Wintersemester 2010/2011 83<br />
Lemma 4.5.7 Polynomielle Reduktion von KÜ, CLIQUE und UM<br />
Sei G = (V,E) ein Graph und sei V ′ ⊆ V. Dann sind äquivalent:<br />
(i) V ′ ist Knotenüberdeckung.<br />
(ii) V \V ′ ist Unabhängigkeitsmenge.<br />
(iii) V \V ′ ist Clique im Komplementgraph G C = (V,(V×V)\E) von G.<br />
Beweis: Sehr leicht zu sehen. 4.5.7<br />
Also zieht jeder Algorithmus zur Lösung eines der Probleme KÜ, CLIQUE oder UM unmittelbar auch<br />
einen Algorithmus zur Lösung der beiden anderen nach sich, denn der Komplementgraph ist polynomiell<br />
konstruierbar. Die drei genannten Probleme sind also polynomiell aufeinander reduzierbar.<br />
Wir zeigen im Folgenden die NP-Vollständigkeit des Problems Knotenüberdeckung.<br />
Satz 4.5.8 NP-Vollständigkeit von KÜ<br />
KÜ ist NP-vollständig.<br />
Beweis: Dass KÜ in NP liegt, ist, wie gesagt, einfach zu zeigen: man rät eine Menge V ′ ⊆ V und prüft<br />
die gewünschte Eigenschaft. Dies ist kein deterministischer polynomieller Algorithmus, weil es zu einer<br />
Menge exponentiell viele (in der Anzahl der Elemente) Teilmengen gibt.<br />
Um die NP-Härte zu zeigen, reduzieren wir von 3SAT, d.h., wir zeigen 3SAT ≤p KÜ.<br />
Sei F = c1∧...∧cm eine Instanz von 3SAT mit Variablen U = {u1,...,un}. Wir konstruiereneinen Graphen<br />
G = (V,E) und eine Zahl K ≤ |V|. Für jede Variable ui ∈ U führen wir zwei Knoten Vi = {ui,ui}<br />
und eine Kante Ei = {{ui,ui}} ein. Jede Knotenüberdeckung muss mindestens ui oder ui enthalten. Für<br />
jede Klausel cj in F (|cj| = 3!) führen wir einen Teilgraphen (V ′<br />
j ,E′ j<br />
V ′<br />
j<br />
E ′ j<br />
= {a1[j],a2[j],a3[j]}<br />
= {{a1[j],a2[j]},{a1[j],a3[j]},{a2[j],a3[j]}}<br />
Jede Überdeckung muss mindestens zwei Knoten aus V ′<br />
j enthalten.<br />
Sei cj = {xj,yj,zj} mit den Literalen xj,yj,zj.<br />
Wir führen neue Kanten E ′′<br />
j ein:<br />
E ′′<br />
j<br />
= {{a1[j],xj},{a2[j],yj},{a3[j],zj}}.<br />
Dann setzen wir K = n+2m und G = (V,E) mit<br />
V = n<br />
Vi ∪ m<br />
V ′<br />
i=1<br />
j=1<br />
E = n<br />
Ei ∪ m<br />
i=1<br />
Beispiel: (siehe Abbildung 4.6)<br />
U = {u1,u2,u3,u4}<br />
j<br />
(E<br />
j=1<br />
′ j ∪E′′<br />
j ).<br />
F = (u1 ∨u3 ∨u4)∧(u1 ∨u2 ∨u4).<br />
) ein: