Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...
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.
- Seite 30 und 31: 96 KAPITEL 3. TURINGMASCHINEN falls
- Seite 32 und 33: 98 KAPITEL 4. CHURCHSCHE THESE Zeil
- Seite 34 und 35: 100 KAPITEL 4. CHURCHSCHE THESE 0.
- Seite 36 und 37: 102 KAPITEL 4. CHURCHSCHE THESE 4.2
- Seite 38 und 39: 104 KAPITEL 4. CHURCHSCHE THESE Bei
- Seite 40 und 41: 106 KAPITEL 4. CHURCHSCHE THESE [uq
- Seite 42 und 43: 108 KAPITEL 4. CHURCHSCHE THESE Bew
- Seite 44 und 45: 110 KAPITEL 4. CHURCHSCHE THESE Alg
- Seite 46 und 47: 112 KAPITEL 4. CHURCHSCHE THESE All
- Seite 48 und 49: 114 KAPITEL 4. CHURCHSCHE THESE Bem
- Seite 50 und 51: 116 KAPITEL 4. CHURCHSCHE THESE Sei
- Seite 52 und 53: 118 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 54 und 55: 120 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 56 und 57: 122 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 58 und 59: 124 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 60 und 61: 126 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 62 und 63: 128 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 64 und 65: 130 KAPITEL 5. UNENTSCHEIDBARE PROB
- Seite 66 und 67: 132 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 68 und 69: 134 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 70 und 71: 136 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 72 und 73: 138 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 74 und 75: 140 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 76 und 77: 142 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 78 und 79: 144 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 82 und 83: 148 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 84 und 85: 150 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 86 und 87: 152 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 88 und 89: 154 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 90 und 91: 156 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 92 und 93: 158 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 94 und 95: 160 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 96 und 97: 162 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 98 und 99: 164 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 100 und 101: 166 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 102 und 103: 168 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 104 und 105: 170 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 106 und 107: 172 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 108 und 109: 174 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 110 und 111: 176 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 112 und 113: 178 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 114 und 115: 180 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 116 und 117: 182 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 118 und 119: 184 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 120 und 121: 186 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 122 und 123: 188 KAPITEL 6. KOMPLEXITÄT VON ALG
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