Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ... Skript in PDF - Theoretische Informatik - Technische Universität ...
140 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN hat. Bemerkung 2. Wir können für die Sprache aller Palindrome eine fast doppelt so schnelle TM konstruieren, indem wir die beiden ersten Buchstaben speichern (und löschen) und sie mit den beiden letzten vergleichen (und diese dann auch löschen). Eine noch schnellere TM würde drei (oder vier usw.) Buchstaben auf einmal vergleichen. Wir können also eine fast k-mal schnellere TM für ein beliebig großes k konstruieren. Wir beobachten, dass jede dieser TM eine Zeitkomplexität hat, die von einem quadratischen Polynom repräsentiert wird. Den gleichen Beschleunigungsprozess können wir mit jeder TM machen, indem wir stets in einem Schritt k Felder gleichzeitig lesen und bearbeiten. Aus diesem Grund ist nicht die Funktion t(n) selbst interessant, nur die ” Geschwindigkeit des Wachstums“ von t(n), also die Klasse O(t(n)). Definition. Wir bezeichnen mit P die Klasse aller formalen Sprachen, die von einer TM mit polynomialer Zeitkomplexität akzeptiert werden können. Genauer: eine Sprache L gehört zur Klasse P, falls es eine Turingmaschine M und ein Polynom p(n) gibt, so dass L = L(M) und M hält auf Eingaben der Länge n in höchstens p(n) Schritten. Bemerkung 3. Erinnern wir uns daran, dass Entscheidungsproblem ≡ formale Sprache. Genau genommen müssen wir ein Entscheidungsproblem erst codieren (z.B. binär, mit Symbolen 0 und 1). Dann bezeichnet L ⊆ {0, 1} ∗ die Sprache aller Codierungen der Eingaben, auf die die Entscheidung JA ist. Weiter nehmen wir immer an, dass die Codierung von Problemen ” vernünftig“ ist. Wenn nämlich jemand freiwillig eine extrem lange Codierung der Eingabe benutzt, kann er auch ein kompliziertes Problem in linearer Zeit p(n) = n, wobei n die ” unvernünftige“ Codelänge ist, lösen. Die folgenden Regeln sind als ” vernünftig“ anzusehen: 1. Zahlen werden binär oder dezimal repräsentiert. (Nicht unär!) 2. Graphen werden durch Adjazenzmatrizen oder Adjazenzlisten dargestellt (siehe Abschnitt 6.1). 3. Mengentheoretische Operationen (Insert, Delete, Vereinigung, Durchschnitt) werden so implementiert, dass ihre Ausführung eine konstante Zahl von Zeiteinheiten dauert. Beispiel 3 (PALINDROM). Die Entscheidung, ob ein Wort ein Palindrom ist, ist ein Problem der Klasse P, denn die TM aus Beispiel 2 hat die Zeitkomplexität O(n 2 ). Beispiel 4 (2-FÄRBUNG). Das Problem, ob ein Graph mit zwei Farben gefärbt werden kann, gehört zur Klasse P. In Abschnitt 6.1 haben wir dafür einen Algorithmus mit linearer Zeitkomplexität beschrieben. Es ist nicht kompliziert, den Algorithmus mit einer TM zu implementieren und zu beweisen, dass diese TM polynomiale Zeitkomplexität hat.
6.2. KOMPLEXITÄTSKLASSE P 141 Beispiel 5 (2-ERFÜLLBARKEIT und 3-ERFÜLLBARKEIT). Analog zu der Situation der 2-Färbung und 3-Färbung haben wir hier ein anderes wichtiges Beispiel der Probleme, deren leichtere Variante zu P gehört und deren schwierige (wahrscheinlich) nicht. Es handelt sich um Boolesche Formeln über den Variablen x1, . . .,xn. Die einfachsten Formeln sind die Variablen xi selbst und ihre Negationen ¬xi - diese Formeln heißen Literale. Die komplizierteren Formeln werden mit Hilfe der üblichen logischen Operationen, z.B. Konjunktion ∧, Disjunktion ∨ und Implikation → erzeugt. Jede Disjunktion von Literalen heißt Klausel. Beispiele: x ∨ y ∨ ¬z und ¬x. Jede Boolesche Formel phi hat eine konjunktive Normalform (KNF), d.h., φ = φ1 ∧φ2 ∧ · · · ∧φn ist eine Konjunktion der Klauseln φ1, . . . , φn. Z.B. hat die Formel φ = (x → y ∧ z) ∧ (¬x → ¬z) die folgende KNF: wir benutzen die Äquivalenz von und erhalten a → b und ¬a ∨ b φ = (¬x ∨ (y ∧ z)) ∧ (x ∨ ¬z) Da ¬x ∨ (y ∧ z) äquivalent zu (¬x ∨ y) ∧ (¬x ∨ z) ist (de Morgansches Gesetz), gilt φ = (¬x ∨ y) ∧ (¬x ∨ z) ∧ (x ∨ ¬z). Das ist also eine Boolesche Formel, deren Klauseln je zwei Literale enthalten. Eine Formel φ heißt erfüllbar, falls die Variablen so mit true oder false belegt werden können, dass φ den Wert true annimmt. Beispiel: die obige Formel ist erfüllbar, denn für x = true, y = true, z = true gilt φ = true. Es ist kein effizienter Algorithmus bekannt, der für jede Boolesche Formel unterscheidet, ob sie erfüllbar ist. Das Problem m-ERFÜLLBARKEIT ist: Gegeben, eine Boolesche Formel φ in konjunktiver Normalform, wobei jede Klausel m Literale enthält, ist φ erfüllbar? Wir definieren die Größe der Eingabe φ als n + k, wobei n die Anzahl aller Variablen und k die Anzahl aller Klauseln von φ ist. 2-ERFÜLLBARKEIT gehört zur Klasse P. Wir könnten hier einen effizienten Algorithmus angeben, aber einfacher ist es zu zeigen (in Abschnitt 6.3), dass es eine effiziente Reduktion dieses Problems auf ein anderes Problem der Klasse P gibt – daraus folgt dann indirekt, dass 2-ERFÜLLBARKEIT zur Klasse P gehört. 3-ERFÜLLBARKEIT ist dagegen schwierig: in Abschnitt 6.4 zeigen wir, dass dieses Problem N P-vollständig ist, also genauso schwierig wie 3-FÄRBUNG. Beispiel 6 (UNIVERSALITÄT REGULÄRER AUSDRÜCKE). Das ist ein (rares) Beispiel eines leicht zu formulierenden Problems, für das bewiesen wurde, dass es nicht effizient lösbar ist. Reguläre Ausdrücke haben wir in Kapitel 1 eingeführt: sie werden aus Buchstaben des Alphabets Σ, z.B. Σ = {a, b}, und Symbolen ∅ und ɛ mit Hilfe der Operatoren +, ·, und ∗ erzeugt. Jetzt arbeiten wir mit komprimierter Notation: statt xx . . . x (n-mal) schreiben wir x ↑ n (n binär), z.B. xxxxx = x ↑ 101
- Seite 24 und 25: 90 KAPITEL 3. TURINGMASCHINEN 3.4 N
- Seite 26 und 27: 92 KAPITEL 3. TURINGMASCHINEN 1. Di
- Seite 28 und 29: 94 KAPITEL 3. TURINGMASCHINEN sie k
- 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 76 und 77: 142 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 78 und 79: 144 KAPITEL 6. KOMPLEXITÄT VON ALG
- Seite 80 und 81: 146 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
140 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />
hat.<br />
Bemerkung 2. Wir können für die Sprache aller Pal<strong>in</strong>drome e<strong>in</strong>e fast doppelt<br />
so schnelle TM konstruieren, <strong>in</strong>dem wir die beiden ersten Buchstaben speichern<br />
(und löschen) und sie mit den beiden letzten vergleichen (und diese dann auch<br />
löschen). E<strong>in</strong>e noch schnellere TM würde drei (oder vier usw.) Buchstaben auf<br />
e<strong>in</strong>mal vergleichen. Wir können also e<strong>in</strong>e fast k-mal schnellere TM für e<strong>in</strong> beliebig<br />
großes k konstruieren. Wir beobachten, dass jede dieser TM e<strong>in</strong>e Zeitkomplexität<br />
hat, die von e<strong>in</strong>em quadratischen Polynom repräsentiert wird.<br />
Den gleichen Beschleunigungsprozess können wir mit jeder TM machen, <strong>in</strong>dem wir<br />
stets <strong>in</strong> e<strong>in</strong>em Schritt k Felder gleichzeitig lesen und bearbeiten. Aus diesem Grund<br />
ist nicht die Funktion t(n) selbst <strong>in</strong>teressant, nur die ” Geschw<strong>in</strong>digkeit des Wachstums“<br />
von t(n), also die Klasse O(t(n)).<br />
Def<strong>in</strong>ition. Wir bezeichnen mit<br />
P<br />
die Klasse aller formalen Sprachen, die von e<strong>in</strong>er TM mit polynomialer Zeitkomplexität<br />
akzeptiert werden können. Genauer: e<strong>in</strong>e Sprache L gehört zur Klasse P, falls<br />
es e<strong>in</strong>e Tur<strong>in</strong>gmasch<strong>in</strong>e M und e<strong>in</strong> Polynom p(n) gibt, so dass<br />
L = L(M)<br />
und M hält auf E<strong>in</strong>gaben der Länge n <strong>in</strong> höchstens p(n) Schritten.<br />
Bemerkung 3. Er<strong>in</strong>nern wir uns daran, dass<br />
Entscheidungsproblem ≡ formale Sprache.<br />
Genau genommen müssen wir e<strong>in</strong> Entscheidungsproblem erst codieren (z.B. b<strong>in</strong>är,<br />
mit Symbolen 0 und 1). Dann bezeichnet L ⊆ {0, 1} ∗ die Sprache aller Codierungen<br />
der E<strong>in</strong>gaben, auf die die Entscheidung JA ist. Weiter nehmen wir immer an, dass<br />
die Codierung von Problemen ” vernünftig“ ist.<br />
Wenn nämlich jemand freiwillig e<strong>in</strong>e extrem lange Codierung der E<strong>in</strong>gabe benutzt,<br />
kann er auch e<strong>in</strong> kompliziertes Problem <strong>in</strong> l<strong>in</strong>earer Zeit p(n) = n, wobei n die<br />
” unvernünftige“ Codelänge ist, lösen. Die folgenden Regeln s<strong>in</strong>d als ” vernünftig“<br />
anzusehen:<br />
1. Zahlen werden b<strong>in</strong>är oder dezimal repräsentiert. (Nicht unär!)<br />
2. Graphen werden durch Adjazenzmatrizen oder Adjazenzlisten dargestellt (siehe<br />
Abschnitt 6.1).<br />
3. Mengentheoretische Operationen (Insert, Delete, Vere<strong>in</strong>igung, Durchschnitt)<br />
werden so implementiert, dass ihre Ausführung e<strong>in</strong>e konstante Zahl von Zeite<strong>in</strong>heiten<br />
dauert.<br />
Beispiel 3 (PALINDROM). Die Entscheidung, ob e<strong>in</strong> Wort e<strong>in</strong> Pal<strong>in</strong>drom ist, ist<br />
e<strong>in</strong> Problem der Klasse P, denn die TM aus Beispiel 2 hat die Zeitkomplexität<br />
O(n 2 ).<br />
Beispiel 4 (2-FÄRBUNG). Das Problem, ob e<strong>in</strong> Graph mit zwei Farben gefärbt<br />
werden kann, gehört zur Klasse P. In Abschnitt 6.1 haben wir dafür e<strong>in</strong>en Algorithmus<br />
mit l<strong>in</strong>earer Zeitkomplexität beschrieben. Es ist nicht kompliziert, den<br />
Algorithmus mit e<strong>in</strong>er TM zu implementieren und zu beweisen, dass diese TM polynomiale<br />
Zeitkomplexität hat.