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

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

iti.cs.tu.bs.de
von iti.cs.tu.bs.de Mehr von diesem Publisher
18.09.2013 Aufrufe

146 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN 1. φ ist erfüllbar genau dann, wenn x und ¬x in verschiedenen starken Komponenten von G liegen (für jede Variable x), und 2. die Funktion f, die jeder Formel φ den Graphen Gφ zuordnet, hat eine lineare Zeitkomplexität. Es ist klar, dass (2) gilt: falls φ eine Formel der Größe n (= Anzahl aller Variablen + Anzahl aller Klauseln) ist, benötigt die Konstruktion von Gφ die Zeit O(n). Wir beweisen (1). 1. Sei φ erfüllbar. Wir haben also eine Belegung der Variablen, so dass jede Klausel von φ den Wert true hat (d.h., für jede Klausel α ∨ β gilt α = true oder β = true). Es folgt, dass von einem true Knoten in Gφ keine Kante zu einem false Knoten führt. (Für die Kante ¬α → β gilt, falls ¬α = true, dass β = true sein muss, denn α ∨ β ist eine Klausel von φ; analoges gilt für ¬β → α.) Falls die Variable x den Wert true hat, führt in Gφ also kein Weg zu ¬x; falls x = false ist, führt kein Weg von ¬x zu x. In beiden Fällen liegen x und ¬x in verschiedenen starken Komponenten. 2. Seien x und ¬x immer in verschiedenen starken Komponenten. Wir erinnern an die obige Bemerkung 1: die starken Komponenten v der Knoten v des Graphen Gφ können so sortiert werden, dass für jede Kante v → w von G ord(v) ≤ ord(w) gilt. Wir belegen die Variablen wie folgt: x = true genau dann, wenn ord(¬x) < ord(x) (d.h., x hat genau dann den Wert true, wenn die starke Komponente von ¬x vor der starken Komponente von x liegt). Wir müssen beweisen, dass für jede Klausel α ∨ β entweder α = true oder β = true gilt (denn dann gilt φ = true). Nehmen wir an, dass α = false, d.h., ord(α) ≤ ord(¬α), dann beweisen wir β = true. Da Gφ die Kante ¬α → β enthält, gilt ord(¬α) ≤ ord(β) und da er auch die Kante ¬β → α enthält, gilt ord(¬β) ≤ ord(α). Also Damit ist bewiesen, dass ord(¬β) ≤ ord(α) ≤ ord(¬α) ≤ ord(β). ord(¬β) < ord(β) (denn die Komponenten ¬β und β sind wohl verschieden), also β = true. Konkrete Beispiele: Die Formel oben ist erfüllbar, denn die starken Komponenten des Graphen Gφ sind Die Formel {x, z, ¬y} und {¬x, y, ¬z}. (y ∨ x) ∧ (¬y ∨ z) ∧ (¬z ∨ x) ∧ (¬x ∨ ¬t) ∧ (t ∨ ¬x) ist nicht erfüllbar, denn der entsprechende Graph

6.4. ROBUSTHEIT DER KLASSE P 147 hat eine einzige starke Komponente. x• y • •z •t ¬x • ¬y • • ¬z • ¬t Notation. Für zwei Sprachen L und L0 schreiben wir L ⊳ L0 falls L auf L0 in polynomialer Zeit reduzierbar ist. (Das Zeichen ⊳ ist dem Zeichen ≤ ähnlich und deutet an, dass die Komplexität von L kleiner gleich der von L0 ist.) Satz 2. Die Relation ⊳ ist transitiv: für Sprachen Li ⊆ Σ∗ i (i = 1, 2, 3) gilt L1 ⊳ L2 ⊳ L3 =⇒ L1 ⊳ L3. Beweis. Aus L1 ⊳ L2 folgt, dass eine Funktion f1 : Σ∗ 1 → Σ∗2 der Klasse FP x ∈ L1 ⇐⇒ f1(x) ∈ L2 erfüllt; aus L2 ⊳ L3 folgt, dass eine Funktion f2 : Σ∗ 2 → Σ∗3 der Klasse FP y ∈ L2 ⇐⇒ f2(y) ∈ L3 erfüllt. Sei die Verknüpfung von f1 und f2. Es gilt h : Σ ∗ 1 → Σ∗3 , h(x) = f2(f1(x)) x ∈ L1 ⇐⇒ f1(x) ∈ L2 ⇐⇒ h(x) = f2(f1(x)) ∈ L3. Also bleibt nur zu zeigen, dass h(x) in der Klasse FP liegt. In der Tat: die Funktion fi (i = 1, 2) wird durch eine TM Mi in polynomialer Zeit pi(n) berechnet. Dann wird die Funktion h(x) = f2(f1(x)) durch die folgende TM berechnet: x M1 f1(x) M2 f2(f1(x)) Für Wörter x der Länge n macht M1 höchstens p1(n) Schritte und schreibt also höchstens p1(n) Symbole. Das Wort f1(x) hat daher die Länge ≤ n + p1(n). Dann dauert die Berechnung von M2 höchstens p2(n+p1(n)) Schritte. Insgesamt braucht die obige TM höchstens p1(n) + p2(n + p1(n)) Schritte, und das ist ein Polynom – also liegt h in FP. Natürlich ist die Relation ⊳ reflexiv, aber sie ist nicht antisymmetrisch. 6.4 Robustheit der Klasse P Die Definition der Klasse P war auf dem Modell von TM aufgebaut. Sie ist aber von diesem Modell unabhängig, wie wir jetzt demonstrieren werden. Zuerst zeigen wir, dass, falls verschiedene Modifikationen von TM benutzt worden wären, die Klasse P dieselbe geblieben wäre. Die Zeitkomplexität ist für k-Band-TM genau wie oben für TM definiert.

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!