Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
146 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
1. φ ist erfüllbar genau dann, wenn x und ¬x <strong>in</strong> verschiedenen starken Komponenten<br />
von G liegen (für jede Variable x), und<br />
2. die Funktion f, die jeder Formel φ den Graphen Gφ zuordnet, hat e<strong>in</strong>e l<strong>in</strong>eare<br />
Zeitkomplexität.<br />
Es ist klar, dass (2) gilt: falls φ e<strong>in</strong>e Formel der Größe n (= Anzahl aller Variablen<br />
+ Anzahl aller Klauseln) ist, benötigt die Konstruktion von Gφ die Zeit O(n). Wir<br />
beweisen (1).<br />
1. Sei φ erfüllbar. Wir haben also e<strong>in</strong>e Belegung der Variablen, so dass jede<br />
Klausel von φ den Wert true hat (d.h., für jede Klausel α ∨ β gilt α = true<br />
oder β = true). Es folgt, dass von e<strong>in</strong>em true Knoten <strong>in</strong> Gφ ke<strong>in</strong>e Kante<br />
zu e<strong>in</strong>em false Knoten führt. (Für die Kante ¬α → β gilt, falls ¬α = true,<br />
dass β = true se<strong>in</strong> muss, denn α ∨ β ist e<strong>in</strong>e Klausel von φ; analoges gilt für<br />
¬β → α.) Falls die Variable x den Wert true hat, führt <strong>in</strong> Gφ also ke<strong>in</strong> Weg<br />
zu ¬x; falls x = false ist, führt ke<strong>in</strong> Weg von ¬x zu x. In beiden Fällen liegen<br />
x und ¬x <strong>in</strong> verschiedenen starken Komponenten.<br />
2. Seien x und ¬x immer <strong>in</strong> verschiedenen starken<br />
Komponenten. Wir er<strong>in</strong>nern an die obige Bemerkung 1: die starken Komponenten<br />
v der Knoten v des Graphen Gφ können so sortiert werden, dass für<br />
jede Kante v → w von G ord(v) ≤ ord(w) gilt. Wir belegen die Variablen wie<br />
folgt:<br />
x = true genau dann, wenn ord(¬x) < ord(x)<br />
(d.h., x hat genau dann den Wert true, wenn die starke Komponente von<br />
¬x vor der starken Komponente von x liegt). Wir müssen beweisen, dass für<br />
jede Klausel α ∨ β entweder α = true oder β = true gilt (denn dann gilt<br />
φ = true).<br />
Nehmen wir an, dass α = false, d.h.,<br />
ord(α) ≤ ord(¬α),<br />
dann beweisen wir β = true. Da Gφ die Kante ¬α → β enthält, gilt ord(¬α) ≤<br />
ord(β) und da er auch die Kante ¬β → α enthält, gilt ord(¬β) ≤ ord(α). Also<br />
Damit ist bewiesen, dass<br />
ord(¬β) ≤ ord(α) ≤ ord(¬α) ≤ ord(β).<br />
ord(¬β) < ord(β)<br />
(denn die Komponenten ¬β und β s<strong>in</strong>d wohl verschieden), also β = true.<br />
Konkrete Beispiele: Die Formel oben ist erfüllbar, denn die starken Komponenten<br />
des Graphen Gφ s<strong>in</strong>d<br />
Die Formel<br />
{x, z, ¬y} und {¬x, y, ¬z}.<br />
(y ∨ x) ∧ (¬y ∨ z) ∧ (¬z ∨ x) ∧ (¬x ∨ ¬t) ∧ (t ∨ ¬x)<br />
ist nicht erfüllbar, denn der entsprechende Graph