05.11.2013 Aufrufe

Handout - Institut für Theoretische Informatik - Technische ...

Handout - Institut für Theoretische Informatik - Technische ...

Handout - Institut für Theoretische Informatik - Technische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Theoretische</strong> <strong>Informatik</strong> 2<br />

Jürgen Koslowski<br />

<strong>Institut</strong> <strong>für</strong> <strong>Theoretische</strong> <strong>Informatik</strong><br />

<strong>Technische</strong> Universität Braunschweig<br />

SS 2012<br />

http://www.iti.cs.tu-bs.de/˜koslowj/Theo1<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 1 / 215


Übersicht: Turingmaschinen I<br />

1 Hintergrund und Motivation<br />

Ziele der Vorlesungen “<strong>Theoretische</strong> <strong>Informatik</strong> 2”<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 2 / 215


Übersicht: Turingmaschinen I<br />

2 3. Turingmaschinen<br />

3.0 Vorüberlegung<br />

3.0.0 Turingmaschinen formal<br />

3.0.1 Darstellung von Turingmaschinen<br />

3.1 Entscheidbare Sprachen/Probleme<br />

3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

3.3 Abschlußeigenschaften (semi-)entscheidbarer Sprachen<br />

3.4 Turing-berechenbare partielle Funktionen<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 3 / 215


Übersicht: Church-Turing These I<br />

3 4. Church-Turing-These<br />

4.0 Vorbemerkungen<br />

4.1 RAM<br />

4.1.0 Befehlssatz einer RAM<br />

4.1.2 Simulation einer TM durch eine RAM<br />

4.1.2 RAM-Berechenbarkeit<br />

4.2 Rekursive Funktionen<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 4 / 215


Übersicht: Unentscheidbare Probleme I<br />

4 5. Unentscheidbare Probleme<br />

5.0 Problemstellung<br />

5.1 Universelle Turingmaschine<br />

5.2 Das Halteproblem<br />

5.3 Weitere unentscheidbare Probleme<br />

5.3.0 Das Akzeptanzproblem<br />

5.3.1 Akzeptanz des leeren Worts<br />

5.3.2 Terminierung eines Algorithmus<br />

5.4 Satz von Rice<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 5 / 215


Übersicht: Komplexitätstheorie I<br />

5 6. Komplexität von Algorithmen<br />

6.0 Übersicht<br />

6.0.1 Wiederholung: Groß-O-Notation<br />

6.1 Beispiele effizienter Algorithmen<br />

6.2 Die Komplexitätsklassen P und NP<br />

6.3 Die Klasse FP von Berechnungsproblemen<br />

6.4 FP -Reduzierbarkeit<br />

6.4.1 2-Sat ∈ P<br />

6.5 Robustheit der Klassen P und N P<br />

6.6 Einige Probleme aus NP<br />

6.7 NP -Vollständigkeit und Cooke’scher Satz<br />

6.8 Weitere NP -vollständige Probleme<br />

6.9 Die Klasse coNP<br />

6.10 Komplexität von Optimierungsproblemen<br />

6.11 Approximation von Optimierungsproblemen<br />

6.12 Raumkomplexität<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 6 / 215


Hintergrund und Motivation Ziele der Vorlesungen “<strong>Theoretische</strong> <strong>Informatik</strong> 2”<br />

In Fortsetzung der VL “<strong>Theoretische</strong> <strong>Informatik</strong> 1” werden zunächst<br />

Turingmaschinen als weiteres Maschinenmodell eingeführt, dessen<br />

Fähigkeiten über die der Kellerautomaten hinausgehen. Es wird sich als<br />

das mächtigste (klassische) Maschinenmodell erweisen, ebenso mächtig<br />

wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten<br />

zu realisieren, braucht man einen “Quantencomputer”.)<br />

Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat<br />

die kanonische Unterklasse der entscheidbaren Sprachen; diese werden von<br />

TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage der<br />

Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Hier<br />

lernen wir schon das neue Verfahren der Reduktion von Problemen bzw.<br />

Sprachen kennen.<br />

TM’n lassen sich auch zur Lösung von Berechnungsproblemen (kurz<br />

B-Problemen) verwenden. Das liefert eine Theorie der “Turingberechenbaren<br />

(partiellen) Funktionen” der Form N p f<br />

N, p ∈ N .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 7 / 215


Hintergrund und Motivation Ziele der Vorlesungen “<strong>Theoretische</strong> <strong>Informatik</strong> 2”<br />

Alternativ kann man ausgehend von einfachen Grundfunktionen N p N<br />

mittels simpler Konstruktionsverfahren neue partielle Funktionen N p N<br />

generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen,<br />

und anschließend die Klasse der µ-rekursiven partiellen Funktionen.<br />

Letztere stimmt mit der obigen Klasse der Turing-brechenbaren partiellen<br />

Funktionen überein.<br />

In der Komplexitätstheorie geht es darum, wie effizient E-Probleme gelöst<br />

werden können. Das wesentliche Kriterium besteht darin, ob bei<br />

Verwendung von dTM’n bzw. nTMn immer eine Laufzeit realisiert werden<br />

kann, die polynomial in der Größe der Eingabe ist.<br />

B-Probleme, deren zugrundeliegendes E-Problem nicht effizient lösbar ist,<br />

sind selbst nicht effizient lösbar. In solchen Fällen kann man versuchen,<br />

möglichst gute Lösungen wenigstens zu approximieren. Das führt zum<br />

Begriff des Optimierungsproblems.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 8 / 215


3. Turingmaschinen<br />

Kapitel 3<br />

Turingmaschinen<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 9 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

3.0 Vorüberlegung<br />

Idee: der eingeschränkt zugängliche Keller eines Kellerautomaten wird<br />

durch ein frei zugängliches, beidseitig potentiell unendliches Turingband<br />

ersetzt, auf dessen Zellen Symbole aus einem Bandalphabet mit Hilfe eines<br />

Schreib-Lesekopfes geschrieben werden können:<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 10 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei<br />

werden wie gewöhnlich Anfangs- und Endzustände unterschieden.<br />

In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie<br />

ein Symbol schreiben und/oder (je nach Vereinbarung) sich um<br />

maximal ein Feld zur Seite bewegen.<br />

Zu jedem Zeitpunkt darf das Band nur endlich viele relevante<br />

Symbole enthalten; alle übrigen Felder müssen “leer” sein. Um dies<br />

anzuzeigen, wird ein spezielles Bandsymbol # eingeführt.<br />

Beim Berechnungsstart soll die Eingabe w ∈ Σ ∗ zusammenhängend<br />

auf dem Band stehen! Dies ist scheinbar ein konzeptioneller<br />

Unterschied zu Kellerautomaten und erst recht zu endlichen<br />

Automaten, bei denen die Eingabe immer extern vorlag und in nicht<br />

näher spezifizierter Weise von links nach rechts gelesen wurde<br />

(Stichwort: Online Algorithmus ).<br />

Bei Wikipedia findet man folgende Visualisierungen von Turingmaschinen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 11 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

3.0.0 Turingmaschinen formal<br />

Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die<br />

sich letztendlich alle gegenseitig simulieren können. Zunächst beginnen wir<br />

mit zwei Basismodellen. Diese unterscheiden sich darin, ob der Kopf pro<br />

Schritt nur zu einer Aktion (Schreiben bzw. Bewegen), oder zu beiden<br />

Aktionen fähig ist, sind ansonsten aber äquivalent.<br />

Bei den Varianten kann man die Form des Bandes ändern (einseitig<br />

unendlich statt beidseitig unendlich), die Anzahl der Spuren auf dem<br />

Band, oder gar die Anzahl der Bänder und Köpfe. Insbesondere<br />

Turingmaschinen mit mehreren Bändern und Köpfen erlauben eine<br />

einfachere Umsetzung konkreter Algorithmen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 12 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Definition (TM, die entweder schreiben, oder sich bewegen kann)<br />

Eine Turing-Maschine mit erweitertem Bandalphabet (TMeB)<br />

M = 〈Q, B, Σ, δ, q 0 , q F 〉 besteht aus<br />

einer endlichen Menge Q von (äußeren) Zuständen;<br />

einem endlichen Bandalphabet B mit ausgezeichnetem Element #<br />

(dem Blankzeichen),<br />

einem endlichen Eingabealphabet Σ mit Σ ⊆ B − {#} ;<br />

einer Relation Q × B δ Q × (B + {L, R});<br />

je einem Anfangs- und Endzustand q 0 ∈ Q bzw. q F ∈ Q .<br />

Eine Standard-TM á la TU-BS (STM) erfüllt B = Σ + {#} .<br />

M heißt deterministisch (dTM), falls δ eine partielle Funktion ist.<br />

Interpretation von δ : abhängig vom aktuellen Zustand und Bandsymbol<br />

ändert sich der Zustand, und das Bandsymbol kann entweder<br />

überschrieben werden, oder der Kopf wandert auf ein Nachbarfeld.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 13 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Von Beginn an lassen wir neben den Symbolen aus Σ und dem<br />

Blankzeichen # weitere Hilfssymbole im Bandalphabet zu. Dies können<br />

z.B. Randbegrenzer, Trennsymbole oder spezielle Löschsymbole sein.<br />

Definition (TM, die gleichzeitig schreiben und sich bewegen kann)<br />

M = 〈Q, B, Σ, δ, q 0 , q F 〉 wie oben, mit dem Unterschied, daß die Relation<br />

Q × B δ Q × (B + {L, R}) ersetzt wird durch<br />

Q × B δ Q × B × {N, L, R}<br />

In diesem Fall wird pro Schritt zwingend ein Bandsymbol geschrieben (dies<br />

schließt die Möglichkeit ein, das aktuelle Bandsymbol zu reproduzieren),<br />

und dann ein Schritt auf ein Nachbarfeld ausgeführt ( L bzw. R ), oder<br />

auf dem aktuellen Feld verharrt ( N ).<br />

Offenbar kann man jeden Schritt einer solchen Maschine mit höchstens<br />

zwei Schritten einer Maschine simulieren, die entweder schreiben oder sich<br />

bewegen kann. Umgekehrt ist die Simulation noch einfacher (vergl. HA).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 14 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Im Gegensatz zu Kellerautomaten fällt die fehlende Abhängigkeit der<br />

Übergangsrelation von den Elementen des Alphabets Σ auf. In der Tat<br />

dient Σ einzig zur Bestimmung der erlaubten Eingaben.<br />

Bei der informellen Betrachtung hatten wir gefordert, die Eingabe w ∈ Σ ∗<br />

solle vor Beginn der Berechnung auf dem Band stehen. Die Analogie zu<br />

Kellerautomaten kann wie folgt bewahrt werden: die Übergangsrelationen<br />

δ(a) , a ∈ Σ , dienen allein dazu, die externe(!) Eingabe auf das Band zu<br />

schreiben. Alle eigentlichen Berechnungsschritte erfolgen dann spontan,<br />

zweckmäßigerweise vom rechten(!) Rand der Eingabe ausgehend (aber<br />

andere Konventionen sind genauso verbreitet).<br />

Strenggenommen kann man auf die Forderung Σ ⊆ B − {#} und damit<br />

die “Internalisierbarkeit” der Eingaben verzichten (auch eine Konvention),<br />

aber da<strong>für</strong> nicht-triviale Übergangsrelationen δ(a) , a ∈ Σ , zulassen.<br />

Diesen Gedanken werden wir aber hier nicht weiterverfolgen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 15 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen<br />

Bandinhalt und die Position des Kopfes bestimmen. Die Konvention,<br />

Eingaben zunächst zu internalisieren, erübrigt die Buchführung über den<br />

noch zu bearbeitenden Teil der Eingabe.<br />

Definition (vorläufig)<br />

Unter einer Konfiguration einer TM versteht man ein Paar<br />

〈q, ω〉 ∈ Q × B + , wobei genau ein Symbol des nichttrivialen Bandinhalts<br />

ω durch Unterstreichung markiert ist, was die Kopfposition festlegt.<br />

ω soll den Bereich des Bandes minimal überdecken, der die Kopfposition<br />

und alle von # verschiedenen Symbole umfaßt. Daher sollten keine<br />

führenden oder folgenden Blankzeichen # auftreten, sofern es sich nicht<br />

um den Inhalt der Kopfposition handelt.<br />

Etwas genauer: ω sollte ein Element sein von<br />

((B − {#}) × B ∗ + {ε}) × B × (B ∗ × (B − {#}) + {ε}))<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 16 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Definition (Fortsetzung)<br />

Konfigurationen der Form 〈q 0 , s 0 . . . s n−2 s n−1 〉 mit n > 0 bzw. 〈q 0 , #〉<br />

heißen Initialkonfigurationen. Ist <strong>für</strong> 〈q, ω l sω r 〉 die Menge 〈q, s〉δ leer,<br />

sprechen wir von einer Haltekonfiguration. Im Fall von 〈q, s〉δ ≠ ∅ können<br />

sich bei einer Folgekonfiguration ( ⊢ ) Zustand, Inhalt des aktuellen Feldes<br />

und neue Kopfposition gemäß den Elementen von 〈q, s〉δ ändern.<br />

Unter einer Berechnung mit Eingabe w ∈ Σ ∗ versteht man eine endliche<br />

oder unendliche Konfigurationenfolge K i ⊢ K i+1 , wobei K 0 eine<br />

Initialkonfiguration mit Eingabe w , und im endlichen Fall die letzte<br />

Konfiguration eine Haltekonfiguration ist.<br />

Eine Berechnung akzeptiert ihre Eingabe genau dann, wenn sie in einer<br />

Haltekonfiguration mit Zustand q F endet.<br />

Die spezielle Form der Initialkonfiguration resultiert aus einem Linksschritt<br />

nach Übertragung der Eingabe auf des Band von links nach rechts.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 17 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

3.0.1 Darstellung von Turingmaschinen<br />

Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls<br />

b ∈ B so schreiben wir<br />

q<br />

b/ϕ<br />

p<br />

anstelle von<br />

〈〈q, b〉, 〈p, ϕ〉〉 ∈ δ<br />

wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere)<br />

Anfangs- und Endzustand wird markiert wie zuvor.<br />

Die Einschränkungen bzgl. der Komponierbarkeit solcher Übergänge bei<br />

Kellerautomaten gilt sinngemäß auch <strong>für</strong> Turingmaschinen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 18 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Beispiel<br />

L = { a n b n c n : n ∈ N } mittels einer Maschine, deren Kopf entweder<br />

schreibt, oder sich bewegt. Setze B = {a, b, c, x, #} , wobei x als<br />

spezielles Löschsymbol dient.<br />

x/L<br />

x, c/L<br />

start<br />

q 0<br />

c/x<br />

q c<br />

#/#<br />

x, b, c/R<br />

#/L<br />

q a<br />

q F<br />

a/x<br />

q b<br />

b/x<br />

x, b/L<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 19 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Beispiel<br />

L = { a n b n c n : n ∈ N } mittels einer Maschine, deren Kopf gleichzeitig<br />

schreibt und sich bewegt; B wie oben.<br />

x/〈#, L〉<br />

c/〈c, L〉<br />

start<br />

q 0<br />

c/〈#, L〉<br />

q c<br />

#/〈#, N〉<br />

#/〈#, L〉 q F<br />

{b, x, c} ∋ z/〈z, R〉 q a<br />

a/〈x, R〉<br />

q b<br />

b/〈x, L〉<br />

b/〈b, L〉<br />

(Wird die Eingabe akzeptiert, ist das Band hinterher leer.)<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 20 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Definition<br />

Sprachen, die von einer STM akzeptiert werden, heißen semi-entscheidbar<br />

Satz<br />

Sprachen, die von einer TMeB akzeptiert werden, sind semi-entscheidbar.<br />

Beweis. [falls Σ echte Teilmenge von B − {#} ist]<br />

Ersetzt man das Alphabet Σ einer TMeB M = 〈Q, B, Σ, δ, q 0 , q F 〉 durch<br />

B − {#} , so erhält man eine STM M ′ , die Eingaben aus (B − {#}) ∗<br />

verarbeiten kann. Zur Einschränkung auf Eingaben aus Σ ∗ schalten wir<br />

einen Präprozessor M Σ := 〈{r 0 , r 1 , r F = q 0 }, B, B − {#}, ρ, r 0 , r F 〉 mit<br />

x/L<br />

start<br />

r 0<br />

#/R<br />

x/R<br />

r 1<br />

#/L<br />

r F<br />

wobei x ∈ Σ<br />

davor. Dieser akzeptiert Σ ∗ ⊆ (B − {#}) ∗ und reproduziert <strong>für</strong> Wörter<br />

aus Σ ∗ die Initialkonfiguration. Natürlich muß {r 1 , r 2 } ∩ Q = ∅ gelten.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 21 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Satz<br />

Sprachen, die von TMeB’n akzeptiert werden, deren Kopf schreiben und<br />

sich bewegen kann, sind semi-entscheidbar (vergl. HA).<br />

Andere Varianten von TM’n sind gleich mächtig zu STM’n:<br />

Definition<br />

Eine Mehr-Spur Turingmaschine verwendet ein Bandalphabet der Form<br />

B n mit Σ ⊆ B − {#} . Eingaben stehen auf Spur 0.<br />

Satz<br />

Von Mehr-Spur TM’n akzeptierte Sprachen sind semi-entscheidbar.<br />

Beweis.<br />

Mit B ′ := B n , # ′ := 〈 # : i < n 〉 und Σ ′ := Σ × {#} n−1 ∼ = Σ erhält<br />

man eine konventionelle TM.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 22 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Definition<br />

Für eine n-Band TM M = 〈Q, B, n, Σ, δ, q 0 , q F 〉 hat δ die Form<br />

Q × B n δ Q ×(B+{L, R}) n bzw. Q × B n δ Q ×(B×{L, R, N}) n<br />

Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen<br />

starten mit der Eingabe auf Band 0 . Die graphische Darstellung verwendet<br />

Label der Form β/A 0 , A 1 , . . . , A n−1 mit β ∈ B n und n Aktionen A i .<br />

Satz<br />

Von n-Band TM’n akzeptierte Sprachen sind semi-entscheidbar.<br />

Beweis (Idee)<br />

Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern<br />

entsprechen, und auf deren ungeraden Spuren über die jeweiligen<br />

Kopfpositionen buchgeführt wird.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 23 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Beispiel<br />

Die Sprache L = { w ∈ {0, 1} ∗ : |w| 0 = |w| 2 1 } ist semi-entscheidbar:<br />

Idee: Wir verwenden eine 3-Band dSTM, bei der die Nullen und Einsen<br />

der Eingabe auf B 0 zunächst auf die Bänder B 1 bzw. B 2 verschoben<br />

werden. Dort finden alle weiteren Berechnungen statt. Wegen<br />

(n − 1) 2 = n 2 − 2n + 1 = n 2 − 2(n − 1) − 1<br />

können wir dann ggf. in mehreren Durchläufen auf diesen Bändern<br />

zunächst je eine Null und eine Eins, und dann <strong>für</strong> jede verbliebene Eins<br />

weitere zwei Nullen löschen. Dabei werden die Einsen auf B 2 in beiden<br />

Richtungen, die Nullen auf B 1 aber nur in einer Richtung durchlaufen.<br />

Gelingt die Löschung aller Symbole, wird die Eingabe akzeptiert.<br />

Bei der umseitigen Realisierung sind Aktionen, die weder Kopfposition<br />

noch Bandinhalt verändern, durch “ − ” abgekürzt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 24 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Beispiel (Fortsetzung)<br />

start q 0<br />

〈0, #, #〉/〈#, L〉, 〈0, L〉, 〈#, N〉<br />

〈1, #, #〉/〈#, L〉, 〈#, N〉, 〈1, L〉<br />

q 2<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈#, R〉<br />

〈#, #, #〉/−, 〈#, R〉, 〈#, R〉<br />

〈#, 0, #〉/−, 〈#, R〉, 〈#, R〉<br />

q 1<br />

q 6<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈1, R〉<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈1, N〉<br />

〈#, #, #〉/−, −, −<br />

〈#, #, #〉/−, −, −<br />

q F<br />

〈#, #, #〉/−, −, −<br />

〈#, #, #〉/−, −, −<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈1, N〉<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈1, L〉<br />

q 3<br />

〈#, 0, #〉/−, 〈#, R〉, 〈#, L〉<br />

q 4<br />

〈#, 0, 1〉/−, 〈#, R〉, 〈#, L〉<br />

q 5<br />

In Zukunft werden wir nicht alle TM’n so detailliert beschreiben können,<br />

sondern uns meist auf informelle Spezifikationen beschränken.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 25 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Satz<br />

Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert.<br />

Beweis<br />

Betrachte eine 1-Band TM M = 〈Q, B, Σ, δ, q 0 , q F 〉 mit L(M) = L . Für<br />

jedes Paar 〈q, b〉 ∈ Q × B bezeichne ρ〈q, b〉 die Anzahl der verfügbaren<br />

Übergänge; diese werden von 0 bis ρ〈q, b〉 − 1 durchnummeriert. Setze<br />

r := max{ ρ〈q, b〉 : 〈q, b〉 ∈ Q × B } und Z r := { n ∈ N : n < r }<br />

Falls r > 1 ist M nicht deterministisch und wir konstruieren eine<br />

deterministische 4-Band Maschine M ′ mit L(M ′ ) = L :<br />

B 0 enthält die Eingabe w ∈ Σ ∗ ;<br />

auf B 1 werden systematisch die Zahlen k ∈ N erzeugt (unär);<br />

auf B 2 werden systematisch die k -Tupel ϕ ∈ (Z r ) k erzeugt;<br />

Band B 3 dient zur Simulation des durch ϕ spezifizierten<br />

Anfangsstücks einer M -Berechung der Länge ≤ k mit Eingabe w .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 26 / 215


3. Turingmaschinen 3.0 Vorüberlegung<br />

Beweis (Fortsetzung)<br />

Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen<br />

von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger<br />

hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k :<br />

⊲ sofern Schritt i von 〈q, . . . b . . .〉 ∈ Q × B ∗ ausgeht, wird Übergang<br />

Nummer ϕ i mod ρ〈q, b〉 der verfügbaren Übergänge ausgeführt,<br />

sofern ρ(q, b) ≠ 0 ; sonst ist eine Haltekonfiguration erreicht.<br />

Per Zustand wird darüber buchgeführt, ob<br />

ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird<br />

w von M ′ akzeptiert; andernfalls wird ϕ auf B 2 und ggf. k auf<br />

B 1 aktualisiert und fortgefahren;<br />

alle potentiellen Wege der Länge k in nicht akzeptierenden<br />

Haltekonfigurationen enden, dann hält M ′ ohne zu akzeptieren;<br />

andernfalls wird k auf B 1 erhöht und fortgefahren.<br />

Beachte: Falls M immer hält, hat auch M ′ diese Eigenschaft.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 27 / 215


3. Turingmaschinen 3.1 Entscheidbare Sprachen/Probleme<br />

3.1 Entscheidbare Sprachen/Probleme<br />

Die Terminologie “semi-entscheidbar” deutet die Existenz<br />

“entscheidbarer” Sprachen an. Dabei soll das “Wortproblem” entschieden<br />

werden, ob die Eingabe w ∈ Σ ∗ zur Sprache L ⊆ Σ ∗ gehört oder nicht.<br />

Definition<br />

Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird,<br />

die immer hält. (Man kann sich auf dTM’n beschränken.)<br />

Entscheidbare Sprachen sind semi-entscheidbar, aber die umgekehrte<br />

Inklusion gilt nicht (Beispiel später).<br />

Alternativ heißen semi-entscheidbare/entscheidbare Sprachen in der<br />

Literatur auch “rekursiv aufzählbar”/“rekursiv”. Hintergrund: rekursiv<br />

aufzählbare Sprachen können von einer dTM “aufgelistet” werden, wobei<br />

Wiederholungen erlaubt sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 28 / 215


3. Turingmaschinen 3.1 Entscheidbare Sprachen/Probleme<br />

Definition<br />

Die von einer dTM T aufgezählte Sprache G(T ) besteht aus allen<br />

Wörtern w ∈ Σ ∗ , die in T -Konfigurationen der Form 〈q F , ω l bw#ω r 〉<br />

mit b ∈ B vorkommen, wenn T aus der Konfiguration 〈q 0 , #〉 startet.<br />

Satz<br />

Jede Sprache der Form G(T ) ist semi-entscheidbar.<br />

Beweis.<br />

M sei eine 2-Band Maschine, die auf T auf B 1 simuliert, und nach<br />

jedem Erreichen einer Konfiguration mit dem Endzustand von T das<br />

Σ-Wort rechts des T -Kopfes mit der M -Eingabe auf B 0 vergleicht.<br />

Satz<br />

Jede semi-entscheidbare Sprache ist von der Form G(T ) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 29 / 215


3. Turingmaschinen 3.1 Entscheidbare Sprachen/Probleme<br />

Beweis.<br />

Ist L ⊆ Σ ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit<br />

L = L(M) . Zur Aufzählung von L konstruieren wir eine 4-Band dTM T :<br />

B 0<br />

dient zur Aufzählung von L (s.u.);<br />

auf B 1 werden systematisch die Zahlen k ∈ N erzeugt (unär);<br />

auf B 2 werden systematisch die Wörter der Länge ≤ k erzeugt;<br />

auf B 3 werden bis zu k Schritte der M -Berechnung des Worts w<br />

auf B 2 simuliert.<br />

− Im Fall der Akzeptanz wird w nach B 0 kopiert, der Kopf links davon<br />

positioniert und der Zustand q F angenommen. Anschließend wird B 0<br />

gelöscht.<br />

− Danach wird das nächste Wort auf B 2 erzeugt.<br />

− Nach Bearbeitung aller Wörter der Länge ≤ k wird k auf B 1 erhöht.<br />

Per Zustand kann darüber buchgeführt werden, ob alle Wörter der Länge<br />

≤ k zu nicht akzeptierenden Haltekonfigurationen führen. Weil M<br />

deterministisch ist, muß L(M) dann endlich sein und T kann halten.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 30 / 215


3. Turingmaschinen 3.1 Entscheidbare Sprachen/Probleme<br />

Satz<br />

Eine Sprache L ⊆ Σ ∗ ist genau dann entscheidbar, wenn L und<br />

¯L := Σ ∗ − L semi-entscheidbar sind.<br />

Beweis.<br />

Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer<br />

hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir<br />

eine dTM M ′ mit L = L(M ′ ) , die immer hält. Einführen eines neuen<br />

Endzustands q ∗ und neuer Übergänge 〈q, b〉 ↦→ 〈q ∗ , b〉 bzw. 〈q ∗ , 〈b, N〉〉<br />

sofern 〈q, b〉δ ′ = ∅ , liefert dann eine dTM M ′ mit L(M ′ ) = ¯L .<br />

Umgekehrt lassen wir dTM’n M und ¯M mit L(M) = L und L( ¯M) = ¯L<br />

mittels Interleaving dieselbe Eingabe bearbeiten. Die resultierende<br />

Maschine K hält genau dann, wenn eine der Teilmaschinen hält, und sie<br />

möge genau dann akzeptieren, wenn L hält und akzeptiert, oder wenn ¯L<br />

hält und nicht akzeptiert. Dann hält K immer und erfüllt L(K) = L .<br />

In beiden Fällen war die Verwendung von dTM’n wesentlich.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 31 / 215


3. Turingmaschinen 3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 5<br />

stellen wir fest, daß jede TM M über Σ = {0, 1} sich durch ein<br />

Binärwort c(M) codieren läßt. Damit ist die Menge der möglichen<br />

Turingmaschinen über {0, 1} abzählbar (vergl. Anhang zum Script <strong>für</strong><br />

TheoInf 1), also auch die Menge der semi-entscheidbaren Sprachen über<br />

{0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.)<br />

Andererseits ist die Potenzmenge P(Σ ∗ ) überabzählbar. Es muß also<br />

Sprachen über {0, 1} geben, die nicht semi-entscheidbar sind. Konkret<br />

gilt dies etwa <strong>für</strong><br />

L code<br />

:= { w ∈ {0, 1} ∗ : w = c(M) <strong>für</strong> eine TM M mit w /∈ L(M) }<br />

L code<br />

besteht also aus den Binärcodes aller TM’n, die ihr eigenes<br />

Codewort nicht akzeptieren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 32 / 215


3. Turingmaschinen 3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

Satz<br />

L code<br />

ist nicht semi-entscheidbar.<br />

Beweis.<br />

Wenn eine TM M mit L(M) = L code<br />

existiert, erfüllt w = c(M) die<br />

Bedingung w ∈ L(M) = L code<br />

gdw. w /∈ L(M) = L code<br />

, Widerspruch.<br />

Die Trennung der entscheidbaren von den semi-entscheidbaren Sprachen<br />

erfolgt in Kapitel 5 mit Hilfe der Sprache<br />

L halt<br />

:= { c(M)w : M TM, die bei Eingabe w hält }<br />

die semi-entscheidbar aber nicht entscheidbar ist (Halteproblem).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 33 / 215


3. Turingmaschinen 3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

Satz<br />

Jede kontextfreie Sprache ist entscheidbar.<br />

Beweis.<br />

Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert<br />

werden: der Kopf auf B 0 fährt zum linken Rand der Eingabe und B 1<br />

dient zur Simulierung des Kellers, der sich von der aktuellen Kopfposition<br />

nach rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie<br />

Sprache semi-entscheidbar.<br />

Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten<br />

beginnen, der immer hält. Dies ist sicher der Fall, wenn keine<br />

spontanen Übergänge auftreten. Und letzteres kann garantiert werden,<br />

wenn der Kellerautomat ausgehend von einer kontextfreien Grammatik in<br />

Greibach Normalform konstruiert wird, vergl. Skript zu TheoInf 1).<br />

Alternativ könnte man den CYK-Algorithmus per TM implementieren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 34 / 215


3. Turingmaschinen 3.2 Die Chomsky-Hierarchie formaler Sprachen<br />

Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte<br />

Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an:<br />

Alle Sprachen, L code<br />

;<br />

die semi-entscheidbaren Sprachen, L halt<br />

, s.u.;<br />

die entscheidbaren Sprachen, { a n b n c n : n ∈ N } ;<br />

die kontextfreien Sprachen, { w sp(w) : w ∈ Σ ∗ } ;<br />

die deterministisch kontextfreien Sprachen; { a n b n : n ∈ N } ;<br />

die regulären Sprachen, {a 2n : n ∈ N } ;<br />

die endlichen Sprachen.<br />

Nicht betrachtet wurde die Klasse der kontext-sensitiven Sprachen, echt<br />

zwischen den Klassen der kontextfreien und der entscheidbaren Sprachen.<br />

Man spricht in diesem Zusammenhang auch von der Chomsky-Hierarchie.<br />

Sie wurde von Noam Chomsky Mitte der 1950’er Jahre entwickelt.<br />

Allerdings lag der Schwerpunkt damals auf linguistischen Fragestellungen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 35 / 215


3. Turingmaschinen 3.3 Abschlußeigenschaften (semi-)entscheidbarer Sprachen<br />

3.3 Abschlußeigenschaften (semi-)entscheidbarer Sprachen<br />

Satz<br />

Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter<br />

Vereinigung und Durchschnitt;<br />

Konkatenation und Iteration;<br />

Spiegelung und Shuffle;<br />

Residuierung bzgl. endlicher Sprachen.<br />

Darüberhinaus sind die entscheidbaren Sprachen unter Komplementbildung<br />

abgeschlossen, die semi-entscheidbaren Sprachen aber nicht.<br />

Beweis<br />

Vorbemerkung: Bei semi-entscheidbaren Sprachen erfordert die Simulation<br />

mehrerer dTM’n Interleaving. Diese Einschränkung entfällt bei der<br />

Verwendung nichtdeterministischer Maschinen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 36 / 215


3. Turingmaschinen 3.3 Abschlußeigenschaften (semi-)entscheidbarer Sprachen<br />

Beweis (Fortsetzung).<br />

Zu Vereinigung, Iteration, Shuffle und Residuierung vergl. HA.<br />

Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanz<br />

bedingung ist insoweit anzupassen, als beide Maschinen akzeptieren<br />

müssen.<br />

Im Falle der Konkatenation kann die Eingabe zufällig in zwei<br />

zusammenhängende Teile zerlegt werden, die dann als Eingabe <strong>für</strong> die zu<br />

simulierenden Maschinen dienen; dies liefert eine nTM.<br />

Für die Spiegelung verwendet man ein neues Band um die Eingabe zu<br />

spiegeln, bevor die Maschine <strong>für</strong> die ursprüngliche Sprache simuliert wird.<br />

Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus<br />

ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. In Kapitel 5<br />

zeigen wir, daß das Komplement von L halt<br />

nicht semi-entscheidbar ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 37 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

3.4 Turing-berechenbare partielle Funktionen<br />

Wir wollen TM’n nun auch zur Berechnung partieller Funktionen<br />

Σ ∗ f<br />

Γ ∗ einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die<br />

Spezifikation eines Finalzustands q F ist hier verzichtbar.<br />

Zu vereinbaren bleibt, welcher Teil des Bandinhalts nach dem Halt der<br />

Maschine als Funktionswert interpretiert werden soll. Wir wollen da<strong>für</strong> das<br />

längste zusammenhängende Wort aus Γ ∗ verwenden, das links neben der<br />

finalen Kopfposition auf einem designierten Band auftritt. Das Feld des<br />

Kopfes gehört nicht dazu, aber nach einem Linksschritt könnte die<br />

Ausgabe ggf. als Eingabe <strong>für</strong> eine weitere Maschine verwendet werden,<br />

sofern das restliche Band leer ist.<br />

Partielle Funktionen der Form (Σ ∗ ) n f (Γ ∗ ) k mit n > 1 oder k > 1<br />

erfordern Trennzeichen zwischen den Komponenten der Ein- bzw.<br />

Ausgabe. Auch wenn das Blankzeichen da<strong>für</strong> verwendet werden kann, wird<br />

dies nicht empfohlen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 38 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .)<br />

Idee: 2-Band Maschine; Eingabe zweimal von B 0 auf B 1 kopieren.<br />

〈|, #〉/〈|, L〉, 〈|, R〉<br />

〈|, #〉/〈#, R〉, 〈|, R〉<br />

start<br />

q 0<br />

〈#, #〉/〈#, R〉, 〈#, N〉<br />

q F<br />

oder geschickter start r 0<br />

〈|, #〉/〈#, N〉, 〈|, R〉<br />

〈#, #〉/〈#, L〉, 〈|, R〉<br />

r1<br />

Beim aktuellen Bandinhalt 〈#, #〉 in Zustand q F bzw. r 0 hält die<br />

jeweilige Maschine mit dem Ergebnis auf B 1 und B 0 leer.<br />

Beispiel ( f (w) = |w| : Wähle Γ = {|} disjunkt zu Σ .)<br />

Idee: Eingabe mit Symbolen | überschreiben; rechten Rand suchen.<br />

a/〈|, L〉<br />

|/〈|, R〉<br />

start<br />

q 0<br />

#/〈#, R〉<br />

q F<br />

mit a ∈ Σ<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 39 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Beispiel ( f (n, m) = n + m : Wähle Σ = Γ = {|} , B = {|, @, #} .)<br />

Idee: 2-Band Maschine; Eingabe auf B 1 kopieren, dabei das Trennsymbol<br />

@ überspringen.<br />

〈|, #〉/〈#, L〉, 〈|, R〉<br />

〈|, #〉/〈#, L〉, 〈|, R〉<br />

start<br />

q 0<br />

〈@, #〉/〈#, L〉, 〈#, N〉<br />

q F<br />

Idee: 1-Band Maschine; Trennsymbol @ mit erstem | von rechts<br />

überschreiben<br />

|/〈|, L〉<br />

|/〈|, R〉<br />

start q 0<br />

|/〈#, L〉 q1<br />

@/〈|, R〉<br />

q F<br />

@/〈#, N〉<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 40 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .)<br />

Wir begnügen uns nun mit einer High-Level-Beschreibung:<br />

Idee: 3-Band Maschine; das zweite Argument der Eingabe | n #| m auf B 2<br />

verschieben; <strong>für</strong> jedes Symbol | auf B 2 das verbliebene Argument | n von<br />

B 0 nach B 1 kopieren, von links nach rechts.<br />

Bemerkung<br />

Die Erfahrungen mit Turing Maschinen und anderen Versuchen aus der<br />

ersten Hälfte des 20. Jahrhunderts, den Begriff der “durch einen<br />

(terminierenden) Algorithmus berechenbaren Funktion” formal zu fassen,<br />

führten zu der Vermutung, daß jede solche (totale) Funktion<br />

Turing-berechenbar sein muß. Diese nicht beweisbare Vermutung ist<br />

bekannt als Church-Turing These und wird in Kapitel 4 ausführlicher behandelt.<br />

Wie üblich stellt sich jetzt die Frage nach Funktionen, die nicht<br />

Turing-berechenbar sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 41 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Definition<br />

Die sog. Busy Beaver Funktion N β N bildet n ∈ N ab auf<br />

die größte Zahl β(n) nichtleerer Felder, die eine 1-Band dTM<br />

über {|} , deren Kopf schreiben und sich bewegen darf und die<br />

über n Nicht-Haltezustände und einen Haltezustand verfügt,<br />

ausgehend vom leeren Band auf diesem hinterlassen kann, wenn<br />

sie hält.<br />

Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen |<br />

Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die<br />

nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden.<br />

Beispiel ( β(0) = 0 und β(1) = 1 )<br />

#/〈|, N〉<br />

start q F , start q 0<br />

|/〈|, L〉<br />

q F<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 42 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Beispiel ( β(2) = 4 )<br />

〈q 0 , #〉 ⊢ 〈q 1 , | #〉<br />

#/〈|, R〉<br />

⊢ 〈q 0 , | | 〉<br />

start<br />

q 0<br />

#/〈|, L〉<br />

q1<br />

|/〈|, R〉<br />

q F<br />

⊢ 〈q 1 , # | | 〉<br />

⊢ 〈q 0 , # | | | 〉<br />

⊢ 〈q 1 , | | | | 〉<br />

|/〈|, L〉<br />

⊢ 〈q F , | | | | 〉<br />

Bei Wikipedia findet man diverses Hintergrundmaterial zum Thema Busy<br />

Beaver (dort heißt die Funktion Σ ), einschließlich einiger Schranken <strong>für</strong><br />

die Werte β(6) und β(10) . Weiterhin sei auf die Seite von Heiner Marxen<br />

verwiesen, der zeitnah über aktuelle Busy Beaver Rekorde buchführt.<br />

Es ist zu empfehlen, den Wert β(3) selbständig nachzurechnen, ohne<br />

obige Quellen zu konsultieren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 43 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Lemma<br />

Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1)<br />

<strong>für</strong> jedes n ∈ N .<br />

Beweis.<br />

Die dTM M mit Haltezustand q F möge β(n) realisieren. Füge einen<br />

neuen Haltezustand q G hinzu und die Übergänge<br />

|/〈|, L〉<br />

q F<br />

#/〈|, L〉<br />

q G<br />

Die neue Maschine M ′ , mit q F als Nicht-Haltezustand, sucht nach links<br />

ein freies Feld, schreibt einen Strich | und hält.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 44 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Satz<br />

Für jede Turing-berechenbare totale Funktion N f N existiert eine Zahl<br />

r f , so daß <strong>für</strong> alle n ∈ N gilt f (n) ≤ β(n + r f ) .<br />

Beweis.<br />

Die Funktion f möge von der dTM M mit r f Zuständen berechnet<br />

werden. Für n ∈ N fügen wir n neue Zustände p i , i < n , zu M hinzu,<br />

sowie folgende Übergänge:<br />

#/〈|, R〉 #/〈|, R〉 #/〈|, R〉 #/〈|, R〉<br />

start p 0<br />

p1 . . . p n−1 q 0<br />

M n produziert ausgehend vom leeren Band n Striche und führt dann M<br />

mit dieser Eingabe aus. Mit M hält auch M n , und dann stehen<br />

mindestens f (n) Striche auf dem Band, also folgt f (n) ≤ β(n + r f ) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 45 / 215


3. Turingmaschinen 3.4 Turing-berechenbare partielle Funktionen<br />

Satz<br />

β ist nicht Turing-berechenbar.<br />

Beweis.<br />

Wir nehmen an, β ist Turing-berechenbar vermöge der dTM M . Dann ist<br />

auch N f N mit n ↦→ β(2n) Turing-berechenbar (Verknüpfung mit der<br />

Verdoppelungsmaschine aus einem früheren Beispiel). Für jedes n ∈ N gilt<br />

nach obigem Satz β(2n) = f (n) ≤ β(n + r f ) . Aber n = r f + 1 liefert<br />

einen Widerspruch zur stengen Monotinie von β .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 46 / 215


4. Church-Turing-These<br />

Kapitel 4<br />

Die Church-Turing These<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 47 / 215


4. Church-Turing-These 4.0 Vorbemerkungen<br />

4.0 Alternativen zu Turingmaschinen<br />

Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse<br />

aller intuitiv “algorithmisch berechenbaren” Funktionen mit der Klasse der<br />

Turing-berechenbaren Funktionen überein.<br />

Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch<br />

untermauert, daß andere natürliche Formalisierungen des Algorithmus<br />

Begriffs dieselben Klassen berechenbarer Funktionen liefern. Zur Sprache<br />

kommen könnten hier<br />

⊲ Registermaschinen (RAMs), die heutigen Computern näher stehen als<br />

klassische TMn (sehr kurz);<br />

⊲ formale Grammatiken (eine Verallgemeinerung kfG’n, sind der<br />

Bologna-Reform zum Opfer gefallen)<br />

⊲ die Theorie der sog. rekursiven Funktionen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 48 / 215


RAM<br />

4. Church-Turing-These 4.1 RAM<br />

Anstelle eines (potentiell unendlichen) Turingbandes verfügt eine Random<br />

Accesss Machine (RAM) oder Registermaschine über einen Datenspeicher<br />

aus potentiell unendlich vielen Register R i , i ∈ N , die Daten in Form von<br />

natürlichen Zahlen unbeschränkter Größe beherbergen können. Das<br />

Register R 0 heißt Akkumulator.<br />

Anstatt eines Schreib-Lese-Kopfes arbeitet eine Steuereinheit taktweise die<br />

(von den Daten separat gespeicherten) Programme zeilenweise ab, gemäß<br />

eines Befehlszählers BZ , der auch als Register aufgefaßt werden kann<br />

(aber ebenfalls nicht zum Datenspeicher gehört).<br />

Die Ein- und Ausgabe erfolgt über separate Bänder, deren Felder natürliche<br />

Zahlen enthalten können (Felder mit dem Inhalt 0 gelten als “leer”), und<br />

auf denen ein Lese- bzw. Schreib-Kopf sich nur nach rechts(!) bewegen<br />

kann (unmittelbar nach dem Lese- bzw. Schreibvorgang, im selben Takt).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 49 / 215


4. Church-Turing-These 4.1 RAM<br />

4.1.0 Befehlssatz einer RAM<br />

Befehl<br />

Wirkung<br />

READ 〈R 0 〉 := 〈read〉, 〈BZ〉 := 〈BZ〉 + 1<br />

der Lesekopf bewegt sich ein Feld nach rechts<br />

WRITE der Schreibkopf schreibt 〈R 0 〉 und bewegt sich ein Feld nach rechts, 〈BZ〉 := 〈BZ〉 + 1<br />

LOAD i 〈R 0 〉 := 〈R i 〉 und 〈BZ〉 := 〈BZ〉 + 1<br />

STORE i 〈R i 〉 := 〈R 0 〉 und 〈BZ〉 := 〈BZ〉 + 1<br />

ADD i 〈R 0 〉 := 〈R i 〉 + 〈R 0 〉 und 〈BZ〉 := 〈BZ〉 + 1<br />

PRED 〈R 0 〉 := pred〈R 0 〉 1 und 〈BZ〉 := 〈BZ〉 + 1<br />

GOTO m<br />

〈〈BZ〉 :=<br />

{<br />

m<br />

m falls 〈R<br />

IF R i = 0 GOTO m 〈BZ〉 :=<br />

i 〉 = 0<br />

〈BZ〉 + 1 sonst<br />

{<br />

m falls 〈R<br />

IF R i > 0 GOTO m 〈BZ〉 :=<br />

i 〉 > 0<br />

〈BZ〉 + 1 sonst<br />

STOP<br />

Maschine hält<br />

Weiter kann man <strong>für</strong> LOAD , STORE und ADD das Argument i statt als<br />

Zählindex <strong>für</strong> Register R i auch zur indirekte Adressierung des Registers<br />

R 〈Ri 〉 oder als Konstante i ∈ N verwenden. Dies wird durch einen Asterisk<br />

∗ bzw. ein Ausrufezeichen ! vor dem i angezeigt.<br />

1 mit pred(n + 1) = n und pred0 = 0<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 50 / 215


4. Church-Turing-These 4.1 RAM<br />

Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten,<br />

daß Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind.<br />

Beispiel<br />

SUCC i / PRD i soll den Inhalt von R i<br />

STORE α 〈R α 〉 = 〈R 0 〉<br />

LOAD !1 〈R o 〉 = 1<br />

ADD i 〈R 0 〉 := 〈R i 〉 + 1<br />

STORE i 〈R i 〉 := 〈R i 〉 + 1<br />

LOAD α 〈R 0 〉 = 〈R α 〉<br />

um 1 erhöhen/vermindern:<br />

STORE α 〈R α 〉 = 〈R 0 〉<br />

LOAD i 〈R 0 〉 = 〈R i 〉<br />

PRED 〈R 0 〉 := pred〈R i 〉<br />

STORE i 〈R i 〉 := pred〈R i 〉<br />

LOAD α 〈R 0 〉 = 〈R α 〉<br />

Dabei ist R α ein zum Zeitpunkt des Aufrufs freies Register, das manuell<br />

anzupassen ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 51 / 215


4. Church-Turing-These 4.1 RAM<br />

Beispiel ( SUB i subtrahiert 〈R 0 〉 von 〈R i 〉 , soweit möglich:)<br />

0. IF R i = 0 GOTO 8<br />

1. PRED<br />

2. PRD i (braucht fünf Schritte)<br />

7. GOTO 0<br />

8. LOAD i<br />

Beispiel ( IF R i = k GOTO m <strong>für</strong> k > 0 :)<br />

0. STORE α<br />

1. LOAD !k<br />

2. SUB i (braucht neun Schritte)<br />

11. STORE i<br />

12. LOAD α<br />

13. IF R i = 0 GOTO m<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 52 / 215


4. Church-Turing-These 4.1 RAM<br />

4.1.2 Simulation einer TM durch eine RAM<br />

Die Zustandsmenge wird durchnummeriert: Q = { q i : i < n }<br />

Das Bandalphabet B wird durchnummeriert: B = { s i : i < m } mit<br />

s 0 = # .<br />

Die Bandzellen werden durchnummeriert, mit 0 <strong>für</strong> die Kopfposition<br />

in der Initialkonfiguration, ungerade Zahlen nach rechts, gerade<br />

Zahlen nach links.<br />

Die Übergangstabelle 〈q i , s j 〉 ↦→ 〈q r , A t 〉 wird programmiert.<br />

Neben dem Akkumulator R 0 seien R 1 <strong>für</strong> den Zustandsindex und R 2 <strong>für</strong><br />

die Kopfposition reserviert, während R 3+i <strong>für</strong> den Inhalt von Zelle i<br />

zuständig ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 53 / 215


4. Church-Turing-These 4.1 RAM<br />

Die Simulation besteht aus drei Teilen:<br />

Zunächst wird die Eingabe a 0 a 1 . . . a k−1 in die Register R 3 , R 5 ,<br />

. . . , R 1+2k übertragen, durch wiederholte Anwendung von READ .<br />

Nach Erreichen von # werden die Register R 1 und R 2 gemäß der<br />

Initialkonfiguration initialisiert. Anschließend sind die den Übergängen<br />

〈q i , b j 〉 ↦→ 〈q r , a t 〉 mit b j ∈ B und a t ∈ B + {L, R} entsprechenden<br />

Programme auszuführen, solange Übergänge verfügbar sind.<br />

Der Bandinhalt links der Kopfposition wird auf das Ausgabeband<br />

übertragen, bis ein Blankzeichen auftritt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 54 / 215


4. Church-Turing-These 4.1 RAM<br />

4.1.2 RAM-Berechenbarkeit<br />

Definition<br />

Eine RAM berechnet eine (partielle) Funktion N k N, falls die RAM<br />

bei genau den Eingaben aus dem Definitionsbereich D(f ) hält und dann<br />

der einzige Wert auf dem Ausgabeband mit dem Funktionswert von f<br />

übereinstimmt.<br />

Nachdem die Simulierbarkeit von Turing-Maschinen durch RAMs<br />

konzeptionell bereits etabliert worden ist, gilt es nun, auch die umgekehrte<br />

Simulierarkeit zu zeigen.<br />

Satz<br />

Jede RAM-berechenbare Funktion ist Turing-berechenbar.<br />

f<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 55 / 215


4. Church-Turing-These 4.1 RAM<br />

Beweis<br />

Wir simulieren ein RAM-Programm <strong>für</strong> f mit Hilfe einer 6-Band TM mit<br />

Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A<br />

(“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung<br />

des endlichen RAM-Programms dient.<br />

B 0 dient zur Eingabe mit @| x 0<br />

@| x 1<br />

@ . . . | x n−1<br />

@ ;<br />

B 1 enthält die zunächst nichtleeren Register 〈R i 〉 = n in der Form<br />

@| i @| n @ ; aktuelle Angaben <strong>für</strong> R i werden rechts angefügt (das<br />

erspart das Verändern von Zahlen in der Mitte des Bandes); dann ist<br />

auch n = 0 möglich;<br />

B 2 und B 3 fungieren als Akkumulator bzw. Befehlszähler;<br />

B 4 ist ein Hilfsband und B 5 dient der Ausgabe.<br />

Zu Beginn sind alle Bänder außer B 0 leer. Dann wird immer der Befehl<br />

simuliert, dessen Zeilennummer auf B 3 steht.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 56 / 215


4. Church-Turing-These 4.1 RAM<br />

Beweis (Fortsetzung)<br />

Nun gilt es, die einzelnen RAM-Befehle zu simulieren. ...<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 57 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

4.2 Rekursive Funktionen<br />

Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer<br />

Funktionen geht algebraisch vor. Ausgehend von sog. “Grundfunktionen”<br />

wird mit zwei Operationen zunächst die Klasse der “primitiv rekursiven<br />

Funktionen” aufgebaut. Der Abschluß unter einer dritten Operation liefert<br />

dann die Klasse der “rekursiven Funktionen”.<br />

Definition (Grundfunktionen)<br />

Projektionen N k π k i<br />

N, 〈n j : j < k〉 ↦→ n i , <strong>für</strong> k ∈ N und i < k ;<br />

Konstante Funktionen N k κ k 0<br />

N, 〈n j : j < k〉 ↦→ 0 , <strong>für</strong> k ∈ N ;<br />

Nachfolger-Funktion N succ N, n ↦→ n + 1 .<br />

Speziell im Fall k = 0 ist N 0 ein Singleton {∗} . Dann existieren keine<br />

κ<br />

Projektionen, und die Konstante {∗}<br />

0 0<br />

N kann mit dem Element<br />

0 ∈ N identifiziert werden (Funktion ohne Parameter).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 58 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Zunächst wollen wir die bekannte Verknüpfung von Funktionen<br />

N g N f N , n ↦→ f (g(n)) =: (f ◦ g)(n)<br />

auf die mehrstellige Funktionen übertragen. Falls N k N brauchen wir<br />

k Funktionen N t i g i<br />

N, die man im einfachsten Fall per Substitution zu<br />

einer Funktion N ∑ i


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

f<br />

Stattdessen kann man <strong>für</strong> N k N auch k Funktionen g i mit<br />

demselben Definitionsbereich N m betrachten, und daraus eine kombinierte<br />

Funktion von N m nach N gewinnen, indem man die Eingabe <strong>für</strong> alle<br />

Funktionen g i klont:<br />

g 0 g 1 g 2<br />

f<br />

Definition (“Klon-Komposition”)<br />

Für N k<br />

f<br />

N und N m g i<br />

N, i < k setze N m f ◦ 〈g i : i < k〉<br />

N<br />

〈n j : j < m〉 ↦→ f ( g 0 (n j : j < m), . . . , g k−1 (n j : j < m) )<br />

Diese Operation wird in der Literatur auch als “Substitution” oder<br />

“Komposition” bezeichnet.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 60 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beispiel<br />

Konstante Funktionen N k κ k i<br />

N mit i ∈ N ergeben sich aus κ k 0 durch<br />

i -fache Verknüpfung mit der Nachfolger-Funktion: κ k i<br />

= (succ) i ◦ κ k 0 .<br />

Beispiel<br />

Die durch f (n) = n + 2 spezifizierte Funktion N f N läßt sich durch<br />

f = succ ◦ succ realisieren.<br />

Entsprechend liefert die Spezifikation g(m, n) = n + 2 eine Funktion<br />

N 2 g<br />

N mit g = f ◦ π1 2 .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 61 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Satz<br />

Substitution läßt sich auf Klon-Komposition zurückführen.<br />

Beweis<br />

f<br />

Für N k N erweitert man den Definitionsbereich der Funktionen<br />

N t i g i<br />

N, i < k , mittels Dummy-Argumenten zu N t mit t = ∑ i


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Die zweite Operation zur Konstruktion primitiv-rekursiver Funktionen:<br />

Definition (Induktions-Rekursions-Schema (IRS))<br />

Aus zwei Funktionen N k−1<br />

N k f = IR(g, h)<br />

N gemäß<br />

g<br />

N h N k+1 konstruieren wir eine dritte<br />

f (x , 0) := g(x ) und f (x , m + 1) := h(x , m, f (x , m)) mit x ∈ N k−1<br />

Die Rekursion erfolgt bei festem x ∈ N k−1 im letzten Argument. Der<br />

Startwert f (x , 0) ist durch g bestimmt, während bei Kenntnis von<br />

f (x , m) der Wert <strong>für</strong> das Nachfolger-Argument m + 1 mit Hilfe von h<br />

bestimmt werden kann.<br />

Definition (Primitiv rekursive Funktionen)<br />

Die primitiv rekursiven Funktionen bilden den Abschluß der Grundfunktionen<br />

unter der Klon-Komposition und dem Induktions-Rekursions-<br />

Schema, d.h., die kleinste Klasse PR von Funktionen N k N, die unter<br />

beiden Operationen abgeschlossen ist und die Grundfunktionen enthält.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 63 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beispiel<br />

Die Fakultätsfunktion fac(n) = n! = ∏ i≤n<br />

i ist primitiv rekursiv.<br />

Da f nicht offensichtlich die Klon-Komposition einfacherer Funktionen<br />

ist, versuchen wir, fac mit Hilfe des Induktions-Rekursions-Schemas<br />

darzustellen. fac(0) = 1 erzwingt g = κ 0 1 . Um einen Kandidaten <strong>für</strong> h<br />

zu finden, wollen wir fac(m + 1) mit fac(m) in Beziehung setzen.<br />

Offenbar gilt<br />

fac(m + 1) = (m + 1)! =<br />

∏<br />

i = (m + 1) · ∏<br />

i = (m + 1) · m!<br />

Das legt N 2<br />

h<br />

i≤m+1<br />

i≤m<br />

= (m + 1) · fac(m) = h(m, fac(m))<br />

N, 〈a, b〉 ↦→ succ(a) · b nahe.<br />

Bei h handelt es sich um das Ergebnis der Substitution von succ und<br />

id N = π0 1 in die Multiplikation N2 mult<br />

N. Die primitive Rekursivität<br />

von h folgt, wenn wir die der Multiplikation nachweisen können.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 64 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beispiel (Fortsetzung)<br />

Da die Multiplikation weder auf Klon-Komposition noch auf Substitution<br />

basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir<br />

g ′ = κ 1 0 ,während n · (m + 1) = n + n · m = h′ (n, m, n · m) die Wahl von<br />

h ′ (a, b, c) = a + c nahelegt, genauer: h ′ = plus ◦ 〈π 3 0 , π3 2 〉 .<br />

plus<br />

Damit bleibt die Addition N 2 N auf primitive Rekursivität zu<br />

untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur<br />

das IRS. Aus n + 0 = n folgern wir g ′′ = id N = π0 1 . Andererseits legt<br />

n + (m + 1) = (n + m) + 1 = h ′′ (n, m, n + m) die Wahl von<br />

h ′′ (a, b, c) = c + 1 nahe, genauer: h ′′ = succ ◦ π2 3 .<br />

Zusammenfassend sind folgende Funktionen primitiv rekursiv:<br />

plus = IR(π 1 0, succ ◦ π 3 2)<br />

mult = IR(κ 1 0, plus ◦ 〈π 3 0, π 3 2〉)<br />

fac = IR(κ 0 1, mult ◦ (succ × π 1 0))<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 65 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Satz<br />

Jede primitiv rekursive Funktion ist total.<br />

Beweis.<br />

Alle Projektionen πi k , jede konstante Funktion κ k 0 und die<br />

Nachfolgerfunktion succ sind überall definiert, d.h., total.<br />

f<br />

Sind N k N und N m g i<br />

N, i < k , überall definiert, so gilt dies<br />

auch <strong>für</strong> die Klon-Komposition f ◦ 〈g i : i < k〉 .<br />

g<br />

Sind N k−1 N h N k+1 überall definiert, so ist f := IR(g, h)<br />

zumindest auf N k−1 × {0} definiert. Und falls f (x , m) definiert ist, so<br />

auch f (x , m + 1) = h(x , m, f (x , m)) .<br />

Die Struktur dieses Beweise können wir auch <strong>für</strong> folgenden Satz anwenden:<br />

Satz<br />

Jede primitiv rekursive Funktion ist Turing-berechenbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 66 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beweis.<br />

Alle Projektionen πi k , jede konstante Funktion κ k 0 und die Nachfolgerfunktion<br />

succ sind Turing-berechenbar, mittels sehr einfacher Maschinen.<br />

f<br />

Sind N k N und N m g i<br />

N, i < k , total und Turing-berechenbar, so<br />

wählen wir Maschinen M und T i , i < k , mit separaten Ein- und<br />

Ausgabebändern, die dies realisieren. Die Maschine K <strong>für</strong> die<br />

Klon-Komposition f ◦ 〈g i : i < k〉 simuliert nacheinander die Maschinen<br />

T i , i < k , mit derselben Eingabe w ∈ N m , und schreibt die Ergebnisse<br />

durch @ getrennt auf das Eingabeband der Simulation von M .<br />

Anschließend wird M mit ebendieser Eingabe simuliert.<br />

g<br />

Sind N k−1 N h N k+1 total und Turing-berechenbar durch M g<br />

und M h , berechnen wir f := IR(g, h) mit folgender Maschine: bei<br />

Eingabe 〈x , m〉 simulieren wir zunächst M g mit Eingabe x und Ausgabe<br />

f (x , 0) = g(x ) . Anschließend simulieren wir m-mal M h mit Eingabe<br />

〈x , i, f (x , i)〉 und Ausgabe f (x , i + 1) , i < m .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 67 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Satz<br />

Die Menge der primitiv-rekursiven Funktionen ist abzählbar.<br />

Beweis.<br />

Offenbar ist die Menge PR 0<br />

der Grundfunktionen abzählbar.<br />

Entsteht PR n+1 durch Anwendung der Klon-Komposition und des IRS auf<br />

Funktionen aus PR n , so folgt wegen id IN ∈ PR 0 sofort PR 0 ⊆ PR 1 , und<br />

per Induktionauch PR n ⊆ PR n+1 .<br />

Es gibt höchstens PR n × PR n viele Möglichkeiten, das IRS, und höchstens<br />

(PR n ) ∗ viele Möglichkeiten, die Klon-Komposition anzuwenden. Damit<br />

folgt aus der Abzählbarkeit von PR n auch die von PR n+1 , und somit<br />

auch die von PR = ⋃ n∈N PR n .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 68 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Satz<br />

Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv.<br />

Beweisidee<br />

Wir betrachten eine Aufzählung ϕ i , i ∈ N , der primitiv-rekursive<br />

Funktion, die entsprechende Stelligkeit sei σ i . Definiere die<br />

Diagonalfunktion N ∆ N durch<br />

∆(n) := ϕ n (〈n : i < σ n 〉) + 1<br />

<strong>für</strong> n ∈ N<br />

Nach Konstruktion kann ∆ mit keiner einstelligen Funktion der Form ϕ n<br />

übereinstimmen: aus ∆ = ϕ n folgt ∆(n) = ϕ n (n) + 1 ≠ ϕ n (n) .<br />

Aber ∆ ist Turing-berechenbar: wähle zu n ∈ N eine Maschine M n <strong>für</strong><br />

ϕ n , wende sie auf 〈n : i < σ n 〉 an und bilde den Nachfolger. Daß dieses<br />

von einer TM bewerkstelligt werden kann, werden wir in Kapitel 5 sehen<br />

(Stichwort: universelle Turingmaschine).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 69 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre))<br />

Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste<br />

Beispiele <strong>für</strong> eine totale intuitiv berechenbare Funktion, die nicht primitiv<br />

rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige<br />

Funktion gefunden; Sudan und Ackermann waren beide Schüler von David<br />

Hilbert.) Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von<br />

Rózsa Péter zur bekannten zweistelligen Version vereinfacht:<br />

⎧<br />

⎪⎨ m + 1 falls n = 0;<br />

A(n, m) := A(n − 1, 1) falls n > 0 und m = 0;<br />

⎪⎩<br />

A(n − 1, A(n, m − 1)) falls n > 0 und m > 0.<br />

ist Turing-berechenbar, da A(n, m) tatsächlich nur von endlich vielen<br />

vorher zu berechnenden Werten A(k, l) mit k ≤ n und l < m abhängt.<br />

Das z.B. auf Wikipedia beschriebene Wachstumsverhalten english deutsch<br />

verhindert, daß A primitiv rekursiv sein kann: A “wächst zu schnell”<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 70 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Definition<br />

h<br />

Eine Funktion N 2 N majorisiert eine Funktion N m N, falls<br />

b ∈ N existiert, so daß <strong>für</strong> jedes a ∈ N m mit a := max〈a i : i < m〉 gilt<br />

g(a) < h(a, b)<br />

Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies<br />

h(b, b) < h(b, b) zur Folge.<br />

Satz<br />

Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv<br />

rekursiven Funktionen. Insbesondere kann A nicht primitiv-rekursiv sein.<br />

Beweisidee<br />

Man zeigt, analog zu früheren Beweisen, daß A alle Grundfunktionen<br />

majorisiert, und daß die Eigenschaft, von A majorisiert zu werden, unter<br />

Klon-Komposition und dem IRS erhalten bleibt, Details auf PlanetMath.<br />

g<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 71 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Historische Anmerkungen:<br />

Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den<br />

Zusammenhang der verschiedenen Begriffe der rekursiven Funktion,<br />

Mathematische Annalen, 110: 612–632 (1934).<br />

Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und<br />

seinen Schülern bekannt gewesen sein: David Hilbert, Über das<br />

Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird<br />

auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum<br />

Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99,<br />

118–133 aber erst 1928 erschien. Hier wird auch Sudans Arbeit Sur<br />

le nombre transfini ω ω , Bulletin mathematique de la Societe<br />

roumaine des sciences 30: 11–30, (1927) zitiert.<br />

Schon Hermann Grassmann beschrieb die induktive Definition von<br />

Addition und Multiplikation in seinem Lehrbuch der Arithmetik <strong>für</strong><br />

höhere Lehranstalten (1861). Diese Idee wurde später unabhängig<br />

von Richard Dedekind wiederentdeckt: Was sind und was sollen die<br />

Zahlen? (1888).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 72 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir<br />

einen Minimierungs- oder µ-Operator ein.<br />

Solche existieren <strong>für</strong> Prädikate (= Relationen), <strong>für</strong> totale und partielle<br />

Funktionen, sowie in beschränkter und unbeschränkter Form PlanetMath .<br />

Wir brauchen die unbeschränkte Variante <strong>für</strong> partielle Funktionen:<br />

Definition<br />

Die Minimierung N k µf<br />

N einer k + 1-stelligen partiellen Funktion<br />

f<br />

N ist definiert durch<br />

N k+1<br />

x ↦→ µf (x ) := min{ m : f (x , m) = 0 ∧ ∀j < m. f (x , j) ist definiert }<br />

Alternative Schreibweise mit m als gebundener Variable: µm. f (x , m) .<br />

µsucc<br />

Im Allgemeinen wird µ Totalität nicht erhalten. Z.B. ist {∗} N<br />

undefiniert, da succ den Wert 0 nicht annimmt, die zu minimierende<br />

Menge also leer ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 73 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Definition<br />

Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der Klasse<br />

der primitiv rekursiven Funktionen unter Minimierung.<br />

Beispiel<br />

Die partielle Vorgängerfunktion N pvor N, n + 1 ↦→ n , ist µ-rekursiv<br />

als Ergebnis der Anwendung des µ-Operators auf eine primitiv-rekursive<br />

Funktion (vergl. HA), die wegen ihrer Totalität die grüne Extrabedingung<br />

automatisch erfüllt:<br />

N 2 f N , 〈n, m〉 ↦→ n − . succ m + succ m − . n<br />

Offengar gilt f (n, m) = 0 gdw succ m = n , was nur im Fall n > 0<br />

möglich ist, und zwar <strong>für</strong> m = n − 1 . (Diese Anwendung von − . und +<br />

ist typisch, wenn zwei Zahlen auf Gleichheit getestet werden sollen.)<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 74 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Beispiel<br />

sub<br />

Die Subtraktion N 2 N, 〈n, m〉 ↦→ n − m sofern m ≤ n , läßt sich<br />

mit dem IRS darstellen: n − 0 = n impliziert g = id N = π0 1 . Wegen<br />

n − (m + 1) = (n − m) − 1 = h(n, m, sub〈n, m〉) liegt die Wahl von<br />

h(a, b) = pvor(b) nahe, genauer h = pvor ◦ π1 2 .<br />

Beispiel<br />

div<br />

Die ganzzahlige Division N 2 N, 〈n, m〉 ↦→ k sofern k · m = n gilt,<br />

ist µ-rekursiv. Wir setzen zunächst<br />

f (n, m, k) := sub(n, k · m) (oder f (n, m, k) := n − . m · k + m · k − . n)<br />

Aber dann gilt f (0, 0, 0) = 0 , was µ f (0, 0) = 0 zur Folge hätte; das wäre<br />

zumindest unkonventionell. Um im Fall m = 0 Undefiniertheit zu<br />

erzwingen, können wir m durch succ(pvor m) ersetzen, was <strong>für</strong> m = 0<br />

undefiniert ist. Andererseits sind im Fall f (n, m, k) = 0 die Werte<br />

f (n, m, j) mit j < k definiert, woraus dann µ f (n, m) = k folgt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 75 / 215


4. Church-Turing-These 4.2 Rekursive Funktionen<br />

Satz<br />

Jede µ-rekursive Funktion ist Turing-berechenbar.<br />

Beweis.<br />

Wegen der Turing-Berechenbarkeit der primitiv rekursiven Funktionen ist<br />

nur zu zeigen, das der µ-Operator <strong>für</strong> partielle Funktionen Turing-<br />

Berechenbarkeit erhält: Ausgehend von i = 0 werden solange Werte<br />

f (x , i) bestimmt, bis erstmals 0 erscheint; das aktuelle Argument i ist<br />

dann der Wert von µ f (x ) . Andernfalls ist µ f (x ) undefiniert.<br />

Ohne Beweis geben wir die Umkehrung an:<br />

Satz<br />

Jede Turing-berechenbare Funktion ist µ-rekursiv.<br />

Man kann sogar zeigen, daß jede µ-rekursive Funktion durch einmalige<br />

Anwendung des µ-Operators auf eine primitiv rekursive Funktion erhalten<br />

werden kann, also auch die Ackermann-Funktion.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 76 / 215


5. Unentscheidbare Probleme<br />

Kapitel 5<br />

Unentscheidbare Probleme<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 77 / 215


5. Unentscheidbare Probleme 5.0 Problemstellung<br />

5.0 Problemstellung<br />

Wir brauchen Methoden um festzustellen, daß <strong>für</strong> ein Problem kein<br />

terminierender Algorithmus existiert.<br />

Formaler: Für eine gegebene formale Sprache L ∈ Σ ∗ suchen wir nach<br />

Beweisen, daß L nicht entscheidbar ist.<br />

Beispiel<br />

Eingabe: Programmtext P (in JAVA, ALGOL 68. . . ), Eingabedaten E<br />

Aufgabe: Festzustellen, ob P bei Eingabe E terminiert.<br />

Dieses Problem ist nicht entscheidbar!<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 78 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

5.1 Universelle Turingmaschine<br />

Zunächst überzeugen wir uns von der Existenz einer “programmierbaren”<br />

Turingmaschine M U<br />

. An diese stellen wir folgende Anforderungen:<br />

M U<br />

soll beliebige TMn simulieren können, deterministische wie<br />

nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein<br />

Algorithmus, der jeden beliebigen Algorithmus ausführt, insbesondere<br />

auch sich selbst. Praktische Beispiele da<strong>für</strong> sind z.B. Interpreter <strong>für</strong><br />

Programmiersprachen (JAVA-Bytecode,. . . ), CPUs (= Interpreter <strong>für</strong><br />

Maschinencode).<br />

Konkret soll M U<br />

bei Eingaben der Form 〈c(M), w〉 , c(M) der<br />

Binärcode einer TM M , diese Maschine mit Eingabe w ∈ {0, 1} ∗<br />

simulieren, im Entscheidungs- wie im Berechnungsfall.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 79 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

Bemerkung<br />

Wir können uns auf das binäre Alphabet Σ = {0, 1} beschränken, denn<br />

eine Maschine M = 〈Q M , {# M } + Σ, Σ, δ, q 0 , q F 〉 mit |Σ| > 2 können<br />

wir durch eine Maschine ¯M über {0, 1} mit einer Zustandsmenge der<br />

Form ¯Q × Q M simulieren (“zusätzliches Gedächtnis”):<br />

Das Symbol s k , k < |Σ| + 1 , simulieren wir durch 01 k+1<br />

(letztendlich unär), speziell also # M = s 0 durch 01 . Vorteil: damit<br />

wird der Bandinhalt von M durch ein zusammenhängendes Binärwort<br />

auf dem Band von ¯M beschrieben.<br />

Die Bewegung des Kopfes entspricht der Suche nach der nächsten<br />

Null.<br />

Das Überschreiben von s i durch s j erfordert ggf. die Verschiebung<br />

eines Teils des M -Bandinhalts, um keine Lücken entstehen zu lassen.<br />

Dabei dient das Blankzeichen # der Maschine ¯M als Randbegrenzer.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 80 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

Nun wollen wir nTM’n mit n Zuständen über Σ = {0, 1} der Form<br />

M = 〈{ q i : i < n }, {#, 0, 1}, {0, 1}, δ, q 0 , q n−1 〉 mit q n−1 := q F<br />

und t Übergangsregeln ein Binärwort der Form<br />

c(M) = 1110 n 1w 0 1w 1 1 . . . 1w t−1 111<br />

zuordnen, wobei die Wörter w j , j < t , den Regeln aus δ entsprechen.<br />

Ähnlich wie oben codieren wir den Zustand q i durch 10 i+1 , i < n , und<br />

die möglichen Aktionen gemäß<br />

〈#, 0, 1, L, R〉 ↦→ 〈10, 10 2 , 10 3 , 10 4 , 10 5 〉<br />

Übergänge lassen sich nun darstellen als Binärwörter w j<br />

aus<br />

{10 i+1 : i < n}{10, 10 2 , 10 3 }{10 i+1 : i < n}{10, 10 2 , 10 3 , 10 4 , 10 5 }<br />

In c(M) werden deren Grenzen durch zwei Einsen markiert.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 81 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

Beispiel<br />

Eine Binärmaschine M 0 mit zwei Übergängen hat einem Code der Form<br />

c(M) = 111001w 0 1w 1 111 . Etwa<br />

Satz<br />

〈q 0 , 1〉 ↦→ 〈q 1 , L〉 entspricht w 0 = 10100010010000<br />

〈q 1 , #〉 ↦→ 〈q 1 , 1〉 entspricht w 1 = 100101001000<br />

Die Sprachen xC = { c(M) : M ist eine binäre xTM } , x ∈ {n, d} , der<br />

Codes (nicht)deterministischer TM’n sind entscheidbar.<br />

Beweis.<br />

Das entspricht einem Syntaxcheck: Randbegrenzer 111 überprüfen,<br />

Zustandszahl n auslesen, Übergangscodes w j separieren und auf<br />

Konsistenz prüfen. Im deterministischen Fall ist noch sicherzustellen, daß<br />

verschiedene Übergänge verschiedene linke Seiten haben.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 82 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

Beispiel<br />

Wir erinnern an die nicht semi-entscheidbare Sprache<br />

L code<br />

:= { w ∈ {0, 1} ∗ : w = c(M) <strong>für</strong> eine TM M mit w /∈ L(M) }<br />

Die Maschine M 0 aus obigem Beispiel akzeptiert ihren eigenen Code, da<br />

sie nach einem Schritt im Endzustand q 1 hält. Folglich gilt<br />

c(M 0 ) /∈ L code<br />

. Eine ähnliche Maschine M 1 mit den Übergängen<br />

〈q 0 , 1〉 ↦→ 〈q 0 , #〉 und 〈q 0 , #〉 ↦→ 〈q 0 , R〉<br />

erfüllt hingegen c(M 1 ) ∈ L code<br />

, da sie nie hält.<br />

Wir rekapitulieren die Anforderungen an M U<br />

<strong>für</strong> legale Eingaben c(M)w :<br />

⊲ M U<br />

hält auf c(M)w gdw. M hält auf w , und wenn die Maschinen<br />

halten, dann mit identischer Ausgabe.<br />

⊲ M U<br />

akzeptiert c(M)w gdw. M akzeptiert w .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 83 / 215


5. Unentscheidbare Probleme 5.1 Universelle Turingmaschine<br />

Der Einfachheit halber konzipieren wir M U<br />

als 3-Band-Maschine. Diese<br />

kann gemäß unserer Überlegungen in Kapitel 3 auch als 1-Band-Maschine<br />

realisiert werden; erst <strong>für</strong> diese ist dann der Code c(M U<br />

) verfügbar.<br />

Auf B 0 steht zunächst die Eingabe c(M)w .<br />

Der vordere Teil c(M) wird nach B 1 verschoben und einem<br />

Syntaxcheck unterzogen. Damit verbleibt die Eingabe w <strong>für</strong> M auf<br />

B 0 , das ab jetzt die Rolle des einzigen Bandes von M spielt.<br />

Auf B 2 wird über den aktuellen Zustand q i von M mittels i + 1<br />

Nullen buchgeführt; zunächst wird hier eine Null geschrieben.<br />

Die Simulation von M liest zunächst auf B 0 ein Symbol aus<br />

{#, 0, 1} . In Verbindung mit der Zustandsinformation wird auf B 2<br />

nichtdeterministisch nach einem passenden Übergang auf B 1 gesucht.<br />

Gibt es keinen solchen, so hält M U<br />

, wobei genau dann der<br />

Finalzustand von M U<br />

anzunehmen ist, wenn 0 n auf B 2 steht.<br />

Andernfalls wird gemäß der rechten Seite der Zustandsindex auf B 2<br />

angepaßt, die entsprechende Aktion auf B 0 ausgeführt, und der Kopf<br />

auf B 1 am Rand des Codes c(M) geparkt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 84 / 215


5. Unentscheidbare Probleme 5.2 Das Halteproblem<br />

5.2 Das Halteproblem<br />

In Kapitel 3 war L halt<br />

:= { c(M)w : M TM, die bei Eingabe w hält }<br />

erwähnt worden, aber erst jetzt ist die Binärcodierung von TM’n verfügbar.<br />

Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens<br />

eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ”<br />

gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen?<br />

Lösung: Wie in Kapitel 3 gesehen, besitzt jede nTM M eine sog.<br />

Determinisierung M ′ , die M simuliert. Zwar war M ′ als 4-Band<br />

Maschine beschrieben worden, aber diese kann systematisch in eine STM<br />

M d<br />

transformiert werden.<br />

Beobachtung 0: M d<br />

bzw. M ′ hält genau dann bei Eingabe w , wenn<br />

w ∈ L(M) oder jeder Berechnungspfad <strong>für</strong> w terminiert, ohne zu<br />

akzeptieren.<br />

Beobachtung 1: Die Funktion c(M) ↦→ c(M d<br />

) ist Turing-berechenbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 85 / 215


5. Unentscheidbare Probleme 5.2 Das Halteproblem<br />

Definition<br />

L halt<br />

:= { c(M)w : M TM, und M d<br />

hält bei Eingabe w }<br />

Satz<br />

Die Sprache L halt<br />

ist semi-entscheidbar, aber nicht entscheidbar.<br />

Beweis<br />

Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit M U<br />

:<br />

v<br />

v = c(M)w?<br />

Ja<br />

c(M d )w<br />

hält M U ?<br />

Ja<br />

v akz.<br />

Nein<br />

v n. akz.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 86 / 215


5. Unentscheidbare Probleme 5.2 Das Halteproblem<br />

Beweis (Forsetzung).<br />

Entscheidbarkeit: Annahme: L halt<br />

ist entscheidbar. Dann existiert eine<br />

TM M halt<br />

, die immer hält und L(M halt<br />

) = L halt<br />

erfüllt. Wir konstruieren<br />

daraus wie folgt eine dreiteilige TM M code<br />

, die immer hält:<br />

w<br />

w = c(M)?<br />

Ja<br />

c(M d )w<br />

akz. M halt ?<br />

Ja<br />

c(M)w<br />

akz. M U ?<br />

Ja<br />

w n. akz.<br />

Nein<br />

Nein<br />

Nein<br />

w n. akz.<br />

w akz.<br />

w akz.<br />

Nach erfolgreichem Syntaxcheck w = c(M) wird die Maschine L halt<br />

auf<br />

die Eingabe c(M d<br />

)w angewendet. Hält M d<br />

(also auch M ) nicht auf<br />

Eingabe w , so wird w = c(M) von M code<br />

akzeptiert. Andernfalls testet<br />

M U<br />

, ob M die Eingabe w akzeptiert. Genau dann wird w von M code<br />

nicht akzeptiert. Aber dies ist ein Widerspruch zur Nichtentscheidbarkeit<br />

von L code<br />

.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 87 / 215


5. Unentscheidbare Probleme 5.2 Das Halteproblem<br />

Corollar<br />

Das Komplement von L halt<br />

ist nicht semi-entscheidbar.<br />

Beweis.<br />

Wegen der Semi-Entscheidbarkeit von L halt<br />

ist die Semi-Entscheidbarkeit<br />

des Komplements äquivalent zur Entscheidbarkeit von L halt<br />

.<br />

Wie sieht das Komplement von L halt<br />

überhaupt aus?<br />

L halt<br />

= { v ∈ {0, 1} ∗ : ( ∃M. v = c(M)w ) =⇒ M d<br />

hält nicht auf w }<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 88 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

5.3 Weitere unentscheidbare Probleme<br />

Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die<br />

Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit<br />

eines bekannten Problems reduziert wird. Ein ähnliches Verfahren<br />

wird auch in Kapitel 6, Komplexitätstheorie, nützlich sein.<br />

Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an<br />

unentscheidbaren Problemen kennen.<br />

Reduktionsschema<br />

Gegeben: eine formale Sprache L ⊆ {0, 1} ∗ .<br />

Zu zeigen: L ist nicht entscheidbar.<br />

Annahme: L ist entscheidbar. Dann exisiert eine TM M mit L(M) = L ,<br />

die immer hält.<br />

Verfahren: Konstruiere mittels M eine TM ˜M <strong>für</strong> eine bekanntermaßen<br />

untentscheidbare Sprache ˜L , Widerspruch! Damit kann L nicht<br />

entscheidbar gewesen sein.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 89 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

5.3.0 Das Akzeptanzproblem<br />

Satz<br />

Die Sprache L acc<br />

:= { c(M)w : M TM mit w ∈ L(M) } ist unentscheidbar.<br />

Beweis.<br />

Wir nehmen an, die TM M acc<br />

entscheidet L acc<br />

und hält immer.<br />

Idee: Das Halten einer TM M bei Eingabe w in einem Nichtfinalzustand<br />

auf Akzeptanz zurückführen.<br />

Vertauscht man in M die Final- mit den Nichtfinalzuständen, so ist das<br />

formal keine TM. Aber Hinzufügen eines neuen Endzustands q n und neuer<br />

Übergänge 〈q i , s〉 ↦→ 〈q n , s〉 , sofern keine M -Übergänge aus 〈q i , s〉<br />

existieren und i < n − 1 gilt, liefert eine TM, die wir mit ¯M bezeichnen.<br />

Die Funktion c(M) ↦→ c(M ′ ) ist natürlich Turing-berechenbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 90 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

Beweis (Fortsetzung).<br />

Nun konstruieren wir eine dreiteilige TM M halt<br />

, die L halt<br />

entscheidet:<br />

u<br />

u = c(M)w?<br />

Nein<br />

Ja<br />

c(M)w<br />

akz. M acc ?<br />

Ja<br />

Nein<br />

c( ¯M)w<br />

akz. M acc ?<br />

Nein<br />

Ja<br />

u akz.<br />

u n. akz.<br />

u akz.<br />

u n. akz.<br />

M halt<br />

hält auf jede Eingabe, da jede Teilmaschine dies tut.<br />

Nach erfolgreichem Syntaxcheck ist festzustellen, daß M auf w genau<br />

dann hält, wenn entweder M oder ¯M die Eingabe w akzeptiert.<br />

Da L halt<br />

aber nicht entscheidbar ist, kann M acc<br />

nicht existieren .<br />

Andererseits ist das Akzeptanzproblem <strong>für</strong> Kellerautomaten entscheidbar:<br />

Kellerautomaten sind analog binär codierbar und können algorithmisch in<br />

cfG’n umgewandelt werden, sogar in CNF. Der CYK-Algorithmus<br />

entscheidet dann das Akzeptanzproblem.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 91 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

5.3.1 Akzeptanz des leeren Worts<br />

Satz<br />

Die Sprache L ε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar.<br />

Beweis.<br />

Wir nehmen an, die TM M ε entscheidet L ε und hält immer.<br />

Idee: Die Akzeptanz von w ∈ L(M) durch M auf die Akzeptanz von ε<br />

durch eine TM M w zurückführen. Diese schreibt w = s 0 s 1 . . . s m−1 von<br />

links nach rechts auf das leere Band, durch Übergänge 〈q i , #〉 ↦→ 〈q i , s i 〉<br />

und 〈q i , s i 〉 ↦→ 〈r i+1 , R〉 , i < m , und 〈q m−1 , s m−1 〉 ↦→ 〈q m , s m−1 〉 . Dann<br />

wird M mit um m erhöhten Zustandsindizes ausgeführt.<br />

Die Funktion 〈c(M), w〉 ↦→ c(M w ) ist natürlich Turing-berechenbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 92 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

Beweis (Fortsetzung).<br />

Nun konstruieren wir eine zweiteilige TM M acc<br />

, die L acc<br />

entscheidet:<br />

u<br />

u = c(M)w?<br />

Ja<br />

c(M w )<br />

akz. M ε?<br />

Ja<br />

u akz.<br />

Nein<br />

Nein<br />

u n. akz.<br />

u n. akz.<br />

M ε<br />

hält auf jede Eingabe, da beide Teilmaschinen dies tun.<br />

Nach erfolgreichem Syntaxcheck ist festzustellen, daß w genau dann von<br />

M akzeptiert wird, wenn M w die Eingabe ε akzeptiert.<br />

Da L acc<br />

aber nicht entscheidbar ist, kann M ε nicht existieren .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 93 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

5.3.2 Terminierung eines Algorithmus<br />

Satz<br />

Die Sprache L term<br />

:= { c(M) : M TM, die auf jede Eingabe hält } ist<br />

unentscheidbar.<br />

Beweis.<br />

Wir nehmen an, die TM M term<br />

entscheidet L term<br />

und hält immer.<br />

Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei<br />

leerer Eingabe: die modifizierte Maschine ˜M soll zunächst die Eingabe<br />

löschen, mit Hilfe von Übergängen 〈q 0 , s〉 ↦→ 〈q 1 , #〉 ↦→ 〈q 0 , L〉 , s ∈ Σ ,<br />

sowie 〈q 0 , #〉 ↦→ 〈q 2 , #〉 , und bei leerem Band weiter wie M mit um 2<br />

erhöhten Zustandsindizes verfahren.<br />

Die Funktion c(M) ↦→ c( ˜M) ist natürlich Turing-berechenbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 94 / 215


5. Unentscheidbare Probleme 5.3 Weitere unentscheidbare Probleme<br />

Beweis (Fortsetzung).<br />

Nun konstruieren wir eine dreiteilige TM M ε , die L ε<br />

entscheidet:<br />

u<br />

u = c(M)?<br />

Nein<br />

Ja<br />

c(M)<br />

akz. M term ?<br />

Nein<br />

Ja<br />

c( ˜M)<br />

akz. M U ?<br />

Nein<br />

Ja<br />

u akz.<br />

u n. akz.<br />

u n. akz.<br />

u n. akz.<br />

M acc<br />

hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun<br />

und die dritte nur bei garantierter Terminierung aufgerufen wird.<br />

Nach erfolgreichem Syntaxcheck <strong>für</strong> M bedeutet die Entscheidung “Nein”<br />

von M term<br />

auf c( ˜M) , daß M auf ε nicht hält, und folglich ε nicht<br />

akzeptiert. Im “Ja”-Fall existiert dagegen mindestens eine terminierende<br />

Berechnung von M auf ε . Mittels M U überprüfen wir nun, ob es auch<br />

eine akzeptierende Berechnung von M auf ε gibt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 95 / 215


5. Unentscheidbare Probleme 5.4 Satz von Rice<br />

5.4 Satz von Rice<br />

Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von<br />

Teilsprachen von dC oder nC und verwandten Sprachen festzustellen.<br />

Definition<br />

Für eine Eigenschaft S formaler Sprachen setze<br />

L S := { c(M) : M TM und L(M) hat Eigenschaft S }<br />

Wir nennen S trivial, falls keine Sprache der Form L(M) die Eigenschaft<br />

S erfüllt, oder jede solche Sprache dies tut.<br />

Für triviales S ist L S<br />

entscheidbar. Interessanter ist die Umkehrung:<br />

Satz von Rice<br />

Für nicht-triviale Eigenschaften S ist die Sprache L S<br />

nicht entscheidbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 96 / 215


5. Unentscheidbare Probleme 5.4 Satz von Rice<br />

Damit erweisen sich z.B. folgende Sprachen als unentscheidbar:<br />

{ c(M) : M TM und L(M) regulär }<br />

{ c(M) : M TM und L(M) kontextfrei }<br />

{ c(M) : M TM und L(M) ≠ ∅ }<br />

Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa<br />

L ε mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren.<br />

Dagegen ist L term<br />

kein Beispiel <strong>für</strong> die Anwendbarkeit des Satzes von Rice,<br />

da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der<br />

Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt.<br />

L code<br />

ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch<br />

könnte man die Eigenschaft “ c(M) /∈ L(M) ” betrachten: dies ist ebenfalls<br />

keine “legale” Eigenschaft, die eine Sprache L ⊆ {0, 1} ∗ haben kann oder<br />

nicht! Denkbar wäre die Existenz mehrerer TM’n, die L akzeptieren, und<br />

von denen manche Codes zu L gehören und andere nicht. Insofern ist<br />

auch hier der Satz von Rice nicht anwendbar!<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 97 / 215


5. Unentscheidbare Probleme 5.4 Satz von Rice<br />

Beweis des Satzes von Rice.<br />

S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert dann eine<br />

TM M 0 , so daß L(M 0 ) ≠ ∅ die Eigenschaft S besitzt.<br />

Für eine beliebige TM M und w ∈ {0, 1} ∗ sei M w die folgende<br />

Verknüpfung von M 0 mit M : wenn M 0 akzeptiert, soll anschließend M<br />

mit Eingabe w ausgeführt werden. Genauer: nachdem M 0 akzeptiert hat,<br />

ist das Band zu löschen (warum geht das?), dann ist w auf das leere Band<br />

zu schreiben, und schließlich M auszuführen. Damit ist die Abbildung<br />

〈c(M), w〉 ↦→ c(M w ) Turing-berechenbar (Details?), und es gilt<br />

{<br />

L(M w L(M 0 ) falls w ∈ L(M)<br />

) =<br />

∅ sonst<br />

Annahme: L S ist entscheidbar. Dann existiert eine TM M S mit<br />

L(M S ) = L S , die immer hält.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 98 / 215


5. Unentscheidbare Probleme 5.4 Satz von Rice<br />

Beweis (Fortsetzung).<br />

Nun konstruieren wir eine zweiteilige TM M acc , die L acc<br />

entscheidet:<br />

M acc :<br />

u<br />

u = c(M)w?<br />

Nein<br />

Ja<br />

c(M w )<br />

akz. M S ?<br />

Nein<br />

Ja<br />

u akz.<br />

M acc<br />

u n. akz.<br />

u n. akz.<br />

hält auf jede Eingabe, da beide Teilmaschinen dies tun.<br />

u ∈ L(M acc ) gdw u = c(M)w ∧ c(M w ) ∈ L(M S ) = L S<br />

gdw u = c(M)w ∧ L(M w ) hat Eigenschaft S<br />

gdw u = c(M)w ∧ L(M w ) = L(M 0 )<br />

gdw<br />

gdw<br />

u = c(M)w ∧ w ∈ L(M)<br />

u ∈ L acc<br />

Also L(M acc ) = L acc<br />

, Widerspruch. Also existiert M acc nicht und L acc<br />

ist<br />

nicht entscheidbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 99 / 215


5. Unentscheidbare Probleme 5.4 Satz von Rice<br />

Beweis (Fortsetzung).<br />

Falls ∅ die Eigenschaft S hat, betrachten wir die Negation ¯S . Weil ∅<br />

die Eigenschaft ¯S nicht hat, die ebenso wie S nichttrivial ist, folgt wie<br />

oben, daß L¯S nicht entscheidbar ist.<br />

Wir wissen aber bereits, daß die entscheidbaren Sprachen unter<br />

Komplementbildung abgeschlossen sind. Also gilt das auch <strong>für</strong> die nicht<br />

entscheidbaren Sprachen. Weiterhin sind die entscheidbaren Sprachen<br />

unter endlichen Durchschnitten abgeschlossen. Wegen<br />

L¯S = L S ∩ nC<br />

ist somit L S unentscheidbar, folglich also auch L S .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 100 / 215


6. Komplexität von Algorithmen<br />

Kapitel 6<br />

Komplexität von Algorithmen<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 101 / 215


6. Komplexität von Algorithmen 6.0 Übersicht<br />

6.0 Übersicht<br />

Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll<br />

jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal<br />

wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß<br />

die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der<br />

Größe der Eingabe beschränkt ist. Die zugehörige Klasse heißt P .<br />

Beispiel<br />

Eingabe: ungerichteter Graph G = 〈V , E〉<br />

Aufgabe: entscheiden, ob G 2-färbbar ist, d.h., ob die Knoten so mit<br />

zwei Farben gefärbt werden können, daß jede Kante verschiedenfarbige<br />

Endpunkte hat.<br />

Beispiel<br />

Eingabe: natürliche Zahl n > 0<br />

Aufgabe: entscheiden, ob n eine Primzahl ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 102 / 215


6. Komplexität von Algorithmen 6.0 Übersicht<br />

Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer<br />

dTM überprüft werden kann, gehört das Problem zu NP .<br />

Beispiel<br />

Eingabe: ungerichteter Graph G = 〈V , E〉<br />

Aufgabe: entscheiden, ob G 3-färbbar ist.<br />

Für eine potentielle 3-Färbung V f 3 = {0, 1, 2} sind <strong>für</strong> jede Kante<br />

die Farben der Endpunkte zu vergleichen.<br />

Beispiel<br />

Eingabe: n geographische Orte (“Städte”) und ihre Entfernungen (bzw.<br />

Reiskosten), sowie eine Zahl K > 0<br />

Aufgabe: entscheiden, ob es eine Rundreise gibt, die alle Städte genau<br />

einmal besucht und deren Länge (oder Preis) durch K beschränkt ist.<br />

Für eine Permutation der Orte ist die Länge (der Preis) der zugehörigen<br />

Rundreise zu berechnen und mit K zu vergleichen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 103 / 215


6. Komplexität von Algorithmen 6.0 Übersicht<br />

Offenes Problem<br />

Stimmt P mit NP überein?<br />

Millennium-Problem<br />

Die “schwierigsten” Probleme innerhalb der Klasse NP heißen<br />

NP -vollständig. Wenn es gelingt nachzuweisen, daß eines von ihnen zu<br />

P gehört, dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, daß<br />

ein effizienter Algorithmus <strong>für</strong> ein NP -vollständiges Problem gefunden<br />

werden kann.)<br />

Es sind inzwischen sehr viele NP -vollständige Probleme bekannt:<br />

− Garey, Michael R.; Johnson, David S. (1979), Computers and<br />

Intractability: A Guide to the Theory of NP-Completeness, W. H.<br />

Freeman;<br />

− Eine ständig aktualisierte Liste findet sich bei<br />

− Pierluigi Crescenzi, and Viggo Kann (Eds.):<br />

A compendium of NP optimization problems<br />

Wikipedia<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 104 / 215


6. Komplexität von Algorithmen 6.0 Übersicht<br />

6.0.1 Wiederholung: Groß-O-Notation<br />

Wir wollen Funktionen N R + in Bezug auf ihr Wachstum vergleichen.<br />

Informell soll O(g) die Klasse aller Funktionen sein, die asymptotisch<br />

(also <strong>für</strong> große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer:<br />

Definition<br />

Beispiel<br />

f ∈ O(g) gdw ∃c ∈ R + ∃n 0 > 0 ∀n ≥ n 0 . f (n) ≤ c · g(n)<br />

Jedes Polynom p vom Grad t erfüllt p ∈ O(n t ) . Denn aus<br />

p(n) = ∑ p i n i = n ∑ (<br />

t p i /n k−i = n t p t + ∑ )<br />

p i /n t−i<br />

i≤t<br />

i≤t<br />

i


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

6.1 Beispiele effizienter Algorithmen<br />

Vor einer genaueren Analyse graphentheoretische Probleme ist zu klären,<br />

wie Graphen sinnvoll als Eingaben <strong>für</strong> TM’n codiert werden können.<br />

Definition<br />

Ein gerichteter Graph G = 〈V , E〉 besteht aus einer Menge V von<br />

Knoten (Vertices) und einer Relation E ⊆ V × V . Paare 〈u, v〉 ∈ E<br />

werden graphisch als gerichtete Kanten (Edges) oder Pfeile u v<br />

dargestellt, während E als binäre Adjazenzmatrix über V aufgefaßt<br />

werden kann<br />

{<br />

1 falls 〈u, v〉 ∈ E<br />

E u,v =<br />

0 sonst<br />

G heißt ungerichtet, falls die Relation E symmetrisch ist. Dann werden<br />

in der graphischen Darstellung die Hin- und Rückpfeile u v durch<br />

eine ungerichtete Kante u v ersetzt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 106 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten<br />

verwenden, in denen <strong>für</strong> jeden Knoten seine direkten Nachfolger<br />

gespeichert sind, im Wesentlichen die Positionen der Einsen aus der<br />

entsprechenden Zeile der Adjazenzmatrix:<br />

Beispiel<br />

0 1<br />

2<br />

3 4<br />

⎛<br />

⎜<br />

⎝<br />

0 1 0 0 0<br />

0 1 1 0 1<br />

0 0 0 0 0<br />

1 0 0 0 0<br />

0 0 1 1 0<br />

⎞<br />

⎟<br />

⎠<br />

0 → (1)<br />

1 → (1, 2, 4)<br />

2 → ( )<br />

3 → (1)<br />

4 → (2, 3)<br />

Während die Größe der Adjazenzmatrix durch |V | 2 gegeben ist, ist der<br />

Wert <strong>für</strong> die Darstellung mittels Adjazenzlisten mit |E| + |V | vielleicht<br />

präziser, wegen |E| ∈ O(|V | 2 ) aber von derselben Größenordnung.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 107 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Definition<br />

Einer topologischen Sortierung eines gerichteten Graphen G = 〈V , E〉 mit<br />

n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der<br />

Eigenschaft<br />

〈u, v〉 ∈ E impliziert ord(u) < ord(v)<br />

Beispiel<br />

•1 •0<br />

•3<br />

•4 •2<br />

Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit.<br />

Allgemein kann ein gerichteter Graph genau dann topologisch sortiert<br />

werden, wenn er keine Zyklen hat (Test <strong>für</strong> die Existenz von Zyklen).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 108 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Naiver Algorithmus <strong>für</strong> Topologisches Sortieren)<br />

Eingabe: Gerichteter Graph G = (V , E) mit n Knoten und k Kanten<br />

Ausgabe: Topologische Sortierung V ord n, falls G azyklisch<br />

1: {(0) Initialisierung}<br />

2: i := 0 { i : die Zahl, die ord zuweisen soll}<br />

3: W := V { W : die Menge der noch nicht bearbeiteten Knoten}<br />

4: {(1) Rekursionsschritt}<br />

5: while ein Knoten x ∈ W ohne Vorgänger in W existiert do<br />

6: ord(x) := i<br />

7: i := i + 1<br />

8: W := W − {x}<br />

9: end while {Zyklus falls W ≠ ∅ , sonst topologische Sortierung}<br />

Korrektheit: klar.<br />

Laufzeit: (unter Verwendung von Adjazenzmatrizen)<br />

Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A .<br />

Schleife 5 wird m 2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft;<br />

in der Rest-Matrix über W ist eine 0-Spalte zu finden, in Zeit K .<br />

n∑<br />

n∑<br />

T (n) = 2A + (Km 2 + 3A) = 2A + K m 2 + 3An ∈ O(n 3 )<br />

m=1<br />

m=1<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 109 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Verbesserter Algorithmus <strong>für</strong> topologisches Sortieren)<br />

1: {(0) Initialisierung}<br />

2: i := 0 {Laufzeit A , i : die Zahl, die ord zuweisen soll} { A }<br />

3: for alle Knoten v in V do<br />

4: In[v] := 0 {Laufzeit A , In[v] : Vorgängeranzahl von v }<br />

5: end for {Laufzeit A · n } { A · n }<br />

6: for alle Knoten u in V do<br />

7: for alle Knoten v mit einer Kante (u, v) in E do<br />

8: In[v] := In[v] + 1 {Laufzeit A }<br />

9: end for {Laufzeit A · k(v) , k(v) Länge der Nachfolgerliste von v }<br />

10: end for {Laufzeit A · k bei Adjazenzlisten} { A · k }<br />

11: U := ∅ {Laufzeit A , U - Menge aller Knoten v mit In[v] = 0 } { A }<br />

12: for alle Knoten v in V do<br />

13: if In[v] = 0 then<br />

14: U := U ∪ {v}<br />

15: end if {Laufzeit 2A }<br />

16: end for {Laufzeit 2A · n } { 2A · n }<br />

17: {(1) Rekursionsschritt}<br />

18: while U einen Knoten v enthält do<br />

19: U := U − {v} ; ord(v) := i ; i := i + 1 {Laufzeit 3A }<br />

20: for alle Knoten w mit (v, w) ∈ E do<br />

21: In[w] := In[w] − 1 {Laufzeit A }<br />

22: if In[w] = 0 then<br />

23: U := U ∪ {w}<br />

24: end if {Laufzeit 2A }<br />

25: end for {Laufzeit 3A · k(v) }<br />

26: end while {Laufzeit 3A · (n + k) , Zyklus falls i < n , sonst topologische Sortierung} { 3A · (n + k) }<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 110 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Fortsetzung)<br />

Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) .<br />

Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge<br />

eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder<br />

Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n 2 . Ein ähnliches<br />

Argument liefert <strong>für</strong> die FOR-Schleife in Zeile 20 innerhalb der<br />

WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von<br />

Adjazenzmatrizen stünde hier 3A · n 2 .<br />

Damit wäre bei Verwendung von Adjazenzmatrizen die Laufzeit gegeben<br />

durch T (n) = 4A · (n + n 2 ) + 2A · (n + 1) ∈ O(n 2 ) .<br />

Bei der Bestimmung der Effizienz kommt es also darauf an, wie man die<br />

Größe der Eingabe definiert: Hinsichtlich der Knotenzahl |V | läuft der<br />

Algorithmus mit Adjazenzmatrizen in quadratischer Zeit, verglichen mit<br />

kubischer Zeit des naiven Algorithmus. Hinsichtlich der Summe |V | + |E|<br />

läuft der obige Algorithmus in linearer Zeit.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 111 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Fortsetzung)<br />

Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne<br />

Vorgänger. Folglich gilt U ≠ ∅ , solange noch unsortierte Knoten<br />

existieren. Erfolgt in Zeile 19 die Zuweisung ord(v) = i , so wurden allen<br />

Vorgängern von v in früheren Schritten kleinere Werte zugewiesen.<br />

Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die<br />

Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung<br />

mittels Adjazenzmatrizen überlegen, zumal |E| ∈ O(|V | 2 ) gilt.<br />

Beispiel<br />

v1<br />

w4<br />

x3<br />

u0<br />

y2<br />

Adjazenzlisten: u → (v),, v → (w, x) , w → (()),<br />

, x → (w),, y → (x),,<br />

Knoten i In[i] ∈ U? In[i] ∈ U? In[i] ∈ U?<br />

u 0 yes<br />

v 1 0 yes<br />

w 2 1 0 yes<br />

x 2 1 0 yes<br />

y 0 yes<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 112 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu.<br />

Satz<br />

Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen<br />

ungerader Länge besitzt.<br />

Beweis.<br />

Zyklen ungerader Länge sind offensichtlich nicht 2-färbbar, dürfen somit<br />

nicht als Untergraphen auftreten.<br />

Gibt es keine Zyklen ungerade Länge, so färben wir einen Knoten v und<br />

alle Knoten in gerader Entfernung von v rot, und alle übrigen Knoten<br />

blau. Nach Voraussetzung haben alle Verbindungen zwischen je zwei<br />

gleichfarbigen Knoten nur gerade Längen, während alle Verbindungen<br />

zwischen Knoten unterschiedlicher Farbe von ungerader Länge sind.<br />

Idee: Schichtweises Vorgehen: färbe gewähltes v rot, alle Nachbarn blau,<br />

die ungefärbten Nachbarn dieser Menge rot usw.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 113 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Algorithmus <strong>für</strong> 2-Färbung)<br />

Eingabe: ungerichteter Graph G = 〈V , E〉<br />

Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert<br />

1: {(0) Initialisierung}<br />

2: ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung} { O(1) }<br />

3: {(1) Rekursionsschritt}<br />

4: while ∃v ∈ V do<br />

5: V := V − {v} ; ROT := ROT + {v} ; F := F + {v} {Laufzeit 4A }<br />

6: while ∃w ∈ F do<br />

7: for alle Knoten u ∈ V mit {u, w} ∈ E do<br />

8: if w ∈ ROT then<br />

9: BLAU := BLAU + {u}<br />

10: else<br />

11: ROT := ROT + {u}<br />

12: end if {Laufzeit 2A }<br />

13: F := F + {u} ; V := V − {u} {Laufzeit 2A }<br />

14: end for<br />

15: F := F − {w} {Laufzeit A }<br />

16: end while<br />

17: end while { O(n + k) }<br />

18: {(2) Ausgabe}<br />

19: Überprüfen, ob BLAU oder ROT eine Kante enthalten { O(n + k) }<br />

Die Laufzeit ist linear in |V | + |E| , da jeder Knoten und jede Kante<br />

einmal “angefasst” werden.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 114 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Fortsetzung)<br />

Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in<br />

ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls<br />

ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor.<br />

Gehören die Endpunkte von 〈u, w〉 ∈ E zu ROT ( BLAU ), sind beide<br />

durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden<br />

(Induktion). Damit liefern diese Wege samt 〈u, w〉 einen Zyklus ungerader<br />

Länge, Widerspruch.<br />

Beispiel<br />

a<br />

c<br />

e<br />

b<br />

d<br />

f<br />

Knoten a ∈ V a ∈ F c ∈ F d ∈ F b ∈ F e ∈ F f ∈ F<br />

V a − e b − e d, e, f f − − − −<br />

F − a b, c b, d, e b, e, f e, f f −<br />

ROT − a a a.d.e a.d.e a.d.e a.d.e a.d.e<br />

BLAU − − b, c b, c b, c, f b, c, f b, c, f b, c, f<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 115 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Algorithmus <strong>für</strong> 3-Färbung)<br />

Eingabe: Ungerichteter Graph G = (V , E) mit n Knoten und k Kanten<br />

Ausgabe: G mit 3 Farben färben<br />

Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn<br />

man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich<br />

eine Laufzeit O(3 n ) . Andererseits kann man nichtdeterministisch eine<br />

potentielle Färbung raten und diese deterministisch überprüfen.<br />

Beispiel (Algorithmus <strong>für</strong> gerichteten Weg)<br />

Eingabe: Gerichteter Graph G = 〈V , E〉 , Knoten v, w ∈ V<br />

Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert<br />

Idee: iterativ die von v aus erreichbaren Knoten bestimmen und in einer<br />

Hilfs-Menge M sammeln; wenn w am Ende zu M gehört, existiert ein<br />

gerichteter Weg von v nach w .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 116 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Beispiel (Fortsetzung)<br />

1: {(0) Initialisierung}<br />

2: M := {v} { M : die von v erreichbaren Knoten}<br />

3: {(1) Rekursionsschritt}<br />

4: while eine Kante 〈x, y〉 mit x ∈ M und y /∈ M existiert do<br />

5: M := M + {y}<br />

6: E := E − {〈x, y〉}<br />

7: end while<br />

8: {(2) Ausgabe}<br />

9: JA, falls w ∈ M , sonst NEIN<br />

Korrektheit: Klar!<br />

Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Bei<br />

Verwendung von Adjazenzlisten werden maximal n-mal alle k Kanten<br />

getestet, was in einer Laufzeit von O(n · k) resultiert. Im Falle von<br />

Adjazenzmatrizen ist stattdessen eine (n × n)-Matrix maximal n-mal<br />

nach Einsen zu durchsuchen, also ergibt sich O(n 3 ) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 117 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Im Allgemeinen soll die Codierung der Eingaben “vernünftig” sein, etwa:<br />

Zahlen werden binär oder dezimal codiert (so daß ihr Wert<br />

exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei<br />

der Wert mit der Länge übereinstimmt).<br />

Graphen werden mittels Adjazenzmatrizen oder -listen codiert.<br />

Aussagenlogische Formeln werden häufig in konjunktiver Normalform<br />

(KNF) codiert, d.h.,<br />

− jede Formel ϕ ist die Konjunktion von Klauseln;<br />

− jede Klausel ist die Disjunktion von Literalen;<br />

− jedes Literal ist entweder eine Variable oder die Negation einer solchen.<br />

Jede aussagenlogische Formel kann in eine äquivalente Formel in KNF<br />

umgewandelt werden, etwa unter Verwendung der Distributivgesetze<br />

und der de Morgan’schen Regeln.<br />

Ist die Anzahl der Literale pro Klausel durch m ∈ N beschränkt,<br />

sprechen wir von m-KNF. Ein Beispiel in 2-KNF ist etwa<br />

ϕ = (¬x ∨ y) ∧ (¬x ∨ z) ∧ (x ∨ ¬z)<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 118 / 215


6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

In Analogie zur m-Färbbarkeit von Graphen stellt sich im Fall logischer<br />

Formeln die Frage der m-Erfüllbarkeit:<br />

Beispiel<br />

Das E-Problem m-Sat hat als Eingabe eine Formel ϕ in m-KNF. Zu<br />

entscheiden ist, ob diese Formel erfüllbar ist, in dem Sinne, daß eine<br />

Belegung der auftretenden Variablen mit 0 (bzw. false ) und 1 (bzw.<br />

true ) existiert, so daß ϕ den Wert 1 ( true ) erhält.<br />

In Abschnitt 6.3 werden wir mittels Reduktion feststellen, daß 2-Sat zu<br />

P gehört, während die NP -Vollständigkeit von 3-Sat in Abschnitt 6.4<br />

nachgewiesen wird. Das unbeschränkte Erfüllbarkeitsproblem Sat ist<br />

natürlich ebenfalls NP -vollständig (Cooke’scher Satz).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 119 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

6.2 Die Komplexitätsklassen P und NP<br />

Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von<br />

einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst<br />

werden können.<br />

Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein,<br />

d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell.<br />

Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, etwa<br />

TM’n mit mehreren Bändern.<br />

Definition<br />

Eine Funktion N t R + wird als Zeitkomplexität einer nTM M<br />

bezeichnet, wenn M <strong>für</strong> jede Eingabe w ∈ Σ n immer nach höchstens<br />

t(n) Schritten hält. D. h., die Tiefe des Berechnungsbaums von w ist<br />

durch t(|w|) beschränkt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 120 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Bemerkung<br />

Gelegentlich wird <strong>für</strong> die Zeitkomplexität nichtdeterministischer Maschinen<br />

M gefordert, daß nur <strong>für</strong> Wörter aus L(M) eine (etwa die kürzeste)<br />

akzeptierende Berechnung der Länge nach durch t(|w|) beschränkt sein<br />

muß. Dies folgt sofort aus der obigen Definition.<br />

Umgekehrt möchte man M um einen Schrittzähler ergänzen und<br />

Berechnungen von w abbrechen, sobald sie mehr als t(|w|) Schritte<br />

brauchen. Dabei sind |w| und t(|w|) vorher zu bestimmen, was<br />

O(|w| + T (|w|)) Schritte braucht, wobei T die Zeitkomplexität einer<br />

Maschine ist, die t berechnet. Die Zeitkomplexität der modifizierten<br />

Maschine liegt dann in O(n + T (n) + t(n)) . Damit dies mit O(t(n))<br />

übereinstimmt, sollte {n, T (n)} ⊆ O(t(n)) gelten.<br />

Zwar sind beide Definitionen der Zeitkomplexität i.A. nicht äquivalent,<br />

aber sofern es sich bei t und T um Polynome handelt, bleibt die<br />

Zeitkomplexität polynomial, was <strong>für</strong> unsere Zwecke ausreicht.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 121 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Beispiel<br />

Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen<br />

pro Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie<br />

lineare Zeit O(n) .<br />

Beispiel<br />

Eine dTM <strong>für</strong> die Sprache L = { w ∈ {a, b} ∗ : w = sp(w) } aller<br />

Palindrome über Σ = {a, b} könnte wie folgt operieren:<br />

Zeichen am rechten Rand löschen und im Zustand speichern;<br />

linken Rand suchen, und dortiges Zeichen mit dem gespeicherten<br />

Wert vergleichen; im Erfolgsfall linkes Randzeichen löschen und mit<br />

dem nächsten Zeichen von links symmetrisch analog verfahren.<br />

Bei gleichzeitigem Schreiben und Bewegen erfordern die ⌈n/2⌉ Durchläufe<br />

n + 1 , n − 1 , . . . 1 Schritte, was sich durch ⌈n/2⌉(⌈n/2⌉ + 3)/2 ∈ O(n 2 )<br />

abschätzen läßt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 122 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Anmerkungen:<br />

Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine<br />

Beschleunigung um den Faktor k erreichen, da sich die Anzahl der<br />

Durchläufe entsprechend verringert.<br />

Bei Verwendung einer 2-Band TM kann die Eingabe einmal kopiert<br />

und die Kopie direkt in umgekehrter Richtung mit dem Original<br />

verglichen werden, wodurch das Speichern des am Rand gelöschten<br />

Symbols und die jeweilige Suche nach dem anderen Rand entfällt.<br />

Damit läßt sich eine Laufzeit der Größenordnung O(n) realisieren.<br />

In Abschnitt 6.4 werden wir zeigen, daß folgende Definition der Klassen P<br />

und NP unter solchen Modifikationen des Maschinenmodells robust ist.<br />

Definition<br />

P ( NP ) ist die Klasse der entscheidbaren formalen Sprachen L , die von<br />

einer dTM (nTM) mit polynomialer Zeitkomplexität akzeptiert werden<br />

können, d.h., es existiert eine d/nTM M mit L = L(M) , und ein Polynom<br />

p so daß jede Berechnung von w nach höchstens p(|w|) Schritten hält.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 123 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Satz<br />

P ⊆ NP<br />

Beweis.<br />

Klar, da jede dTM auch eine nTM ist.<br />

Auch hier gibt es im nichtdeterministischen Fall einen alternativen Zugang:<br />

anstelle eine Sprache aus NP zu entscheiden, kann man sie verifizieren:<br />

Definition<br />

Für L ⊆ Σ ∗ heißt L check<br />

⊆ Γ ∗ mit Σ ⊆ Γ Zertifikatssprache, falls<br />

L check<br />

∈ P , eine entsprechende dTM heißt Verifizierer;<br />

es existiert ein Polynom q so daß <strong>für</strong> jedes w ∈ Σ ∗<br />

w ∈ L gdw wz ∈ L check<br />

<strong>für</strong> ein Wort z ∈ Γ ∗ mit |z| ≤ q(|w|)<br />

Ein solches z heißt Zertifikat <strong>für</strong> w .<br />

gilt<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 124 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Satz<br />

NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen.<br />

Beweis<br />

Ein Verifizierer M check<br />

, mit Zeitkomplexität p , <strong>für</strong> L check<br />

, mit<br />

Längenkomplexität q , liefert einen Entscheider M <strong>für</strong> L wie folgt:<br />

B 0 enthält die Eingabe w ; ihre Länge |w| und q(|w|) werden auf<br />

auf B 3 gespeichert, was O(q(|w|)) Schritte erfordert;<br />

auf B 1 wird nichtdeterministisch ein Wort z ∈ Γ ∗ mit |z| ≤ q(|w|)<br />

erzeugt (“geraten”); dies erfordert 2|z| ∈ O(q(|w|)) Schritte;<br />

auf B 2 wird M check<br />

mit Eingabe wz simuliert.<br />

M hält und akzeptiert genau dann, wenn die Simulation von M check<br />

dies<br />

tut und hat Zeitkomplexität in O(p(q(n))) .<br />

Umgekehrt sei M ein Entscheider <strong>für</strong> L mit Zeitkomplexität t . Als<br />

Zertifikate <strong>für</strong> w ∈ L verwenden wir die Wegbeschreibungen der<br />

akzeptierenden Berechnungen von w im M -Berechnungsbaum, genauer:<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 125 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Beweis (Fortsetzung)<br />

Der M -Berechnungsbaum von w hat eine Tiefe ≤ t(|w|) . Die maximale<br />

Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu<br />

einer Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort<br />

in {0, . . . , r − 1} ∗ der Länge ≤ t(|w|) eindeutig beschrieben werden<br />

(aber nicht jedes derartige Wort muß einer Berechnung entsprechen).<br />

L check<br />

besteht dann aus den Wörtern wz ∈ (Σ + r) ∗ mit w ∈ L und z<br />

Wegbeschreibung einer akzeptierenden Berechnung <strong>für</strong> w .<br />

Die Maschine M check<br />

simuliert bei Eingabe wz den Ablauf der Maschine<br />

M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist<br />

somit deterministisch. Die Simulation erfordert |z| ≤ t(|w|) Schritte.<br />

Das obige maschinenbezogene Zertifikat wird in der Praxis meist sehr<br />

unhandlich sein. Dort verwendet man meistens problembezogene<br />

Zertifikate.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 126 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Beispiel (Eine Zertifikatssprache <strong>für</strong> 3-Färbbarkeit)<br />

Die Codierung ungerichteter Graphen G = 〈V , E〉 erfolgt mittels<br />

Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat<br />

verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B .<br />

wz ∈ L check<br />

gdw ∀e ∈ E. e ⊈ R ∧ e ⊈ G ∧ e ⊈ B<br />

Teilmengen von V lassen sich als binäre n-Tupel codieren, während<br />

Adjazenzmatrizen die Größe n 2 haben.<br />

L check<br />

∈ P : zu überprüfen ist, ob die Eingabe aus n 2 + 3n Bits besteht,<br />

und dann, ob die Teilmengen R, G, B ⊆ V , paarweise disjunkt sind, V<br />

ausschöpfen, und keine Kanten {u, v} ∈ E als Teilmenge enthalten. Dies<br />

kann durch bitweise Vergleiche geschehen, also in polynomialer Zeit.<br />

Damit gilt 3-Färbbarkeit ∈ NP .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 127 / 215


6. Komplexität von Algorithmen 6.2 Die Komplexitätsklassen P und NP<br />

Abschließend überlegen wir uns, daß zumindest P nicht mit der Klasse<br />

der entscheidbaren Probleme übereinstimmt:<br />

Beispiel<br />

Folgende entscheidbare(!) Sprache gehört nicht zu P :<br />

L exp<br />

:= { c(M) : die TM M akzeptiert w := c(M) in ≤ 2 |w| Schritten }<br />

In der HA werden wir die Abgeschlossenheit von P unter Komplementbildung<br />

nachweisen. Aus der Annahme L exp<br />

∈ P folgt dann L exp<br />

∈ P .<br />

Somit existiert eine TM ¯M mit einem Polynom ¯p als Zeitkomplexität, die<br />

L( ¯M) = L exp<br />

erfüllt. Wähle n 0 ∈ N mit<br />

¯p(n) ≤ 2 n<br />

<strong>für</strong> alle n ≥ n 0 , und<br />

|c( ¯M)| ≥ n 0 (ggf. Zustände zu ¯M hinzufügen)<br />

Falls ¯w := c( ¯M) ∈ L exp<br />

, dann wird ¯w von ¯M in ≤ ¯p(| ¯w|) ≤ 2 | ¯w|<br />

Schritten akzeptiert, d.h., ¯w ∈ L exp<br />

, .<br />

Falls ¯w = c( ¯M) /∈ L exp<br />

= L( ¯M) , folgt c( ¯M) ∈ L exp<br />

, also ¯w ∈ L( ¯M) , .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 128 / 215


6. Komplexität von Algorithmen 6.3 Die Klasse FP von Berechnungsproblemen<br />

6.3 Berechnungsprobleme und Reduzierbarkeit<br />

Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Um<br />

verschiedene E-Probleme miteinander vergleichen, genauer, sie aufeinander<br />

reduzieren, zu können, müssen wir auch die Zeitkomplexität von<br />

B-Problemen betrachten.<br />

Beispiel<br />

Unser Algorithmus zur 2-Färbung von Graphen (falls eine solche existiert)<br />

bildet den Code eines Graphen auf den Code einer 2-Färbung ab, bzw. auf<br />

die codierte Nachricht, daß keine solche Färbung existiert.<br />

Definition<br />

FP ist die Klasse aller Funktionen Σ ∗ Γ ∗ , <strong>für</strong> die eine dTM M und<br />

ein Polynom p existieren, so daß f von M berechnet wird und die<br />

Berechnung von w ∈ Σ ∗ höchstens p(|w|) Schritte benötigt.<br />

f<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 129 / 215


6. Komplexität von Algorithmen 6.3 Die Klasse FP von Berechnungsproblemen<br />

Beispiel (Starke Komponenten)<br />

Eingabe: gerichteter Graph G = 〈V , E〉<br />

Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege<br />

miteinander verbundener Knoten (=”starke Komponenten”) berechnen<br />

1: {(0) Initialisierung}<br />

2: i := 0 { i : der Komponentenzähler}<br />

3: {(1) Rekursionsschritt}<br />

4: while V ≠ ∅ do<br />

5: wähle v ∈ V ; V := V − {v}<br />

6: K i := {v} { K i : die neu zu bestimmende Komponente}<br />

7: for alle Knoten w ∈ V do<br />

8: if gerWeg(v, w) und gerWeg(w, v) then<br />

9: K i := K i + {w} ; V := V − {w}<br />

10: end if<br />

11: end for<br />

12: end while<br />

Im Wesentlichen wird der Algorithmus <strong>für</strong> gerichteten Weg mit Laufzeit<br />

O(n + k) in der maximal n-mal zu durchlaufenden FOR-Schleife zweimal<br />

aufgerufen. Da die WHILE-Schleife auch maximal n-mal durchlaufen wird,<br />

ergibt sich mit Adjazenzlisten eine Laufzeit von O(n 2 (n + k)) , und mit<br />

Adjazenzmatrizen von O(n 4 ) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 130 / 215


6. Komplexität von Algorithmen 6.3 Die Klasse FP von Berechnungsproblemen<br />

Beispiel<br />

a<br />

d<br />

b<br />

c<br />

e<br />

hat die starken Komponenten<br />

{a,b,c}<br />

{d,e}<br />

{f}<br />

f<br />

Die starken Komponenten von G bilden wieder einen Graphen Ḡ : dabei<br />

ist 〈K, K ′ 〉 genau dann eine Kante von Ḡ , wenn eine G -Kante von<br />

einem K -Knoten zu einem K ′ -Knoten existiert. Konstruktionsbedingt ist<br />

Ḡ azyklisch, also topologisch sortierbar.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 131 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

6.4 FP -Reduzierbarkeit<br />

Definition<br />

Eine Sprache L ⊆ Σ ∗ ist auf eine Sprache K ⊆ Γ ∗ FP -reduzierbar,<br />

Notation L ⊳ K , wenn eine Funktion Σ ∗ f<br />

Γ ∗ in FP existiert mit<br />

w ∈ L gdw f (w) ∈ K<br />

Die Einschränkung auf Funktionen aus FP ist wichtig, denn andernfalls<br />

wären alle nichttrivialen Sprachen wechselseitig aufeinander reduzierbar:<br />

<strong>für</strong> echte Teilmengen L ⊆ Σ ∗ und K ⊆ Γ ∗ wähle u ∈ K und ū ∈ Γ ∗ − K<br />

und definiere Σ ∗ f<br />

Γ ∗ durch<br />

{<br />

u falls w ∈ L<br />

f (w) =<br />

ū falls w /∈ L<br />

Dann gilt w ∈ L gdw f (w) ∈ K , aber die “Reduktion” benötigt soviel<br />

Zeit wie die Entscheidung, ob w ∈ L gilt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 132 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Die Relation ⊳ ist als ist höchstens so schwierig wie zu interpretieren und<br />

dient als Hauptwerkzeug zur Strukturierung der Klasse E aller<br />

Entscheidungsprobleme.<br />

Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen<br />

enthält, folgen Reflexivität und Transitivität der Relation ⊳ .<br />

Andererseits werden wir bald sehen, daß ⊳ nicht antisymmetrisch ist. Es<br />

ist also keine Ordnungsrelation im strengen Sinne, aber zumindest noch<br />

eine Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine<br />

Ordnung auf der Klasse der ⊳-Äquivalenzklassen, d.h., auf den Klassen<br />

gleich schwieriger Probleme ( L ⊳ M und M ⊳ L ).<br />

Zur besseren Orientierung erwähnen wir bereits jetzt, daß die oberen<br />

⊳-Schranken der Klasse NP , d.h., die Probleme, die mindestens so<br />

schwierig wie jedes NP -Problem sind, NP -hart heißen. Schließlich<br />

bezeichnet man die NP -harten Probleme innerhalb der Klasse NP , also<br />

die schwierigsten NP -Probleme, als NP -vollständig.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 133 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Beispiel<br />

Das E-Problem Kanten-2-Färbbarkeit hat ungerichtete Graphen als<br />

Eingabe. Zu entscheiden ist, ob die Kanten derart mit 2 Farben gefärbt<br />

werden können, daß Kanten mit gemeinsamem Endpunkt verschieden<br />

gefärbt sind.<br />

Wir zeigen Kanten-2-Färbbarkeit ⊳ 2-Färbbarkeit.<br />

Idee: Die Kanten von G als Knoten eines sog. Kantengraphen G K<br />

interpretieren. Formal: G K := 〈V K , E K 〉 mit<br />

V K := E und {e, e ′ } ∈ E K gdw e ∩ e ′ ≠ ∅ ∧ e ≠ e ′<br />

Etwa<br />

2<br />

{0, 2} {1, 2}<br />

G :<br />

0 1<br />

↦→ G K :<br />

{0, 1}<br />

4 3<br />

{1, 3}<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 134 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Beispiel (Fortsetzung)<br />

Korrektheit der Reduktion G ↦→ G K : wir zeigen<br />

G ist genau dann Kanten-2-färbbar wenn G K<br />

2-färbbar ist<br />

Für eine Zerlegung der Kantenmenge E = R + B gilt.<br />

R + B = E ist eine Kanten-2-Färbung von G<br />

⇔ wenn { {u, v}, {x, y} } einfarbig, dann {u, v} ∩ {x, y} = ∅<br />

⇔ wenn { {u, v}, {x, y} } einfarbig, dann ist dies keine G K -Kante<br />

⇔ R + B = E ist eine 2-Färbung von G K<br />

Laufzeit: Die Adjazenzmatrizen A und A K der ungerichteten Graphen G<br />

bzw. G K sind symmetrisch, also durch die Einträge im oberen Dreieck<br />

bestimmt. Mit n := |V | ergibt sich in Laufzeit O(n 2 )<br />

|V K | = |E| = ∑<br />

i


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Beispiel (Fortsetzung)<br />

Wir verwenden die Positionen 〈i, j〉 mit i < j < n der Einsen in A als<br />

Knoten der Kantenmatrix; diese seien lexikographisch geordnet.<br />

Die Kanten von G K entsprechen Paaren von Einsen in derselben Zeile<br />

oder Spalte im oberen Dreieck von A . Genauer, <strong>für</strong> i < j < l < n gilt:<br />

A i,j = A i,l = 1 impliziert 〈i, j〉 〈i, l〉 in G K<br />

A i,l = A j,l = 1 impliziert 〈i, l〉 〈j, l〉 in G K<br />

In jedem Fall sind drei geschachtelte Schleifen über i < n , über i < j < n<br />

und über i < j < l < n zu durchlaufen, was eine Laufzeit von O(n 3 )<br />

liefert. Allerdings erfordert die Initialisierung der Matrix A K mit Nullen<br />

bereits O(n 4 ) Schritte.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 136 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Satz<br />

Aus L ⊳ K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. ⊳ ist P ( NP ) ein<br />

unterer Abschnitt der Klasse E aller E-Probleme.<br />

Beweis.<br />

Wähle eine FP -Reduktion L ⊆ Σ ∗ Γ ∗ ⊇ K, die von einer dTM M f<br />

berechnet wird, und eine d/nTM M K mit L(M K ) = K . Diese Maschinen<br />

mögen polynomiale Zeitkomplexität p f bzw. p K haben. Die<br />

Hintereinanderschaltung M L von M f und M K erfüllt<br />

w ∈ L(M L ) gdw f (w) ∈ L(M K ) = K gdw w ∈ L<br />

Da das Schreiben der Ausgabe f (w) mindestens |f (w)| Schritte<br />

erfordert, ist die Laufzeit von M L auf Eingabe w durch p K (p f (|w|))<br />

beschränkt, also hat M L ebenfalls polynomiale Zeitkomplexität.<br />

Die Zugehörigkeit zu P bzw. NP kann somit auch durch Reduktion auf<br />

andere P bzw. NP -Probleme nachgewiesen werden.<br />

f<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 137 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

6.4.1 2-Sat ∈ P<br />

Um zu zeigen, daß 2-Sat zu P gehört, wollen wir es auf ein<br />

graphentheoretisches Problem reduzieren, das aufgrund früherer Ergebnisse<br />

zu P gehört.<br />

In klassischer Logik ist die Implikation α β zu ¬α ∨ β äquivalent.<br />

Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G(ϕ)<br />

umzuformen, mit den Literalen der auftretendende Variablen als Knoten<br />

und je zwei gerichteten Kanten ¬α β und ¬β α pro Klausel<br />

(α ∨ β) , etwa<br />

x<br />

¬x<br />

ϕ = (x ∨ y) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y) ↦→ G(ϕ) :<br />

y<br />

¬y<br />

z ¬z<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 138 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Korrektheit: ϕ ist erfüllbar gdw <strong>für</strong> jede Variable x die Literale x und<br />

¬x in verschiedenen starken Komponenten von G(ϕ) liegen.<br />

( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel<br />

(α ∨ β) den Wert true zuordnet, muß insbesondere α oder β mit true<br />

belegt sein. Damit hat G(ϕ) keine Kante von einem mit true zu einem<br />

mit false belegten Literal. Da je zwei Knoten einer starken Komponente<br />

auf einem gerichteten Kreis liegen, können somit die verschieden belegten<br />

Literale x und ¬x nicht in derselben starken Komponente auftreten.<br />

( ⇐ ) Wähle eine topologische Sortierung ord des Graphen der starken<br />

Komponenten [α] von G(ϕ) , α Literal, und setze<br />

x = true gdw ord[¬x] < ord[x]<br />

Ist (α ∨ β) eine Klausel mit α = false , dann gilt wegen der Kanten<br />

¬β α und ¬α β in G(ϕ)<br />

und folglich β = true .<br />

ord[¬β] ≤ ord[α] < ord[¬α] ≤ ord[β]<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 139 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Auf welches Problem habe wir 2-Sat eigentlich reduziert?<br />

Definition<br />

SinvKomp hat als Eingabe einen gerichteten Graphen G = 〈V , E〉 und<br />

eine selbstinverse Abbildung V f V ohne Fixpunkte.<br />

Zu entscheiden ist, ob <strong>für</strong> jedes u ∈ V die Knoten u und f (u) in<br />

verschiedenen starken Komponenten von G liegen.<br />

Offenbar gehört SinvKomp zu P , da die Berechnung der starken<br />

Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die<br />

Überprüfung, ob a und f (a) zu derselben starken Komponente gehören.<br />

Es bleibt nachzuweisen, daß unsere Reduktion ϕ ↦→ G(ϕ) zu FP gehört.<br />

Als Maß m <strong>für</strong> die Größe der Eingabe ϕ bietet sich die Länge des Strings<br />

an, einschließlich Klammern bei Infix-Notation. Die Ermittlung der<br />

Variablen in ϕ und somit der Knoten von G(ϕ) erfordert lineare Zeit,<br />

ebenso wie das Eintragen der zwei Kanten pro Klausel.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 140 / 215


6. Komplexität von Algorithmen 6.4 FP - Reduzierbarkeit<br />

Beispiel<br />

Die obige Formel ϕ = (x ∨ y) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y) ist erfüllbar, da sich<br />

die positiven und negativen Varianten der Variablen x , y und z auf die<br />

beiden starken Komponenten des zugehörigen Graphen G(ϕ) verteilen.<br />

Die Belegung x = z = true und y = false und ihre Negation liefern<br />

beide den Wert true <strong>für</strong> ϕ .<br />

Andererseits ist ψ = (y ∨ x) ∧ (¬y ∨ z) ∧ (¬z ∨ x) ∧ (¬x ∨ ¬t) ∧ (t ∨ ¬x)<br />

nicht erfüllbar, da G(ψ) nur eine starke Komponente besitzt:<br />

x<br />

y<br />

z<br />

t<br />

¬x ¬y<br />

¬z<br />

¬t<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 141 / 215


6. Komplexität von Algorithmen 6.5 Robustheit der Klassen P und N P<br />

6.5 Robustheit der Klassen P und N P<br />

Wir untersuchen die Robustheit der mittels Standard-TMn á la TU-BS<br />

definierten Klasse P unter Abschwächungen des TMn-Modells. Analog<br />

kann man auch <strong>für</strong> andere Algorithmenmodelle verfahren. Schließlich fallen<br />

auch noch die Abschlußeigenschaften von P in diese Rubrik.<br />

Zusätzlicher Speicher: Man integriert ein endliches Alphabet A von<br />

Speichersymbolen, indem man die Zustandsmenge Q durch Q × A<br />

ersetzt. Außerdem sind Elemente a 0 , a F ∈ A auszuzeichnen, um Anfangsund<br />

Endzustände definieren zu können. Die Zeitkomplexität bleibt<br />

unverändert.<br />

Erweitertes Bandalphabet: Wenn Σ + {#} echte Teilmenge von B ist,<br />

kann man zum Alphabet Σ ′ := B − {#} übergehen und einen<br />

Präprozessor vorschalten, der eine Eingabe w ∈ (Σ ′ ) ∗ per Zusatzspeicher<br />

darauf prüft, ob sie zu Σ ∗ gehört. Dieser Aufwand ist linear in |w| .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 142 / 215


6. Komplexität von Algorithmen 6.5 Robustheit der Klassen P und N P<br />

Mehrspur-TM: Hier dient B k als Bandalphabet, mit Blanksymbol<br />

〈# : i < k〉 . Zu Beginn steht die Eingabe auf der ersten Spur. Die<br />

Identifikation des Alphabets Σ mit Σ × {〈# : i < n − 1〉} erlaubt uns<br />

nun, Mehrspur-Maschinen als Spezialfall von Maschinen mit erweitertem<br />

Bandalphabet aufzufassen, s.o.<br />

Mehrband-TM: Hierbei existieren k unabhängige Schreib-Leseköpfe.<br />

ObdA nehmen wir an, daß M pro Schritt immer nur auf einem Band<br />

arbeitet. Andernfalls verlängert die Sequentialisierung von M die<br />

Zeitkomplexität nur um einen Faktor k .<br />

Die Simulation kann durch eine TM mit 2k Spuren erfolgen: Spur 2i<br />

enthält den Inhalt von Band i , während Spur 2i + 1 nur die Kopfposition<br />

auf Band i verzeichnet.<br />

Satz<br />

Jede k -Band dTM M mit mindestens linearer Zeitkomplexität t kann<br />

durch eine Einband-TM M ′ mit Zeitkomplexität t 2 simuliert werden.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 143 / 215


6. Komplexität von Algorithmen 6.5 Robustheit der Klassen P und N P<br />

Beweis.<br />

In den ungeraden Spuren wird zunächst unter dem letzten<br />

Eingabesymbol in Spur 0 eine Kopfmarkierung gesetzt, was konstante<br />

Zeit erfordert.<br />

Eine M -Aktion auf Band i kann durch M ′ auf den Spuren 2i und<br />

2 i + 1 simuliert werden, in derselben Zeit, die M benötigt.<br />

Um eine nachfolgende Aktion auf Band j zu simulieren, ist der Kopf<br />

von M ′ zur Kopf-Markierung auf Spur 2j + 1 zu verschieben. Dazu<br />

sind bei Eingabe w maximal t(|w|) Schritte nötig.<br />

Insgesamt wird die Schrittzahl also höchstens quadriert.<br />

Somit dürfen wir bei Komplexitätsargumenten auf die bequemeren<br />

Mehrband-Maschinen zurückgreifen.<br />

Für andere Algorithmenmodelle (RAM, reale Rechner, etc.) kann man den<br />

Zeitbedarf bei der Simulierung durch (Mehrband-)TMn ermitteln. Dieser<br />

stellt sich als polynomial heraus, daher bleibt P invariant.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 144 / 215


6. Komplexität von Algorithmen 6.5 Robustheit der Klassen P und N P<br />

Satz<br />

P ist abgeschlossen unter binären Vereinigungen und Durchschnitten,<br />

Komplementbildung, Konkatenation und Kleene-Stern.<br />

Beweis.<br />

Für binäre Vereinigungen und Durchschnitte, sowie <strong>für</strong> Kleene-Stern vergl.<br />

HA. Für die Komplementbildung verwende die Konstruktion M ↦→ M ′ aus<br />

dem Nachweis der Nichtentscheidbarkeit von L acc<br />

.<br />

Konkatenation: Die dTM M i möge immer halten und L i ⊆ Σ ∗ i<br />

in<br />

polynomialer Zeit p i akzeptieren, i < 2 . Die Maschine M zerlegt die<br />

Eingabe w ∈ (Σ 0 ∪ Σ 1 ) ∗ systematisch in zwei Teile w 0 und w 1 mit<br />

w 0 w 1 = w und untersucht diese auf Zugehörigkeit zu L i , i < 2 . Sobald<br />

beide Tests positiv ausfallen, wird w akzeptiert. Die Anzahl der<br />

Zerlegungen ist durch |w| + 1 beschränkt, die Laufzeit der Tests auf<br />

max{p 0 (|w|), p 1 (|w|)} .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 145 / 215


6. Komplexität von Algorithmen 6.6 Einige Probleme aus NP<br />

6.6 Einige Probleme aus NP<br />

Beispiel ( Hamiltonscher Kreis ∈ NP )<br />

Das E-Problem Hamiltonscher Kreis hat als Eingabe einen ungerichteten<br />

Graphen G = 〈V , E〉 mit n := |V | Knoten.<br />

Zu entscheiden ist, ob G einen Hamiltonschen Kreis besitzt, d.h., eine<br />

Permutation π der Knoten, so daß sie in dieser Reihenfolge durch Kanten<br />

zu einem Kreis verbunden werden können, formal<br />

{π(i), π(i + 1 mod n)} ∈ E <strong>für</strong> i < |V |<br />

Als Zertifikate eignen sich Permutationen von V . Die Überprüfung, ob die<br />

entsprechenden Kanten existieren, kann in linearer Zeit erfolgen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 146 / 215


6. Komplexität von Algorithmen 6.6 Einige Probleme aus NP<br />

Beispiel ( TSP ∈ NP )<br />

Das Travelling Salesman Problem in seiner Entscheidungsvariante TSP hat<br />

als Eingabe n Städte (geographische Orte) S i , i < n , eine<br />

(symmetrische) Matrix d von Entfernungen und eine Schranke K .<br />

Zu entscheiden ist, ob eine Rundreise existiert, die alle Städte genau<br />

einmal besucht (ein Hamilton’scher Kreis), so daß ihre Länge, die Summe<br />

der Entfernungen aufeinanerfolgender Städte, durch K nach oben<br />

beschränkt ist.<br />

Als potentielle Zertifikate eignen sich wieder Permutationen π von V . In<br />

linearer Zeit überprüft man die Gültigkeit von<br />

∑<br />

d π(i),π(i+1 mod n) ≤ K<br />

i


6. Komplexität von Algorithmen 6.6 Einige Probleme aus NP<br />

Beispiel ( Sat ∈ NP )<br />

Sat hat als Eingabe eine Boole’sche Formel ϕ(x 0 , . . . , x n−1 ) in KNF<br />

(ohne Beschränkungen in der Länge der Klauseln). Zu entscheiden ist, ob<br />

ϕ erfüllbar ist.<br />

Als Kandidaten <strong>für</strong> ein Zertifikat eignen sich Zufallsbelegungen der<br />

Variablen x 0 . . . x m−1 . Die Berechnung des Wahrheitswerts von ϕ kann<br />

wiederum in polynomialer Zeit erfolgen.<br />

Beispiel ( Zerlegbarkeit ∈ P , erst seit 2004 bekannt)<br />

Primes hat als Eingabe eine natürliche Zahl n . Zu entscheiden ist, ob<br />

n eine Primzahl ist.<br />

2004 zeigten Agrawal, Kayal und Saxena Primes ∈ P . Da P unter<br />

Komplementbildung abgeschlossen ist, gehört das Problem<br />

Zerlegbarkeit ebenfalls zu P , bei dem zu entscheiden ist, ob n<br />

zusammengesetzt ist. Eine Lösung liefert leider keine Hinweise auf<br />

Primfaktoren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 148 / 215


6. Komplexität von Algorithmen 6.6 Einige Probleme aus NP<br />

Wie wir auf Seite 21 gesehen haben, kann jede immer haltende 1-Band<br />

nTM M durch eine immer haltende 3-Band dTM M ′ simuliert werden,<br />

indem “breadth first” alle M -Berechnungen bis zu einer vorgegebenen<br />

Tiefe nach akzeptierenden Haltekonfigurationen durchsucht werden.<br />

Corollar<br />

Jede nTM mit Zeitkomplexität t(n) kann durch eine dTM mit Zeitkomplexität<br />

O(2 c·t(n) ) , c ∈ R + geeignete Konstante, simuliert werden.<br />

Speziell ist L ∈ NP durch eine dTM mit Zeitkomplexität 2 p(n) , p<br />

Polynom, entscheidbar.<br />

Beweis<br />

Für |w| = n ist die Anzahl der Tupel auf B 2 durch ∑ i


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

6.7 NP -Vollständigkeit und Cooke’scher Satz<br />

Definition<br />

Ein E-Problem L heißt<br />

NP -hart, falls L obere ⊳-Schranke von NP ist, d.h., <strong>für</strong> jedes<br />

NP -Problem K gilt K ⊳ L ; Bezeichnung NPH<br />

NP -vollständig, falls L ⊳-größtes Elemente von NP ist, d.h.,<br />

L ∈ NP ist NP -hart; Bezeichnung NPV .<br />

Satz<br />

Existiert ein NP -vollständiges Problem L ∈ P , so folgt P = NP .<br />

Beweis.<br />

Nach Definition läßt sich jedes Problem K ∈ NP auf L reduzieren und<br />

folglich in polynomialer Zeit durch eine dTM lösen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 150 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Satz (Cook’scher Satz)<br />

Das E-Problem Sat der Erfüllbarkeit einer Boole’schen Formel in KNF ist<br />

NP -vollständig.<br />

Beweis<br />

Die Zugehörigkeit zu NP war bereits oben gezeigt worden.<br />

Für jede Sprache {0, 1} ∗ ⊇ L ∈ NP bleibt zu zeigen: L ⊳ Sat<br />

Idee: Ausgehend von einer nTM M , die L in polynomialer Zeit p<br />

akzeptiert, konstruiert man zu jedem w ∈ L eine Boole’sche Formel ϕ w<br />

in KNF, die eine akzeptierende Berechnung von w durch M beschreibt.<br />

Dann ist nachzuweisen:<br />

⊲ w ∈ L gdw. ϕ w erfüllbar (Korrektheit der Reduktion)<br />

⊲ ϕ w kann in Zeit O(p(|w|) 2 ) aus w konstruiert werden (damit<br />

gehört die Reduktion zu FP ).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 151 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Vorbereitung: gegeben ist eine binäre 1-Band nTM M mit polynomialer<br />

Zeitkomplexität p und L(M) = L .<br />

⊲ Die Zustände sind vom Anfangszustand q 0 bis zum Endzustand<br />

(dieser hat keine Übergänge) durchnummeriert.<br />

q m−1<br />

⊲ B = {s 0 , s 1 , s 2 } mit s 0 = # , s 1 = 0 , s 2 = 1 , s 3 = L und s 4 = R .<br />

⊲ Das Band sei durch Z indexiert, mit 0 an der Position des Kopfes in<br />

der Initialkonfiguration mit Eingabe w . Es genügt, Zellen im Bereich<br />

−p(|w|) bis p(|w|) zu betrachten.<br />

⊲ Es gibt d Übergänge 〈q i(y) , s j(y) 〉 ↦→ 〈q i ′ (y), s j ′ (y)〉 , y < d , mit<br />

d<br />

i, i ′ n , d<br />

j<br />

3 und d<br />

j ′ 5 (Indexfunktionen)<br />

Die Formel ϕ w soll eine akzeptierende Berechnung von M auf Eingabe<br />

w beschreiben. Dabei ist zu maximal p(|w|) Zeitpunkten der Inhalt von<br />

2p(|w|) Bandzellen zu spezifizieren, weiterhin Zustand und Kopfposition<br />

der Maschine und, bis auf den letzten Zeitpunkt, der aktuelle Übergang.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 152 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Da<strong>für</strong> dienen entsprechende Variable:<br />

Name Interpretation: zur Zeit t Anzahl<br />

qi t ist M in Zustand q i i < m, t < p(|w|)<br />

kr t ließt M Bandzelle r −p(|w|) < r < p(|w|), t < p(|w|)<br />

l t r , nr t , er t , steht #, 0, 1 in Bandzelle r −p(|w|) < r < p(|w|), t < p(|w|)<br />

uy t wird Übergang y ausgeführt y < d, t < p(|w|) − 1<br />

ϕ w<br />

wird Konjunktion der Beschreibung folgender vier Teile sein:<br />

der Initialkonfiguration;<br />

der Akzeptanzbedingung <strong>für</strong> w ;<br />

der Konsistenzbedingungen (KBD’n) <strong>für</strong> M : zu jedem Zeitpunkt t<br />

− ist M in höchstens einem Zustand;<br />

− steht in jedem Feld genau ein Symbol;<br />

− steht der Kopf auf genau einer Position;<br />

− findet höchstens ein Übergang statt.<br />

des Übergangseffekts auf Zustand, Kopfposition und Bandinhalt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 153 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Initialkonfiguration: Initialzustand bzw. -kopfposition sind bestimmt<br />

durch q0<br />

0 und k0 0 , während der Bandinhalt w = s 0 . . . s n−1 ∈ {0, 1} ∗<br />

mittels geeigneter Variablen nr 0 bzw. er 0 mit −n < r ≤ 0 spezifiziert<br />

wird. Dazu kommt die Angabe, daß die übrigen relevanten Felder leer sind:<br />

⎛<br />

⎞ ⎛ ⎞<br />

∧<br />

⎝<br />

⎠ ∧ ⎝<br />

∧ ⎠<br />

l 0 r<br />

l 0 r<br />

−p(n)


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

KBD Zustände: Für t < p(n) ist M in höchstens einem Zustand:<br />

q t i ⇒ ¬q t j bzw. ¬q t i ∨ ¬q t j <strong>für</strong> alle i < j < m<br />

(m(m − 1)/2 Klauseln)<br />

KBD Feldinhalt: Für t < p(n) und −p(n) < r < p(n) gilt<br />

(l t r ∨ n t r ∨ e t r ) ∧ (¬l t r ∨ ¬n t r ) ∧ (¬n t r ∨ ¬e t r ) ∧ (¬e t r ∨ ¬l t r )<br />

Diese 4 · p(n)(2p(n) − 1) ∈ O((p(n)) 2 ) Klauseln besagen, daß jedes<br />

relevante Feld genau ein Symbol enthält.<br />

KBD Kopfposition: Für t < p(n) drücken 1 + (2p(n) − 1)(p(n) − 1)<br />

Klauseln aus, daß der Kopf in genau einer Position steht:<br />

⎛<br />

⎝<br />

⎞<br />

∨<br />

⎠ ∧<br />

∧ (<br />

¬k<br />

t<br />

r ∨ ¬kr t )<br />

′<br />

−p(n)


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

KBD Übergänge: Für t < p(n) drücken d(d − 1)/2 Klauseln aus, daß<br />

höchstens ein Übergang stattfindet:<br />

¬u t y ∨ ¬u t z <strong>für</strong> y < z < d<br />

Beschreibung der Übergangseffekte: Für jeden der d Übergänge<br />

〈q i(y) , s j(y) 〉 ↦→ 〈q i ′ (y), s j ′ (y)〉 drücken p(n) − 1 Teilformeln(!) die<br />

Zustandsänderung <strong>für</strong> t < p(n) − 1 aus:<br />

(<br />

)<br />

uy t ⇒ qi(y) t ∧ qt+1 i ′ (y)<br />

Gemäß der Definition der Implikation liefern die Distributivgesetze nun<br />

insgesamt 2 (p(n) − 1) d äquivalente Klauseln:<br />

( ) ( )<br />

¬uy t ∨ qi(y)<br />

t ∧ ¬uy t ∨ q t+1<br />

i ′ (y)<br />

<strong>für</strong> t < p(n) − 1 und y < d<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 156 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Falls s j(y) = 0 und s j ′ (y) = L , beschreiben weitere 2(p(n) − 1) 2<br />

Teilformeln Kopfbewegung und den ursprünglichen Feldinhalt:<br />

(<br />

u<br />

t<br />

y ∧ kr t ) (<br />

⇒ k<br />

t+1<br />

r−1 ∧ )<br />

nt r <strong>für</strong> t < p(n) − 1 , − p(n) + 1 < r < p(n)<br />

Nach Definition der Implikation liefern die de Morganschen Regeln und die<br />

Distributivgesetze nun 4(p(n) − 1) 2 äquivalente Klauseln:<br />

¬ ( uy t ∧ kr<br />

t ) (<br />

∨ k<br />

t+1<br />

r−1 ∧ ) ( nt r ⇔ ¬u<br />

t<br />

Y ∨ ¬kr<br />

t ) (<br />

∨ k<br />

t+1<br />

∧ )<br />

nt r<br />

⇔ ( ¬uY t ∨ ¬kt r ∨ kr−1) t+1 (<br />

∧ ¬u<br />

t<br />

Y ∨ ¬kr t ∨ nr<br />

t )<br />

Schließlich bleibt wegen s j ′ (y) = L der Bandinhalt unverändert:<br />

(<br />

u<br />

t<br />

y ∧ xr t )<br />

⇒ x<br />

t+1<br />

r bzw. ¬uy t ∨ ¬xr t ∨ xr<br />

t+1<br />

<strong>für</strong> t < p(n) − 1 , −p(n) + 1 < r < p(n) und x ∈ {l, n, e} , was weitere<br />

6(p(n) − 1) 2 Klauseln liefert.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 157 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Falls s j(y) ∈ {#, 1} bzw. s j ′ (y) = R kann man analog verfahren, während<br />

<strong>für</strong> Aktionen der Form s j ′ (y) ∈ {#, 0, 1} insbesondere die Klauseln <strong>für</strong> den<br />

Bandinhalt zur Zeit t + 1 anzupassen sind (HA).<br />

Schließlich bleibt auszudrücken, daß Zustände außer q0<br />

0 tatsächlich nur<br />

aufgrund von Übergängen entstehen. Leider ist es nicht möglich, <strong>für</strong><br />

t < p(n) − 1 folgende Klausel zu verwenden (warum?)<br />

∨<br />

y


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Beweis (Fortsetzung)<br />

Laufzeit: ϕ w entsteht durch Konjunktion aller Klauseln. Die resultierende<br />

Formel in KNF hat eine Länge, die quadratisch in p(n) , und damit<br />

polynomial in n = |w| ist.<br />

Korrektheit: Nach Konstruktion existiert eine Variablenbelegung, die ϕ w<br />

den Wert true zuordnet, wenn M bei Eingabe w eine akzeptierende<br />

Berechnung durchführen kann.<br />

Umgekehrt ist im Fall der Erfüllbarkeit von ϕ w die Akzeptanzbedingung<br />

erfüllt, d.h., es gibt eine Zeit T < p(n) mit qm−1 T = true . Sofern<br />

T > 0 , existiert mindestens ein Übergang, der den Endzustand q m−1<br />

produziert. Zum Zeitpunkt T − 1 wird aber nur genau ein Zustand qu<br />

T −1<br />

angenommen und es findet genau ein Übergang uy<br />

T −1 statt. Auf diese<br />

Weise kann man rückwärts den Zustand q0<br />

0 erreichen.<br />

Die Initialkonfiguration und die Konsistenzbedingungen garantieren dann,<br />

daß wirklich eine Berechnung der Maschine M vorliegt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 159 / 215


6. Komplexität von Algorithmen 6.7 NP - Vollständigkeit und Cooke’scher Satz<br />

Satz (Ladner 1975)<br />

Falls P ≠ NP , dann wird NP nicht von P und NPV ausgeschöpft,<br />

d.h., es gibt dann E-Probleme, die weder NP -vollständig sind, noch zu<br />

P gehören.<br />

Beispiel<br />

Ein Kandidat <strong>für</strong> ein derartiges Problem ist Graph-Isomorphismus: die<br />

Eingabe besteht aus zwei Graphen G i = 〈V i , E i 〉 , i < 2 . Zu<br />

entscheiden ist, ob es eine Bijektion V 0<br />

f<br />

V 1 gibt mit 〈u, v〉 ∈ E 0<br />

gdw. 〈f (u), f (v)〉 ∈ E 1 .<br />

Bemerkung<br />

Im Gegensatz dazu ist das Problem Subgraph-Isomorphismus<br />

NP -vollständig: <strong>für</strong> eine Eingabe aus zwei Graphen G i = 〈V i , E i 〉 ,<br />

f<br />

i < 2 , ist zu entscheiden, ob es eine Injektion V 0 V 1 gibt mit<br />

〈u, v〉 ∈ E 0 gdw. 〈f (u), f (v)〉 ∈ E 1 .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 160 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

6.8 Weitere NP -vollständige Probleme<br />

Beispiel ( 3-Sat ist NP -vollständig)<br />

3-Sat gehört aus demselben Grund wie Sat zu NP , vergl. S. 148.<br />

Idee <strong>für</strong> eine Reduktion Sat ⊳ 3-Sat : Wir formen eine Klausel<br />

ϕ := (α 0 ∨ α 1 ∨ · · · ∨ α k−1 ) der Länge k > 3 iterativ um zu<br />

(α 0 ∨ α 1 ∨ b 0 ) ∧ (¬b 0 ∨ α 2 ∨ · · · ∨ α k−1 )<br />

(α 0 ∨ α 1 ∨ b 0 ) ∧ (¬b 0 ∨ α 2 ∨ b 1 ) ∧ (¬b 1 ∨ α 3 ∨ · · · ∨ α k−1 )<br />

. . .<br />

bis eine Konjunktion von k − 2 Klauseln der Länge 3 erreicht ist. Da<strong>für</strong><br />

sind k − 3 neue Variablen nötig, also ist die Laufzeit pro Klausel linear.<br />

Korrektheit: Die Existenz eines j < k mit α j = true ist äquivalent zu<br />

b 0 = true und es existiert 2 ≤ j < k mit α j = true, oder<br />

b 0 = false und es existiert j < 2 mit α j = true<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 161 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Beispiel ( 3-Färbbarkeit ist NP -vollständig)<br />

Auf S. 124 haben 3-Färbbarkeit ∈ NP gezeigt.<br />

Um 3-Sat auf 3-Färbbarkeit zu reduzieren, betrachten wir<br />

H :<br />

d<br />

•<br />

•<br />

a<br />

x<br />

•<br />

•<br />

b<br />

c<br />

Behauptung 0: Sind a , b und c in H rot, dann auch d .<br />

Beweis: Wenn b und c rot sind müssen die Farben blau und gelb bei den<br />

links danebenliegenden Knoten auftreten, folglich ist x rot. Dasselbe<br />

Argument <strong>für</strong> a und x liefert, daß d rot sein muß.<br />

Behauptung 1: Ist einer der Knoten a , b oder c blau, kann auch d<br />

blau gefärbt werden.<br />

Beweis: Klar, wenn a , b und c blau sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 162 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Beispiel (Fortsetzung)<br />

Ist a blau und x rot, können wir die links danebenliegenden Knoten rot<br />

bzw. gelb und dann d blau färben. Ist b oder c blau, kann x blau<br />

gefärbt werden, und ebenso d , unabhängig von der Farbe von a .<br />

Reduktion: Einer Formel ϕ in KNF ordnen wir einen Graphen G ϕ zu,<br />

der aus drei Typen von Teilgraphen besteht: Dreiecken<br />

R<br />

G<br />

B<br />

und<br />

x ¬x<br />

und <strong>für</strong> jede Klausel (α ∨ β ∨ γ) eine Kopie von H<br />

G<br />

<strong>für</strong> jede Variable x in ϕ<br />

B<br />

•<br />

•<br />

α<br />

x<br />

•<br />

•<br />

β<br />

γ<br />

mit Knoten α , β bzw. γ in den obigen Literal-Dreiecken.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 163 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Beispiel (Fortsetzung)<br />

So ist etwa die Klausel (x ∨ ¬y ∨ ¬z) <strong>für</strong> den folgenden Teilgraphen<br />

verantwortlich:<br />

z ¬z<br />

y ¬y<br />

x ¬x<br />

R<br />

G<br />

B<br />

•<br />

•<br />

•<br />

•<br />

•<br />

Jede weitere 3-Klausel liefert eine weitere Kopie des Hilfsgraphen H , die<br />

bei B anzuheften ist, und ggf. weitere bei G anzuheftende Dreiecke <strong>für</strong><br />

neue Variablen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 164 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Beispiel (Fortsetzung)<br />

Korrektheit: Ist ϕ erfüllbar, so färben wir die Knoten R , G und B mit<br />

den Farben rot, gelb bzw. blau. Im Dreieck <strong>für</strong> die Variable x ist dann das<br />

wahre Literal blau und das falsche rot zu färben. Wegen der Erfüllbarkeit<br />

von ϕ ist in jeder Kopie von H ein Knoten α , β oder γ blau gefärbt,<br />

was mit der Färbung von B konsistent ist.<br />

Ist G ϕ 3-färbbar, dann seien oBdA die Knoten R , G und B rot, gelb<br />

und blau gefärbt. Kein Variablen-Knoten kann dann gelb gefärbt sein, und<br />

nach der ersten Behauptung können in keiner Kopie von H die Knoten<br />

α , β und γ rot gefärbt sein. Also ist einer dieser Knoten blau, was nach<br />

der zweiten Behauptung zur blau-Färbung von B konsistent ist, und<br />

damit ist die Klausel wahr.<br />

Laufzeit: Die Anzahl der Variablen-Dreiecke und der Kopien von H<br />

beträgt jeweils O(|ϕ|) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 165 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Satz<br />

k -Färbbarkeit ist NP -vollständig <strong>für</strong> jedes k > 2 .<br />

Beweis.<br />

Das Beispiel zeigt die NP -Vollständigkeit von 3-Färbbarkeit.<br />

Zwecks Reduktion k -Färbbarkeit ⊳ (k + 1)-Färbbarkeit fügen wir<br />

einen neuen Knoten zu G hinzu, den wir in linearer Zeit mit allen alten<br />

Knoten verbinden. Der neue Graph G ′ ist genau dann (k + 1)-färbbar,<br />

wenn G k -färbbar ist.<br />

Definition<br />

Ein Graph heißt planar, wenn er ohne Kantenüberschneidungen in der<br />

Ebene gezeichnet werden kann.<br />

Planare k -Färbbarkeit ist trivial <strong>für</strong> k > 3 Appel, Haken 1976 ;<br />

NP -vollständig <strong>für</strong> k = 3 ;<br />

in P <strong>für</strong> k < 3 .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 166 / 215


6. Komplexität von Algorithmen 6.8 Weitere NP - vollständige Probleme<br />

Beispiel (Hamilton’scher Kreis (HC) ist NP -vollständig)<br />

Eingabe: ungerichteter Graph G = 〈V , E〉 . Zu entscheiden ist, ob ein<br />

Rundweg (Kreis) existiert, der alle Knoten genau einmal besucht.<br />

Aufgabe 5.6 zeigt einen expliziten Beweis basierend auf [Christos H.<br />

Papadimitriou. Computational Complexity. Addison-Wesley, 1994].<br />

Beispiel (TSP ist NP -vollständig)<br />

TSP ∈ NP : vergl. Seite 147.<br />

HC ⊳ TSP : ordne einem ungerichteten Graphen G = 〈V , E〉 die<br />

Konstante K := |V | zu und die {1, 2}-wertige Kostenmatrix mit<br />

d i,j = 1 gdw {i, j} ∈ E<br />

Korrektheit: Klar, da ein Hamilton’scher Kreis in einem Graphen mit n<br />

Knoten die Länge n haben muß.<br />

Die Laufzeit ist im Falle von Adjazenzmatrizen quadratisch in n , da<br />

einzig die Nullen der Adjazenzmatrix durch Zweien zu ersetzen sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 167 / 215


6. Komplexität von Algorithmen 6.9 Die Klasse coNP<br />

6.9 Die Klasse coNP<br />

Der Abschluß von P unter Komplementbildung sollte “von rechts wegen”<br />

bewiesen werden, indem man die Endzustandsmenge einer dTM, die<br />

immer hält, durch ihr Komplement ersetzt (wie im Fall regulärer<br />

Sprachen). Die technische Konvention eines einzigen Endzustands q F<br />

erfordert den Umweg, einen neuen Endzustand q G einzuführen, und<br />

Übergänge 〈p, s〉 ↦→ 〈q G , a〉 , sofern q ≠ q F und keine Übergänge aus<br />

〈p, s〉 existieren. Die Zeitkomplexität wird davon nicht tangiert.<br />

Wendet man dasselbe Verfahren auf eine nTM M an, die immer hält, so<br />

braucht die Sprache L( ¯M) nicht mit dem Komplement Σ ∗ − L<br />

übereinzustimmen: sobald <strong>für</strong> w ∈ L(M) auch eine nicht-akzeptierende<br />

Berechnung existiert, gehört w auch zu L( ¯M) .<br />

Tatsächlich ist die Frage, ob NP mit coNP übereinstimmt, bisher<br />

offen. Im negativen Fall würde P ≠ NP folgen. Auf jeden Fall gilt aber<br />

P ⊆ coNP .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 168 / 215


6. Komplexität von Algorithmen 6.9 Die Klasse coNP<br />

Beispiel (Gültigkeit ist coNP -vollständig)<br />

Eingabe: Boole’sche Formel ϕ in KNF. Zu entscheiden ist, ob jede<br />

Belegung der Variablen ϕ den Wert true zuordnet.<br />

Als Alphabet <strong>für</strong> Boole’sche Formeln diene Σ = {x, 0, 1, ∧, ∨, ¬, (, )} . Die<br />

Variablen sollen die Form xw haben, w eine Binärzahl. Somit können wir<br />

die Menge der Formeln in KNF als (reguläre!) Sprache Knf über Σ<br />

auffassen, die die Menge Gültigkeit der gültigen Formeln enthält.<br />

Das Komplement Gültigkeit ist die Vereinigung aus<br />

⊲<br />

⊲<br />

Σ ∗ − Knf , was regulär ist und folglich zu P ⊆ NP gehört; und<br />

Knf − Gültigkeit = { ϕ ∈ Knf : ¬ϕ erfüllbar } ; mit Belegungen<br />

der Variablen, die <strong>für</strong> ϕ den Wert false liefern, als Zertifikaten folgt<br />

auch hier die Zugehörigkeit zu NP .<br />

Da NP unter binären Vereinigungen abgeschlossen ist, folgt<br />

Gültigkeit ∈ NP , und somit Gültigkeit ∈ coNP .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 169 / 215


6. Komplexität von Algorithmen 6.9 Die Klasse coNP<br />

Beispiel (Fortsetzung)<br />

Der Nachweis der coNP -Vollständigkeit erfordert zu zeigen, daß jedes<br />

coNP -Problem auf Gültigkeit FP -reduziert werden kann. Aber aus<br />

L ∈ coNP folgt ¯L ⊳ Sat , etwa vermöge einer FP -Reduktion g . Für die<br />

Selbst-Abbildung w ↦→ ¬g(w) auf Σ ∗ gilt zweifellos<br />

w ∈ L gdw w /∈ L gdw g(w) nicht erfüllbar gdw ¬g(w) gültig<br />

Leider ist dies noch keine FP -Reduktion von L auf Gültigkeit , da<br />

¬g(w) als Negation einer KNF-Formel i.A. nicht in KNF vorliegt; das<br />

Hineinziehen der Negation zu den Literalen liefert sogar eine Formel in<br />

DNF, deren äquivalente Umwandlung in KNF zu exponentiellem<br />

Längenwachstum führen kann.<br />

Mit Hilfe neuer Variablen läßt sich ¬g(w) aber in eine gleicherfüllbare<br />

Formel ψ(w) in KNF umwandeln, die gegenüber ¬g(w) nur linear<br />

wächst (vergl. HA 5.5(d)). Damit liefert w ↦→ ψ(w) die gewünschte<br />

FP -Reduktion L ⊲ Gültigkeit .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 170 / 215


6. Komplexität von Algorithmen 6.9 Die Klasse coNP<br />

Der nächste Satz folgt aus der entsprechenden Aussage in NP :<br />

Satz<br />

Aus L ⊳ K ∈ coNP folgt L ∈ coNP , d.h., bzgl. ⊳ ist coNP ein<br />

unterer Abschnitt der Klasse E aller E-Probleme.<br />

Offenes Problem<br />

Stimmt der Durchschnitt von NP und coNP mit P überein?<br />

Satz<br />

NP = coNP genau dann wenn es ein coNP -vollständiges Problem in<br />

NP gibt.<br />

Beweis.<br />

( ⇐ ) Aus coNPV ∩ NP ≠ ∅ folgt coNP ⊆ NP , da NP ein unterer<br />

Abschnitt ist. Also gilt auch NP = cocoNP ⊆ coNP .<br />

( ⇒ ) Das coNP -vollständige Problem Gültigkeit gehört zu NP .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 171 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

6.10 Komplexität von Optimierungsproblemen<br />

Das TSP in seiner E-Variante wirkt etwas künstlich: die Schranke K hat<br />

intrinsisch wenig mit dem Problem zu tun. Gesucht ist eigentlich die<br />

“beste” Reiseroute. Ähnlich verhält es sich mit der Färbbarkeit von<br />

Graphen: hier ist eigentlich die minimale Farbenzahl von Interesse, mit der<br />

ein Graph gefärbt werden kann. An diese kann man sich “herantasten”, a<br />

indem man die Schranke k im zugehörigen E-Problem sukzessive<br />

verringert.<br />

Das deutet an, daß es neben den Klassen der Entscheidungs- oder<br />

E-Probleme und der Berechnungs- oder B-Probleme eine weitere Klasse<br />

interessanter und wichtiger Probleme von praktischer Relevanz gibt: die<br />

Optimierungs- oder O-Probleme.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 172 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Die Probleme MaximalesMatching und MaxFlow<br />

Definition<br />

Ein gerichteter Graph G = 〈V , E〉 heißt bipartite, wenn eine Zerlegung<br />

V = V 0 + V 1 existiert, so daß alle Kanten nur von Knoten in V 0 zu<br />

Knoten in V 1 verlaufen, formal E ⊆ V 0 × V 1 + V 1 × V 0 .<br />

Unter einem Matching versteht man dann eine Menge paarweise disjunkter<br />

Kanten, d.h., je zwei Kanten haben keinen gemeinsamen Endpunkt.<br />

Bzgl. der Kantenzahl maximale Matchings kann man finden, indem man<br />

gegebene Matchings solange mittels sog. “erweiternder Wege”in größere<br />

Matchings umwandelt, wie möglich. Dann ist zu beweisen, daß alle derart<br />

konstruierbaren Matchings dieselbe Kantenzahl haben.<br />

Stattdessen werden wir MaximalesMatching auf ein allgemeineres<br />

Problem reduzieren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 173 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Definition<br />

Einem Netzwerk ist ein gerichteter Graph G = 〈V , E〉 zusammen mit<br />

zwei ausgezeichneten Knoten s, t ∈ V (<strong>für</strong> “Source” und “Target”)<br />

ohne ein- bzw. ausgehende Kanten;<br />

einer Kapazitätsfunktion V × V c N, die der Bedingung<br />

〈u, v〉 /∈ E gdw c〈u, v〉 = 0 genügt.<br />

Ein Fluß durch das Netzwerk ist eine Abbildung V × V f Z mit<br />

0 ≤ f 〈u, v〉 ≤ c〈u, v〉 <strong>für</strong> 〈u, v〉 ∈ E ;<br />

f 〈u, v〉 = −f 〈v, u〉 <strong>für</strong> alle u, v ∈ V ;<br />

∑<br />

u∈V<br />

f 〈u, v〉 = 0 <strong>für</strong> alle Knoten v ∈ V − {s, t} .<br />

Schließlich ist die Größe des Flusses f gegeben durch<br />

‖f ‖ :=<br />

∑<br />

f 〈s, v〉 =<br />

∑<br />

f 〈v, t〉<br />

〈s,v〉∈E<br />

〈v,t〉∈E<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 174 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Ford-Fulkerson Algorithmus (1956), informell<br />

Um einem Fluß f in einem Netzwerk auf Maximalität zu prüfen versuchen<br />

wir, einen größeren Fluß f ′ zu finden. Dann hat auch der Differenzfluß<br />

∆f = f ′ − f positive Größe, kann allerdings <strong>für</strong> gewisse Kanten<br />

〈u, v〉 ∈ E negative Werte annehmen. Diese sind als positive Werte<br />

entlang der umgekehrten Kante 〈v, u〉 zu interpretieren, d.h., ∆f lebt<br />

auf einem hinsichtlich f modifizierten Netzwerk:<br />

Definition<br />

Zu einem Netzwerk 〈〈V , E〉, s, t, c〉 und einem Fluß f ist das abgeleitete<br />

Netzwerk N(f ) = 〈〈V , E ′ 〉, s, t, c ′ 〉 bestimmt durch<br />

〈u, v〉 ∈ E ′ gdw c ′ 〈u, v〉 := c〈u, v〉 − f 〈u, v〉 > 0<br />

Offenbar ist f genau dann maximal, wenn kein positiver Fluß auf N(f )<br />

existiert, d.h., wenn t von s aus in 〈V , E ′ 〉 nicht erreichbar ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 175 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Algorithmus <strong>für</strong> maximalen Fluß<br />

Beispiel<br />

(Initialisierung:) f 0 sei der Null-Fluß.<br />

(Rekursion:) Falls t von s in N(f n ) erreichbar ist,<br />

− wähle einen Pfad P von s nach t in N(f n ) ;<br />

− bestimme die minimale Kapazität k entlang der P -Kanten;<br />

− Hinzufügen aller P -Kanten mit dem Wert k zu f n liefert f n+1 .<br />

12 12<br />

12 19<br />

v 0 v 1<br />

16<br />

4<br />

20<br />

81<br />

12<br />

12<br />

v 0 v 1<br />

12 19<br />

N(f 01 23 ) : s<br />

117<br />

10 4 7<br />

t<br />

9<br />

4<br />

v 2 v 3<br />

13<br />

62 4<br />

14<br />

73<br />

11 7<br />

f 01 23 : s<br />

117<br />

t<br />

4<br />

v 2 v 3<br />

In N(f 3 ) ist t von s aus nicht mehr erreichbar, also ist f 3 maximal.<br />

11 7<br />

7<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 176 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Die maximale Größe eines Flusses ist natürlich durch das Minimum der<br />

Kapazitätssummen der Kanten aus s bzw. nach t beschränkt. Daher<br />

terminiert der obige Algorithmus nach endlich vielen Schritten, da der Fluß<br />

pro Schritt um mindestens 1 größer wird. (Für R-wertige Kapazitäten<br />

und Flüsse gilt dieses Argument nicht mehr!)<br />

Da obiges Argument bzgl. des Differenzflusses <strong>für</strong> jeden Fluß f und jeden<br />

Fluß F maximaler Größe anwendbar ist, folgt sofort, daß der Algorithmus<br />

unabhängig von der Wahl der Verbindungspfade immer ein globales<br />

Maximum liefert, nicht nur ein lokales.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 177 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Beispiel ( MaximalesMatching ⊳ MaxFlow )<br />

Einem bipartiten Graph G = 〈V 0 + V 1 , E ⊆ V 0 × V 1 〉 ordnen wir als<br />

Netzwerk N(G) den Graphen<br />

〈V 0 + V 1 + {s, t}, {s} × V 0 + E + V 1 × {t}〉<br />

zusammen mit den neuen Knoten s und t und der auf der neuen<br />

Kantenmenge konstant 1-wertigen Kapazitätsfunktion zu.<br />

Laufzeit: Zwei neue Knoten lassen den Graphen linear wachsen; die<br />

Adjazenzmatrix codiert die Kapazitätsfunktion.<br />

Korrektheit: Ein Matching M <strong>für</strong> G läßt sich durch Verbinden der<br />

beteiligten Knoten mit s bzw. t zu einem Fluß m auf N(G) ergänzen;<br />

die paarweise Disjunktheit der Kanten des Matchings ist äquivalent zur<br />

Gleichgewichtsbedingung des Flusses. Die Anzahl der Kanten in M<br />

stimmt mit der Größe des Flusses überein, also bewirkt eine Vergrößerung<br />

des Matchings eine Vergrößerung des Flusses und umgekehrt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 178 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Beispiel (Fortsetzung)<br />

N(f 01 23 4 ) : f 01 23 4 :<br />

Wir stellen fest:<br />

Im Spezialfall uniformer Kantenkapazität entsteht das abgeleitete<br />

Netzwerk durch Umkehrung der Kanten, die den gewählten Pfad von<br />

s nach t ausmachen.<br />

Auch die Wahl eines absurd langen Pfades, etwa in N(f 1 ) oben,<br />

vergrößert das bisherige Matching nur um eine Kante (warum?).<br />

Kürzere Pfade haben denselben Effekt und sind daher vorzuziehen. In<br />

N(f 3 ) ist dagegen kein kürzerer Pfad möglich.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 179 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Formalisierung von Optimierungsproblemen<br />

Definition<br />

Ein Optimierungsproblem 〈Σ, E, A, L, c〉 besteht aus<br />

einem Alphabet Σ , codiert Probleminstanzen und Lösungen;<br />

Sprachen E, A ⊆ Σ ∗<br />

der Probleminstanzen bzw. Lösungen;<br />

einer Lösungsrelation L ⊆ E × A , die Probleminstanzen mit<br />

zulässigen Lösungen verbindet;<br />

einer Kostenfunktion L c N.<br />

Eine TM M löst das Mini/Maximierungsproblem 〈Σ, E, A, L, c〉 , falls M<br />

bei Eingabe von v ∈ E mit Ausgabe w ∈ A hält und gilt<br />

⊲ v L w ;<br />

⊲ c〈v, w〉 ≤ ≥ c〈v, w ′ 〉 <strong>für</strong> alle w ′ ∈ A mit v L w ′ .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 180 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Da die Kostenfunktion N-wertig ist, hat jede lösbare Instanz eines<br />

Minimierungsproblems auch eine minimale Lösung, während bei<br />

Maximierungsproblemen keine maximale Lösung zu existieren braucht.<br />

Definition<br />

PO ist die Klasse der Optimierungsprobleme P = 〈Σ, E, A, L, c〉 mit<br />

E, A ∈ P ;<br />

Es gibt ein Polynom p , so daß aus 〈v, w〉 ∈ L folgt |w| ≤ p(|v|)<br />

(die Lösungen sind “kurz”);<br />

die charakteristische Funktion χ L und c gehören zu FP ;<br />

Definition<br />

P wird von einer dTM mit polynomialer Zeitkomplexität gelöst.<br />

Das dem Mini/Maximierungsproblem P = 〈Σ, E, A, L, c〉 zugrunde<br />

liegende E-Problem P dec<br />

hat neben v ∈ E eine Zahl k ∈ N als Eingabe.<br />

Zu entscheiden ist, ob w ∈ A existiert mit 〈v, w〉 ∈ L und c〈v, w〉 ≤ ≥ k .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 181 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Bemerkung<br />

P ∈ PO impliziert natürlich P dec<br />

∈ P . Sofern P ≠ NP , folgt aus der<br />

NP -Vollständigkeit von P dec<br />

dann auch P /∈ PO .<br />

Beispiel ( MaxMatching ∈ PO )<br />

Codierung einer Probleminstanz: Knotenzahl n , Adjazenzmatrix A und<br />

binäres Partitionierungs-n-Tupel β , bzgl. dessen Bipartizität vorliegt.<br />

Codierung von potentiellen Lösungen durch (n × n)-Matrizen M .<br />

Syntaxcheck Probleminstanz: A hat nur Einsen in Positionen, deren<br />

Koordinaten verschiedene β -Werte haben (der Graph ist bipartite).<br />

Syntaxcheck potentielle Lösung: pro Zeile und Spalte tritt höchstens<br />

eine Eins auf (das Matching besteht aus disjunkten Kanten).<br />

A L M gdw M ≤ A komponentenweise (Teilgraph).<br />

c(M) ist die Hälfte der Anzahl der Einsen in M (Symmetrie).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 182 / 215


6. Komplexität von Algorithmen 6.10 Komplexität von Optimierungsproblemen<br />

Beispiel (Fortsetzung)<br />

Der Lösungsalgorithmus verwendet Erreichbarkeit ∈ P bzgl. s<br />

und t im abgeleiteten Netzwerk; letzteres entsteht durch Umkehrung<br />

gewisser Kanten, was in polynomialer Zeit machbar ist.<br />

Terminologie<br />

Optimierungsproblemen tragen Namen mit Präfix Min oder Max.<br />

Beispiel ( MinFärbb /∈ PO )<br />

Eingabe: ungerichteter Graph; zu bestimmen ist die Minimalzahl an<br />

Farben <strong>für</strong> eine Knotenfärbung. Das zugehörige E-Problem MinFärbb dec<br />

umfaßt 3-Färbbarkeit, was bekanntlich NP -vollständig ist.<br />

Beispiel ( MinTSP /∈ PO )<br />

Hier stimmt MinTSP dec<br />

mit dem NP -vollständigen E-Problem TSP<br />

überein, vergl. S. 144.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 183 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

6.11 Approximation von Optimierungsproblemen<br />

Gegeben: ein Optimierungsproblem P mit P dec<br />

NP -vollständig<br />

Ziel: optimale Lösung effizient approximieren, mittels einer dTM mit<br />

polynomialer Zeitkomplexität<br />

Wir unterscheiden verschiedene Ansätze:<br />

Heuristik: ein Algorithmus, der erfahrungsgemäß “gute” Lösungen<br />

konstruiert, aber ohne harte Schranken <strong>für</strong> die Approximationsgüte.<br />

Approximationsalgorithmus: dieser liefert harte Schranke <strong>für</strong> die Güte<br />

der Approximation.<br />

PTAS: parametrisierter Algorithmus, der beliebig gute<br />

Approximationen erlaubt, auf Kosten der Laufzeit.<br />

volles PTAS: zusätzlich hängt die Laufzeit polynomial von der<br />

Approximationsgüte ab.<br />

Wir beschränken uns auf die ersten beiden Punkte.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 184 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Algorithmus <strong>für</strong> MinKÜ<br />

Gegeben: ungerichteter Graph G = 〈V , E〉 ;<br />

Gesucht: minimale Knotenmenge D ⊆ V , die jede Kante e ∈ E<br />

nichtleer schneidet (Knotenüberdeckung).<br />

Gemäß einer Übungsaufgabe ist MinKÜ dec<br />

= KÜ NP -vollständig.<br />

1: D := ∅ ; {bisherige Überdeckung}<br />

2: while der aktuelle Graph eine Kante e hat do<br />

3: D := D ∪ e ; {Überdeckung um Endpunkte von e vergrößern.}<br />

4: G := 〈V − e, E ′ 〉 ; {Diese Knoten aus G entfernen, durch<br />

Löschen zweier Zeilen und Spalten der Adjazenzmatrix}<br />

5: end while<br />

Korrektheit: Jede aus E entfernte Kante schneidet D nichtleer, und alle<br />

Kanten werden aus E entfernt.<br />

Laufzeit: O(|E|) , denn jede Kante wird einmal besucht und entfernt.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 185 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Güte der Approximation<br />

Satz<br />

Die minimale Größe opt(G) einer Knotenüberdeckung und die Größe<br />

c(G) der vom Algorithmus gelieferten Lösung erfüllen c(G) ≤ 2opt(G) .<br />

Beweis.<br />

D entsteht durch Vereinigung paarweise disjunkter Kanten. Jede andere<br />

Knotenüberdeckung D ′ , speziell eine optimale, muß einen Endpunkt jeder<br />

dieser Kanten enthalten, also mindestens |D|/2 viele Knoten.<br />

Definition<br />

Für ε > 0 heißt ein deterministischer Algorithmus <strong>für</strong> P mit polynomialer<br />

Laufzeit ε-approximierend <strong>für</strong> P = 〈Σ, E, A, L, c〉 , falls<br />

|c〈v, w〉 − opt(v)|<br />

|opt(v)|<br />

≤ ε wobei opt(v) := opt{ c〈v, w〉 : 〈v, w〉 ∈ L }<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 186 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beispiel<br />

Der obige Algorithmus <strong>für</strong> MinKÜ ist 1-approximierend, denn<br />

c(G) ≤ 2opt(G) impliziert c(G) − opt(G) ≤ opt(G) .<br />

Für ε < 1 ist der Algorithmus nicht ε-approximierend: G : • • liefert<br />

c(G) = 2 aber opt(G) = 1 .<br />

Beispiel ( SiT(k) )<br />

Das O-Problem Scheduling of Independent Tasks(k) hat ein<br />

n-Tupel t ∈ N n als Eingabe, zu interpretieren als Bearbeitungszeiten von<br />

n voneinander unabhängigen Aufgaben (Tasks). Für diese stehen k<br />

gleichmächtige Prozessoren zur Verfügung. Gesucht ist eine Abbildung<br />

S(t)<br />

n k (Arbeitsplan oder Schedule), die die Gesamtlaufzeit T (t)<br />

minimiert:<br />

∑<br />

T (t) = max{ t i : j < k }<br />

i∈S(t) −1 {j}<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 187 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Ein typischer Laufzeitplan hat etwa die Form<br />

5<br />

4<br />

Prozessor<br />

3<br />

2<br />

1<br />

0<br />

0 20 40 60<br />

Zeit<br />

Verschieben der letzten Aufgabe von Prozessor 4 nach Prozessor 1<br />

verbessert in diesem Fall die Gesamtlaufzeit.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 188 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Idee <strong>für</strong> einen SiT(k)-Algorithmus: die Aufgaben gemäß Zeitbedarf<br />

absteigend sortieren, in dieser Reihenfolge so verteilen, daß Prozessoren<br />

mit der bisher geringsten Belastung bevorzugt werden.<br />

Algorithmus <strong>für</strong> SiT(k)<br />

Gegeben: t ∈ N n ;<br />

Gesucht: Schedule n<br />

S(t)<br />

k, der die Gesamtlaufzeit minimiert.<br />

1: t absteigend sortieren;<br />

2: for m < k do<br />

3: T m = 0 ;<br />

4: end for<br />

5: for i < n do<br />

6: wähle j < k mit T j = min m


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Korrektheit: Die zweite FOR-Schleife sorgt da<strong>für</strong>, daß jedem Task ein<br />

Prozessor zugeordnet wird.<br />

Laufzeit: Wegen der Konstanz von k haben die erste FOR-Schleife und<br />

der Körper der zweiten FOR-Schleife konstante Laufzeit. Also benötigt<br />

die zweite Schleife lineare Laufzeit. Die Sortierung erfordert O(n log n) .<br />

Beispiel<br />

〈1, 3, 5, 3, 10, 7〉 liefert umsortiert 〈t 0 , t 1 , t 2 , t 3 , t 4 , t 5 〉 = 〈10, 7, 5, 3, 3, 1〉 ,<br />

was bei k = 3 Maschinen zu folgenden Zuordnungen und Laufzeiten führt:<br />

S(t) −1 {0} = {0} , S(t) −1 {1} = {1, 4} , S(t) −1 {2} = {2, 3, 5}<br />

2<br />

Prozessor<br />

1<br />

0<br />

0 2 4 6 8 10<br />

Zeit<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 190 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Satz<br />

Der obige Algorithmus ist 1-approximierend.<br />

Beweis<br />

Wähle eine Aufgabe i , die zur Zeit T (t) endet. Falls i < k folgt<br />

t i = T (t) , und somit T (t) = T opt<br />

. Andernfalls haben wir<br />

Prozessor<br />

k − 1<br />

.<br />

3<br />

2<br />

1<br />

0<br />

Da alle Prozessoren bis zur Zeit T (t) − t i<br />

0<br />

T (t) − t i<br />

T (t)<br />

beschäftigt sind, gilt<br />

T (t) − t i ≤ T opt<br />

und folglich T (t) − T opt<br />

≤ t i<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 191 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beweis (Fortsetzung)<br />

Nach Voraussetzung muß zudem t i ≤ T (t) − t i und folglich t i ≤ T opt<br />

gelten, denn sonst wäre die Aufgabe i früher verplant worden. Damit also<br />

T (t) − T opt<br />

T opt<br />

≤ t i<br />

T opt<br />

≤ t i<br />

t i<br />

= 1<br />

Ohne Beweis stellen wir fest, daß der Algorithmus sogar 1 3 -approximierend<br />

ist. Man spricht in diesem Zusammenhang auch von der Güte der<br />

Approximation.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 192 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Ziel: PTAS <strong>für</strong> k = 2 . Dazu: Optimalalgorithmus <strong>für</strong> SiT(2) verwenden:<br />

finde alle Teilsummen von t ∈ N n mit dynamischer Programmierung;<br />

jede minimale Teilsumme ≥ τ := 1 ∑<br />

2 i


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beispiel<br />

Für t = 〈10, 53, 37, 22〉 erhalten wir τ = 122/2 = 61 sowie<br />

B 0 = {0}<br />

B 1 = {0, 0 + 10}<br />

B 2 = {0, 10, 0 + 53, 10 + 53}<br />

B 3 = {0, 10, 53, 63, 0 + 37, 10 + 37, 53 + 37, 63 + 37}<br />

B 4 = {0, 10, 53, 63, 37, 47, 90, 100, 22, 32, 75, 59, 69, 112, 122}<br />

Damit ordnet die optimale Lösung den beiden Prozessoren die Aufgaben<br />

der Längen 22 und 37 bzw. 10 und 53 zu.<br />

Idee: ε-Approximation <strong>für</strong> Eingabe t ∈ N n durch Optimallösung <strong>für</strong> linear<br />

verkürzte Eingabe t ′ = rnd( 1 λ · t) ∈ Nn mit λ > 1 realisieren. Durch die<br />

Verkürzung der Eingabewerte um den Faktor λ gehen Bits verloren<br />

(Rundungsfehler), daher wird S(t ′ ) i.A. nicht mit S(t) übereinstimmen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 194 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Der relative Fehler der Kosten hat dann die Form<br />

|c(t) − opt(t)|<br />

|opt(t)|<br />

= |λ · opt(t′ ) − opt(t)|<br />

|opt(t)|<br />

≤ |λ · opt(t′ ) − opt(t)|<br />

τ<br />

Nun müssen wir durch geeignete Wahl von λ sicherstellen, daß der Zähler<br />

nach oben durch τε beschränkt ist, damit der relative Fehler ≤ ε bleibt.<br />

Der Vergleich entsprechender Teilsummen b ∗ ′ und b ∗ <strong>für</strong> t ′ bzw. t aus<br />

den jeweiligen Optimalalgorithmen liefert<br />

|λ · b ′ ∗ − b ∗ | = λ · |b ′ ∗ − b ∗ /λ| ≤ λ · n<br />

2<br />

da b ′ ∗<br />

eine Summe aus höchstens n gerundeten Werten ist. Setze<br />

λ := max{1, 2τɛ/n}<br />

Falls 1 ≥ 2τɛ/n gilt, ist die optimale Lösung des ursprünglichen Problems<br />

zu bestimmen, was dem Zähler des obigen Bruchs den Wert 0 zuweist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 195 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

In der Praxis wollen wir reelle Arithmetik vermeiden und die lineare<br />

Verkürzung durch Abschneiden von Ziffern realisieren. Anstelle von rnd<br />

ist dann die Funktion ⌊−⌋ zu verwenden, wodurch der Faktor 1 2<br />

entfällt.<br />

Für die β Basis der Zahlencodierung erhält man den Skalierungsfaktor<br />

λ := β r mit r := max{ x ∈ N : β x ≤ τε/n }<br />

Die Zeitkomplexität liegt nun in O(n · τ/λ) = O(n/ε) .<br />

Definition<br />

Ein PTAS <strong>für</strong> ein O-Problem P = 〈Σ, E, A, L, c〉 ist ein Algorithmus M<br />

mit Eingabe v ∈ E und ε > 0 , dessen Ausgabe w ∈ A mit 〈v, w〉 ∈ L<br />

einen relativen Fehler ≤ ε aufweist. Weiterhin muß <strong>für</strong> jedes ε > 0 ein<br />

Polynom p ε existieren, so daß M( , ε) eine Laufzeit in O(p ε ) hat.<br />

Ein PTAS heißt voll, falls die Laufzeit des Algorithmus polynomial in |v|<br />

und in 1/ε ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 196 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beispiel<br />

Der oben beschriebene Algorithmus <strong>für</strong> SiT(2) ist ein volles PTAS.<br />

Beispiel<br />

Das O-Problem MinBinPAcking hat als Eingabe ein Tupel a ∈ N n von<br />

“Gewichten” und eine “Kapazität” C ∈ N . Gesucht ist die Minimalzahl<br />

an “Körben” der Kapazität C , die alle Gewichte aufnehmen können.<br />

Diese Problem besitzt ein PTAS dessen Laufzeit exponentiell in 1/ε ist.<br />

Unter der Voraussetzung P ≠ NP existiert kein volles PTAS <strong>für</strong><br />

MinBinPAcking (ohne Beweis).<br />

Satz<br />

Unter der Voraussetzung P ≠ NP existiert <strong>für</strong> kein ε > 0 ein<br />

ε-approximierender Algorithmus <strong>für</strong> MinTSP.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 197 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beweis<br />

Indirekt: wir nehmen an, A sei ein ε-approximierender Algorithmus <strong>für</strong><br />

MinTSP. Dann läßt sich das E-Problem HamiltonscherKreis (HK)<br />

in polynomialer Zeit von einer dTM lösen, im Widerspruch zu seiner<br />

NP -Vollständigkeit.<br />

Zu einem ungerichteten Graphen G = 〈V , E〉 definieren wir die<br />

Entfernungsmatrix<br />

⎧<br />

⎪⎨ 0 falls u = v<br />

d u,v := 1 falls {u, v} ∈ E<br />

⎪⎩<br />

2 + ⌈εn⌉ sonst<br />

Die von A berechnete Rundreise möge die Länge K haben.<br />

Behauptung: G hat genau dann einen HK, wenn K ≤ n(1 + ε) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 198 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Beweis (Fortsetzung)<br />

( ⇒ ) Besitzt G einen HK, so hat die optimale Rundreise die Länge n .<br />

Dann gilt<br />

|K − n|<br />

= K − 1 ≤ ε gdw K ≤ n(1 + ε)<br />

n n<br />

( ⇐ ) Ohne HK in G hat die optimale Rundreise mindestens die Länge<br />

2 + ⌈εn⌉ + n − 1 ≥ 1 + n + εn ≥ 1 + n(1 + ε) > n(1 + ε)<br />

Der resultierende Algorithmus <strong>für</strong> HK berechnet also d wie oben, wendet<br />

A auf die entsprechende Instanz von MinTSP an und prüft, ob die Länge<br />

des gefundenen Rundwegs durch n(1 + ε) beschränkt ist.<br />

Die Korrektheit ist klar, und die Laufzeit ist polynomial.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 199 / 215


6. Komplexität von Algorithmen 6.11 Approximation von Optimierungsproblemen<br />

Die Voraussetzung P ≠ NP liefert eine Einteilung der O-Probleme in<br />

eine strikt wachsende Hierarchie von Klassen mit Trennbeispielen:<br />

PO det. Polynomialzeit-Lösungsalgorithmen MaxMatching<br />

vPTAS volle PTAS SiT(2)<br />

PTAS Polynomialzeitapproximationsschemata MinBinPacking<br />

APX es ex. ein ε-approximierender Algo MinKÜ<br />

NPO ndet. Polynomialzeit-Lösungsalgotighmen MinTSP<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 200 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

6.12 Raumkomplexität<br />

Speicherbedarf von Algorithmen ist das zweite wichtige Effizienzkriterium.<br />

Definition<br />

Eine Funktion N t R + wird als Raumkomplexität einer nTM M<br />

bezeichnet, wenn der Kopf von M <strong>für</strong> jede Eingabe w ∈ X n höchstens<br />

auf t(n) verschiedene Felder zugreift. ( M muß nicht immer halten!)<br />

(N )PSPACE bezeichnet die Klasse aller E-Probleme, die von einer<br />

(n)dTM mit polynomialer Raumkomplexität akzeptiert werden können.<br />

In Analogie zur oben verwendeten Schreibweise findet man auch die<br />

Bezeichnungen PTIME und NPTIME <strong>für</strong> P bzw. NP .<br />

Da eine TM pro Schritt nur ein Feld beschreiben kann, gilt automatisch<br />

P = PTIME ⊆ PSPACE und NP = NPTIME ⊆ NSPACE<br />

Obwohl die Turingmaschinen hier nicht immer halten müssen, gilt<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 201 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Satz<br />

PSPACE -Sprachen sind entscheidbar.<br />

Beweisskizze<br />

Für jede Eingabe kann nur endlicher Teil des Bandes erreicht werden, also<br />

gibt es auch nur endlich viele mögliche Konfigurationen. Berechnet man<br />

zunächst eine Schranke <strong>für</strong> deren Anzahl und zählt dann die Schritte, so<br />

kann man feststellen, wann sich eine Konfiguration wiederholt haben muß.<br />

Im deterministischen Fall kann die Eingabe dann nicht mehr akzeptiert<br />

werden, insofern kann man die Berechnung abbrechen.<br />

Für eine nTM M versagt dieses Argument, weil Berechnungszweige<br />

ignoriert werden können. Der übliche Übergang zur Determinisierung M d<br />

,<br />

führt hier leider nicht weiter: die Schranke <strong>für</strong> die Anzahl der erreichbaren<br />

Konfigurationen ist exponentiell in der Raumkomplexität, aber die Buchführung<br />

über die Berechnungstiefe in M d<br />

erfolgte unär! Statt hier etwa zu<br />

binärer Darstellung überzugehen, wählen wir einen anderen Ausweg.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 202 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Zuvor aber eine vereinfachende Annahme über Turingmaschinen:<br />

Lemma<br />

Jede 1-Band TM mit polynomialer Raumkomplexität p(n) ≥ n ist<br />

äquivalent zu einer 1-Band TM mit ebenfalls polynomialer<br />

Raumkomplexität, die nur mit leerem Band halten kann.<br />

Beweisskizze<br />

Für w ∈ Σ n berechne p(n) (Speicherbedarf grd p · n ) und schreibe<br />

spezielle Randmarkierer auf die Bandzellen mit Index ±p(n) . Nach<br />

Rückkehr zum rechten Rand von w wird die Ursprungsmaschine<br />

ausgeführt, wobei die Ränder nach Vorausssetzung nicht überschritten<br />

werden können. Hält diese Berechnung, wird der Bandbereich zwischen<br />

den Randbegrenzern (einschließlich) gelöscht.<br />

Im Gegensatz zum bislang unbestimmten Verhältnis zwischen nichtdeterministischen<br />

und deterministischen Turing-Maschinen bei der<br />

Zeitkomplexität, herrscht bei der Raumkomplexität Klarheit:<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 203 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Satz (Savitch, 1970)<br />

Jede nTM mit polynomialer Raumkomplexität p kann von einer dTM mit<br />

Raumkomplexität p 2 simuliert werden, also PSPACE = NPSPACE .<br />

Beweis<br />

Die nTM M habe Raumkomplexität p(n) ≥ n und möge nur bei leerem<br />

Band halten, d.h., K F = 〈q F , #〉 ist die einzige Haltekonfiguration.<br />

Zwecks Abschätzung der Anzahl κ der von der Initialkonfiguration bei der<br />

Berechnung von w mit |w| = n aus potentiell erreichbaren<br />

Konfigurationen setzen wir r := |Q| und m := |B| .<br />

κ ≤ r · m p(n) · p(n) < r · (m p(n)) 2 < 2<br />

C·p(n)<br />

<strong>für</strong> geeignetes C ∈ N<br />

Wir betrachten jetzt nur noch solch potentiell erreichbare Konfigurationen.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 204 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Beweis (Fortzetzung)<br />

Genau dann, wenn eine Konfiguration K ′ von K aus in höchstens 2 i<br />

Schritten erreicht werden kann, setzen wir abkürzend<br />

REACH (K, K ′ , i) = true<br />

Also akzeptiert M die Eingabe w genau dann, wenn gilt<br />

wobei K w<br />

REACH (K w , K F , C · p(n)) = true<br />

die Initialkonfiguration bei Eingabe w ist.<br />

Gesucht: ein deterministischer Algorithmus <strong>für</strong> REACH (K, K ′ , i) , der<br />

<strong>für</strong> Werte i < C · p(n) selbst polynomiale Raumkomplexität hat.<br />

Wir geben eine rekursive Konstruktion <strong>für</strong> einen derartigen Algorithmus an:<br />

i = 0 : REACH (K, K ′ , 0) = true gdw K = K ′ oder K ⊢ K ′ .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 205 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Beweis (Fortzetzung)<br />

i + 1 : Wir nehmen an, <strong>für</strong> i ≥ 0 haben wir einen REACH -Algorithmus<br />

mit der gewünschten Eigenschaft. Nun ist REACH (K, K ′ , i + 1) genau<br />

dann wahr, wenn eine Zwischenkonfiguration ¯K existiert mit<br />

REACH (K, ¯K, i) = true und REACH ( ¯K, K ′ , i) = true<br />

Insgesamt sind dann höchstens 2 · 2 i = 2 i+1 Schritte nötig, um K ′ von<br />

K aus zu erreichen.<br />

Der Algorithmus <strong>für</strong> i + 1 probiert nun systematisch alle von der K w<br />

potentiell erreichbaren Konfigurationen ¯K durch.<br />

Raumkomplexität: Die Spezifikation einer erreichbaren Konfiguration<br />

benötigt maximal p(n) + 2 Bandzellen. Beim rekursiven Aufruf kann der<br />

Platz vom letzten Versuch wiederverwendet werden. Der Zähler i ist<br />

durch C · p(n) ∈ O(p(n)) beschränkt.<br />

aus<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 206 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Beweis (Fortsetzung)<br />

Der Raumbedarf S(i) erfüllt damit die Rekursion<br />

S(0) = C · p(n) und S(i + 1) = C · p(n) + S(i)<br />

Dies läßt sich auflösen zu<br />

S(C · p(n)) = C · p(n) + S(C · p(n) − 1)<br />

= C · p(n) + C · p(n) + S(C · p(n) − 2)<br />

. . .<br />

= (C · p(n)) 2<br />

Damit ist die Behauptung bewiesen.<br />

Nun folgt unmittelbar NP ⊆ NPSPACE = PSPACE ⊆ REC . Für<br />

die Oberklasse PSPACE von NP läßt sich nun in analoger Weise der<br />

Begriff der Vollständigkeit formulieren.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 207 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Definition<br />

Die Syntax quantifizierter Boole’scher Formeln (qBF) hat die BNF<br />

ϕ ::= x | true | false | ¬ϕ | ϕ ∧ ϕ | ϕ ∨ ϕ | ϕ → ϕ | ∀x.ϕ | ∃x.ϕ<br />

Die Menge der freien Variablen einer qBF ϕ ist gegeben durch<br />

FV (true) = FV (false) := ∅<br />

FV (x) := {x}<br />

FV (¬ϕ) := FV (ϕ)<br />

FV (ϕ ∧ ψ) = FV (ϕ ∨ ψ) = FV (ϕ → ψ) := FV (ϕ) ∪ FV (ψ)<br />

FV (∀x.ϕ) = FV (∃x.ϕ) := FV (ϕ) − {x}<br />

Nicht freie Variablen sind durch einen Quantor gebunden.<br />

ϕ heißt geschlossen, falls jede auftretenden Variable gebunden ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 208 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Schreibweise: ϕ(x 0 , x 1 , . . . , x n−1 ) bedeutet FV (ϕ)⊆{ x i : i < n} .<br />

Fakt<br />

Jede geschlossene qBF ϕ kann in sogenannter Prenex-Normalform (PNF)<br />

dargestellt werden<br />

ϕ = Q 0 x 0 . Q 1 x 1 . . . . Q n−1 x n−1 . ψ(x 0 , . . . , x n−1 )<br />

wobei ψ keine Quantoren enthält. Mit Hilfe von “Dummy-Variablen” ist<br />

es zudem möglich, alternierende Prenex-Normalform (aPNF) zu erreichen,<br />

bei der Existenz- und All-Quantor alternieren:<br />

ϕ = ∃x 0 . ∀x 1 . . . . Q m−1 x m−1 . ψ(x 0 , . . . , x m−1 )<br />

Beispiel<br />

Das E-Problem QuantifizierteBoolescheFormel (QBF) hat als<br />

Eingabe eine geschlossene quantifizierte Boolesche Formel ϕ . Zu<br />

entscheiden ist, ob ϕ wahr ist.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 209 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Satz<br />

QBF ∈ PSPACE .<br />

Beweis.<br />

Enthält ϕ = Q 0 x 0 . Q 1 x 1 . . . . Q n−1 x n−1 . ψ(x 0 , . . . , x n−1 ) keine Quantoren,<br />

gilt ϕ ∈ {true, false} . Sonst entfernt man Q 0 und bewertet<br />

A = Q 1 x 1 . . . . Q n−1 x n−1 . ψ(false, . . . , x n−1 )<br />

B = Q 1 x 1 . . . . Q n−1 x n−1 . ψ(true, . . . , x n−1 )<br />

Falls Q 0 = ∃ , bildet man A ∨ B , andernfalls A ∧ B .<br />

Die Laufzeit dieses rekursiven Verfahrens beträgt O(2 n ) , bei einer<br />

Rekursionstiefe von n (Anzahl der Quantoren). Da die Auswertung<br />

quantorenfreier Formeln logarithmischen Platz in der Anzahl der Variablen<br />

benötigt (HA), liegt der Platzbedarf in O(n + log n) = O(n) .<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 210 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Satz<br />

QBF ist PSPACE -hart und somit PSPACE -vollständig.<br />

Beweis (vergl. Sipser)<br />

Für L ∈ PSPACE ist L ⊲ QBF nachzuweisen.<br />

Betrachte eine dTM M <strong>für</strong> L mit polynomialer Raumkomplexität p . Wie<br />

aus dem Beweis des Cooke’schen Satzes bekannt, können Zustand,<br />

Bandinhalt und Kopfposition von M durch Boolesche Formeln in KNF<br />

beschrieben werden, also auch die Konfigurationen von M .<br />

Wir führen neue Variable c i <strong>für</strong> Konfigurationen ein und konstruieren<br />

daraus entsprechend der Idee im Beweis des Satzes von Savich eine qBF<br />

ϕ 〈c0 ,c 1 ,i〉 , die ausdruckt, daß c 1 von c 0 aus in höchstens 2 i Schritten<br />

erreicht werden kann. Zu prüfen bleibt <strong>für</strong> Eingaben w ∈ Σ n die Wahrheit<br />

von ϕ 〈cw ,c F ,C·p(n)〉 .<br />

Wie zuvor ist der Fall ϕ 〈c0 ,c 1 ,0〉<br />

trivial.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 211 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Beweis (Fortsetzung)<br />

Beim Übergang zu i > 0 sind wieder beliebige Zwischenkonfigurationen<br />

zu verwenden. Wir schrieben die Formel entsprechend um:<br />

ϕ 〈c0 ,c 1 ,i+1〉 = ∃m 0 . (ϕ 〈c0 ,m 0 ,i〉 ∧ ϕ 〈m0 ,c 1 ,i〉)<br />

Das Einfügen einzelner Zwischenkonfigurationen verdoppelt aber die Länge<br />

der Formeln, was zu exponentiellem Wachstum führt. Das läßt sich aber<br />

mit Hilfe universeller Quantifizierung verhindern:<br />

ϕ 〈c0 ,c 1 ,i+1〉 = ∃m 0 . ∀(c 2 , c 3 ) ∈ {(c 0 , m 0 ), (m 0 , c 1 )}. ϕ 〈c2 ,c 3 ,i〉<br />

Um die Größe von ϕ 〈cw ,c F ,C·p(n)〉 abzuschätzen, stellen wir fest, daß<br />

aufgrund der Rekursion die Formel um O(p(n)) wächst. Bei eine<br />

Rekursionstiefe von O(p(n)) ergibt sich also eine Formel der Größe<br />

O((p(n)) 2 ) , wie im Beweis des Satzes von Savich.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 212 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

QBF kann als Erweiterung von Sat aufgefaßt werden: eine KNF-Formel<br />

ϕ(x 0 , . . . , x t−1 ) ist genau dann erfüllbar, wenn folgende Formel wahr ist<br />

∃x 0 . ∃x 1 . . . . ∃x t−1 . ϕ<br />

qBF-Formeln in aPNF lassen sich auch spieltheoretisch interpretieren: zwei<br />

Spieler, Eloise und Abelard, wählen abwechsend Werte <strong>für</strong> die Variablen in<br />

ψ = ∃x 0 . ∀x 1 . . . . Q m−1 x m−1 . ϕ(x 0 , . . . , x m−1 )<br />

Eloise <strong>für</strong> die durch Existenzquantoren gebundenen Variablen, Abelard <strong>für</strong><br />

die übrigen. Eloise gewinnt, falls in der so bestimmten Belegung ϕ wahr<br />

ist, andernfalls gewinnt Abelard.<br />

Definition<br />

Die Sprache FormelSpiel besteht aus denjenigen geschlossenen Formeln<br />

in aPNF, <strong>für</strong> die Eloise eine Gewinnstrategie hat.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 213 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Man überzeugt sich leicht davon, daß FormelSpiel PSPACE -<br />

vollständig ist (HA).<br />

Nachdem sich PSPACE als “große” Komplexitätsklasse herausgestellt<br />

hat, die sogar NP umfaßt, fehlt hinsichtlich der Raumkomplexität noch<br />

eine “kleines” Gegenstück zu P . Aber um sub-lineare Raumkomplexität<br />

sinnvoll definieren zu können, ist bei der Definition von Raumkomplexität<br />

an sich die Rolle des Eingabebandes zu überdenken:<br />

Definition<br />

Eine 2-Band Turingmaschinen mit einerm read-only Eingabeband und<br />

einem normalen Arbeitsband hat Raumkomplexität f (n) , falls jede<br />

Eingabe der Länge n höchstens f (n) Raum auf dem Arbeitsband<br />

benötigt. Wenn es um die Berechnung von Funktionen geht, ist zusätzlich<br />

noch ein write-only Ausgabeband vorzusehen.<br />

Im Gegensatz zu endlichen Automaten und Kellerautomaten wird die<br />

Eingabe nicht notwendig als Strom verarbeitet, da auf dem Eingabeband<br />

Schritte in beiden Richtungen möglich sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 214 / 215


6. Komplexität von Algorithmen 6.12 Raumkomplexität<br />

Weitere interessante Raum-Komplexitätsklassen:<br />

Definition<br />

Die Klasse L ( NL ) besteht aus allen E-Problemen, die von einer<br />

(nicht)deterministischen Turingmaschine mit Raumkomplexität in<br />

O(log n) gelöst werden können.<br />

Beispiel<br />

Sowohl die Sprache der korrekt geklammerten Ausdrücke über {), (} als<br />

auch die die Sprache {w ∈ {a, b} ∗ : |w| a = |w| b } liegen in L : Man muß<br />

nur die Anzahl noch offener Klammern bzw. die Anzahlen von Symbolen a<br />

sowie b binär bestimmen und mit 0 bzw. miteinander vergleichen.<br />

Man kann zeigen, daß Erreichbarkeit in gerichteten Graphen und<br />

2-Sat in NL liegen und sogar NL-vollständig sind, woraus<br />

L ⊆ NL ⊆ P folgt. Es ist offen, ob diese Inklusionen echt sind.<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 215 / 215

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!