03.09.2013 Aufrufe

Komplexitaet-WS-2010.. - Parallele Systeme

Komplexitaet-WS-2010.. - Parallele Systeme

Komplexitaet-WS-2010.. - Parallele Systeme

MEHR ANZEIGEN
WENIGER ANZEIGEN

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:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!