05.08.2013 Aufrufe

Praktische Grenzen der Berechenbarkeit - Informatik

Praktische Grenzen der Berechenbarkeit - Informatik

Praktische Grenzen der Berechenbarkeit - Informatik

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.

folgt aus:<br />

⎛<br />

⎜<br />

M = ⎜<br />

⎝<br />

0 1 0 1 0 0 0 1<br />

1 0 1 0 1 0 1 0<br />

0 1 0 1 0 0 0 0<br />

1 0 1 0 0 0 0 0<br />

0 1 0 0 0 1 0 1<br />

0 0 0 0 1 0 1 0<br />

0 1 0 0 0 1 0 1<br />

1 0 0 0 1 0 1 0<br />

Die Matrix ist symmetrisch zur Hauptdiagonalen, weil G ungerichtet ist. Es muss<br />

nun also nur für alle mi,j mit mi,j = 1 und i > j überprüft werden, ob sich i o<strong>der</strong><br />

j unter den k ausgewählten Knoten befindet. Dies ist sicherlich mit polynomialem<br />

Aufwand in Abhängigkeit von n möglich, so dass VCP in NP liegt.<br />

Wir reduzieren nun SAT polynomial auf VCP, indem wir ein Verfahren angeben,<br />

durch das jedem booleschen Ausdruck B, <strong>der</strong> auf Erfüllbarkeit getestet<br />

wird, eine Eingabe für VCP (ein Graph G und ein k ∈ N) zugeordnet wird, für<br />

die gilt: B ist genau dann erfüllbar, wenn G eine Überdeckung mit k Knoten<br />

enthält.<br />

Sei also B ein boolescher Ausdruck mit n Variablen. Zur Veranschaulichung<br />

verfolgen wir die Konstruktionsschritte am Beispiel des Ausdruckes<br />

(a ∨ b ∨ ¬c) ∧ (a ∨ ¬b ∨ c ∨ ¬d) .<br />

Für jede <strong>der</strong> Variablen enthält G zwei Knoten, die später das Vorkommen <strong>der</strong><br />

Variablen in den Klauseln (negiert o<strong>der</strong> nicht negiert) repräsentieren. Sie werden<br />

paarweise durch eine Kante verbunden (vgl. Abbildung 16).<br />

⎞<br />

⎟<br />

⎠<br />

aw af bw bf cw cf dw df<br />

Abbildung 16: Konstruktion eines Graphen zum Beweis von Satz 31, Schritt 1<br />

Für jede Klausel enthält G einen vollständigen Teilgraphen, dessen Knotenanzahl<br />

durch die Anzahl <strong>der</strong> Literale in <strong>der</strong> jeweiligen Klausel bestimmt ist (vgl.<br />

Abbildung 17).<br />

Die Kanten zwischen den oberen und unteren Teilgraphen werden so festgelegt,<br />

dass je<strong>der</strong> Knoten aus einem unteren Teilgraphen mit genau einem Knoten<br />

aus einem oberen Teilgraphen verbunden ist, und zwar so, dass jede Kante ein<br />

Literal <strong>der</strong> entsprechenden Klausel repräsentiert (vgl. Abbildung 18).<br />

Nun ergänzen wir die Eingabedaten für VCP noch durch die Angabe einer<br />

natürlichen Zahl k, die sich wie folgt berechnet: Man addiert die Anzahl <strong>der</strong><br />

Variablen zur Anzahl <strong>der</strong> Literale in B und subtrahiert die Anzahl <strong>der</strong> Klauseln.<br />

30

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!