18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!