Handout - Was möchten sie tun?

Werbung
Theoretische Informatik 2
Jürgen Koslowski
Institut für Theoretische Informatik
Technische Universität Braunschweig
SS 2015
http://www.iti.cs.tu-bs.de/˜koslowj/Theo2
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
1 / 236
Übersicht: Überblick I
4
Hintergrund und Motivation
Ziele der Vorlesungen “Theoretische Informatik 2”
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
2 / 236
Übersicht: Turingmaschinen I
5
Turingmaschinen
Vorüberlegung
Turingmaschinen formal
Darstellung von Turingmaschinen
Entscheidbare Sprachen/Probleme
Die Chomsky-Hierarchie formaler Sprachen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Turing-berechenbare partielle Funktionen
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
3 / 236
Übersicht: Die Church-Turing These I
6
Church-Turing-These
Alternativen zu Turingmaschinen
Registermaschinen (RAM)
Befehlssatz einer RAM
Simulation einer dTM durch eine RAM
RAM-Berechenbarkeit
6.2 Rekursive Funktionen
Eigenschaften von PR
Der unbeschränkte µ - Operator
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
4 / 236
Übersicht: Unentscheidbare Probleme I
7
Unentscheidbare Probleme
7.0 Problemstellung
7.1 Universelle Turingmaschine
7.2 Das Halteproblem
7.3 Weitere unentscheidbare Probleme
7.3.0 Das Akzeptanzproblem
7.3.1 Akzeptanz des leeren Worts
7.3.2 Terminierung eines Algorithmus
7.4 Satz von Rice
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
5 / 236
Übersicht: Komplexitätstheorie I
8
Komplexität von Algorithmen
8.0 Übersicht
8.0.1 Wiederholung: Groß-O-Notation
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
8.1.1 Weitere Vorüberlegungen
8.2 Die Komplexitätsklassen P und NP
8.3 Die Klasse FP von Berechnungsproblemen
8.4 FP-Reduzierbarkeit
8.4.1 2 - Sat ∈ P
8.5 Robustheit der Klassen P und NP
8.6 Einige Probleme aus NP
8.7 NP-Vollständigkeit und Cooke’scher Satz
8.8 Weitere NP-vollständige Probleme
8.9 Die Klasse coNP
8.10 Komplexität von Optimierungsproblemen
8.11 Approximation von Optimierungsproblemen
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
6 / 236
Übersicht: Komplexitätstheorie II
8.12 Raumkomplexität
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
7 / 236
Hintergrund und Motivation
Ziele der Vorlesungen “Theoretische Informatik 2”
Kapitel 4
Überblick
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
8 / 236
Hintergrund und Motivation
Ziele der Vorlesungen “Theoretische Informatik 2”
In Fortsetzung der VL “Theoretische Informatik 1” führen wir zunächst
Turingmaschinen als neues Maschinenmodell ein; ihre Fähigkeiten gehen
über die der Kellerautomaten hinaus (obwohl sie historisch älter sind). Sie
werden sich als das mächtigste (klassische) Maschinenmodell erweisen,
ebenso mächtig wie alle heute gebräuchlichen Computer. (Um weitergehende Fähigkeiten zu realisieren, braucht man einen “Quantencomputer”.)
Die Klasse der von TM’n akzeptierten semi-entscheidbaren Sprachen hat die
kanonische Unterklasse der entscheidbaren Sprachen; diese werden von
TM’n akzeptiert, die bei jeder Eingabe halten. Das wirft die Frage nach der
Entscheidbarkeit bzw. Nichtentscheidbarkeit formaler Sprachen auf. Hier
tritt schon das Verfahren der Reduktion von Problemen bzw. Sprachen auf,
das auch in der Komplexitätstheorie gebraucht wird.
TM’n lassen sich auch zur Lösung von Berechnungsproblemen (kurz
B-Problemen) verwenden. Das liefert eine Theorie der “Turingberechenbaren (partiellen) Funktionen” der Form Nn f N, n ∈ N .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
9 / 236
Hintergrund und Motivation
Ziele der Vorlesungen “Theoretische Informatik 2”
Alternativ kann man ausgehend von einfachen Grundfunktionen Nn
N
mittels simpler Konstruktionsverfahren neue partielle Funktionen Nn
N
generieren. Das liefert erst die Klasse der primitiv rekursiven Funktionen,
und anschließend die Klasse der µ-rekursiven partiellen Funktionen.
Letztere stimmt mit der obigen Klasse der Turing-brechenbaren partiellen
Funktionen überein.
In der Komplexitätstheorie geht es darum, wie effizient E-Probleme gelöst
werden können. Entscheidendes Kriterium ist, ob mit Hilfe von dTM’n bzw.
nTM’n Laufzeiten realisiert werden können, die polynomial in der Größe der
Eingabe sind. Das liefert die Komplexitätsklassen P und NP .
B-Probleme, deren zugrundeliegendes E-Problem nicht effizient lösbar ist,
sind selbst nicht effizient lösbar. In solchen Fällen kann man nur versuchen,
möglichst gute Lösungen zu approximieren. Das führt zum Begriff des
Optimierungsproblems. Diese lassen sich nach Approximationsgüte
klassifizieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
10 / 236
Turingmaschinen
Kapitel 5
Turingmaschinen
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
11 / 236
Turingmaschinen
Vorüberlegung
Vorüberlegung
Idee: der Speicher eines Kellerautomaten, der nur eingeschränkt zugängliche
Keller, wird durch ein frei zugängliches, beidseitig potentiell unendliches
Turingband aus sog. Feldern ersetzt. Die darin enthaltenen einzelnen
Symbole aus einem Bandalphabet werden von einem Schreib- Lesekopf
gescannt und ggf. überschrieben; dieser kann sich dann auf ein benachbartes
Feld bewegen:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
12 / 236
Turingmaschinen
Vorüberlegung
Der Schreib-Lesekopf kann verschiedene Zustände einnehmen; dabei
werden wie gewöhnlich Anfangs- und Endzustände unterschieden.
In jedem Schritt darf der Schreib-Lesekopf den Zustand ändern sowie
ein Symbol schreiben und/oder (je nach Vereinbarung) sich um
maximal ein Feld zur Seite bewegen.
Zu jedem Zeitpunkt darf das Band nur endlich viele relevante Symbole
enthalten; alle übrigen Felder müssen “leer” sein. Um dies anzuzeigen,
wird ein spezielles Bandsymbol # eingeführt.
Beim Berechnungsstart soll die Eingabe w ∈ Σ∗ zusammenhängend
auf dem Band stehen! Dies ist ein konzeptioneller Unterschied zu
Kellerautomaten und erst recht zu endlichen Automaten, bei denen die
Eingabe immer extern vorlag und in nicht näher spezifizierter Weise
von links nach rechts gelesen wurde (Stichwort: Online Algorithmus ).
Bei Wikipedia findet man folgende Visualisierungen von Turingmaschinen.
In der ZEIT findet sich auch eine nette Beschreibung . Eine Suchanfrage nach
“Turing Maschine” und “LEGO” liefert ebenfalls interessante Ergebnisse.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
13 / 236
Turingmaschinen
Vorüberlegung
Turingmaschinen formal
Wir werden verschiedene Varianten von Turingmaschinen kennenlernen, die
sich letztendlich alle gegenseitig simulieren können. Zunächst beginnen wir
mit zwei Basismodellen, die sich hinsichtlich ihrer Geschwindigkeit unterscheiden: in der langsamen Variante kann der Kopf pro Schritt nur entweder
schreiben oder sich bewegen, während in der schnellen Variante beides in
einem Schritt erfolgen kann. Ansonsten sind beide Varianten äquivalent.
Weiterhin kann man die Form des Bandes ändern (einseitig unendlich statt
beidseitig unendlich), ein mehrspuriges Band verwenden, oder gar die
Anzahl der Bänder und Köpfe simultan vergrößern. Insbesondere TMs mit
mehreren Bändern und Köpfen erlauben eine recht einfachere Umsetzung
konkreter Algorithmen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
14 / 236
Turingmaschinen
Vorüberlegung
Definition (langsame/schnelle TM)
Eine Turing-Maschine (TM) M = hQ, B, Σ, δ, q0 , qF i über dem Alphabet
Σ besteht aus
. einer Menge Q von Zuständen (des SL-Kopfes) mit ausgezeichneten
Anfangs- und Endzuständen q0 , qF ∈ Q ;
. einem endlichen Bandalphabet B ⊇ Σ + {#} mit Blankzeichen # ;
. einer endlichen Relation
(
(B + {L, R})
Q ×B δ Q ×
B × {N, R, L}
für eine langsame TM
für eine schnelle TM
M heißt deterministisch (dTM), falls δ eine partielle Funktion ist.
In älteren Skripten tragen solche TMs den Zusatz mit erweitertem
”
Bandalphabet“, da man ursprünglich die Bedingung B = Σ + {#} verlangt
hatte. Technisch mag das ausreichen, in der Praxis ist es aber ein sehr
ungeschickte Forderung, auf der wir hier nicht bestehen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
15 / 236
Turingmaschinen
Vorüberlegung
Interpretation von δ
Abhängig vom aktuellen Zustand und vom aktuellen Bandsymbol kann sich
der Zustand ändern, und
im langsamen Fall Q × B δ Q × (B + {L, R}) kann entweder das
Bandsymbol überschrieben, oder der Kopf eine Position zur Seite
bewegt werden;
im schnellen Fall Q × B δ Q × B × {N, L, R} können das Überschreiben und die Bewegung im selben Schritt stattfinden; N
ermöglicht das Verharren des Kopfes auf demselben Feld.
Offenbar kann man jeden Schritt einer schnellen Maschine mit höchstens
zwei Schritten einer langsamen Maschine simulieren. Umgekehrt ist die
Simulation noch einfacher (vergl. HA).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
16 / 236
Turingmaschinen
Vorüberlegung
Bemerkungen
. Unsere TMs sind á priori nichtdeterministisch, haben aber nur je einen
Anfangs- und Endzustand.
Der Übergang von TMs mit einer Menge I ⊆ Q von Anfangszuständen zu solchen mit einem Anfangsstand q0 ist simpel, erzeugt
aber Nichtdeterminismus. Da wir später die Äquivalenz deterministischer und nichtdeterministischer TMs zeigen, können wir uns gleich auf
einzelne Anfangszustände beschränken.
Eine Menge an Endzuständen böte auch keinen echten Vorteil.
. Neben Σ muß das Bandalphabet nur # enthalten. Weitere Hilfssymbole, wie z.B. Randbegrenzer, Trennsymbole oder spezielle
Löschsymbole sind optional, aber nützlich.
Ohne solche auszukommen (älteres Skript) erfordert einemTaschenspielertrick (HA), daher erlauben wir hier solche Symbole ohne
Einschränkung.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
17 / 236
Turingmaschinen
Vorüberlegung
Vergleich mit Kellerautomaten
. Bei EAs und KAs sorgt die endliche Zahl der Übergänge dafür, dass
nur endlich viele Symbole des Alphabets eine Rolle spielen; für
klassische TMs ist Σ als Teilmenge von B automatisch endlich.
. Um klassische 1-Band TMs konzeptionell kompatibel mit KAs zu
machen, benötigen sie einen Präprozessor mit einem neuen Anfangszustand qr und Übergängen hqr , #i a hqr , ha, Rii, a ∈ Σ , sowie
hqr , #i ε hq0 , h#, Lii (im schnellen Fall). Determinismus bleibt nur
dann erhalten, wenn der spontane Übergang von qr nach q0 erst
nach Abarbeitung der Eingabe erfolgen kann; und das erfordert den
Supply-driven Modus! So kommt die gesamte Eingabe von links nach
rechts auf das Band, bevor in q0 die eigentliche Berechung aus
spontanen Übergängen am rechten Rand beginnt.
Die Endlichkeit von B und Σ wäre nun unerheblich, solange nur die
Anzahl der Übergänge endlich ist. Die Forderung Σ ⊆ B − {#}
könnte evtl. auch entfallen. Dies wird hier aber nicht weiterverfolgt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
18 / 236
Turingmaschinen
Vorüberlegung
Konfigurationen
Eine TM-Konfiguration soll den aktuellen Zustand, den nicht- trivialen
Bandinhalt und die Position des Kopfes bestimmen. Die Konvention,
Eingaben zunächst zu internalisieren, erübrigt die Buchführung über den
noch zu bearbeitenden Teil der Eingabe.
Definition (vorläufig)
Eine Konfiguration einer TM versteht man ein Paar hq, ωi ∈ Q × B+ ,
wobei genau ein Symbol des nichttrivialen Bandinhalts ω durch
Unterstreichung markiert ist, was die Kopfposition festlegt.
ω soll den Bereich des Bandes minimal überdecken, der die Kopfposition
und alle von # verschiedenen Symbole umfaßt, darf also keine führenden
oder abschließenden Blankzeichen # haben, sofern es sich nicht um den
Inhalt der Kopfposition handelt. Genauer:
ω ∈ ((B − {#}) × B∗ + {ε}) × B × (B∗ × (B − {#}) + {ε}))
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
19 / 236
Turingmaschinen
Vorüberlegung
Definition (Fortsetzung)
Konfigurationen der Form hq0 , s0 . . . sn−2 sn−1 i mit n > 0 bzw. hq0 , #i
heißen Initialkonfigurationen. Ist für hq, ωl sωr i die Menge hq, siδ leer,
sprechen wir von einer Haltekonfiguration. Im Fall von hq, siδ 6= ∅ können
sich bei einer Folgekonfiguration ( ` ) Zustand, Inhalt des aktuellen Feldes
und neue Kopfposition gemäß den Elementen von hq, siδ ändern.
Unter einer Berechnung mit Eingabe w ∈ Σ∗ versteht man eine endliche
oder unendliche Konfigurationenfolge Ki ` Ki+1 , wobei K0 eine
Initialkonfiguration mit Eingabe w , und im endlichen Fall die letzte
Konfiguration eine Haltekonfiguration ist.
Eine Berechnung akzeptiert ihre Eingabe genau dann, wenn sie in einer
Haltekonfiguration mit Zustand qF endet.
Die spezielle Form der Initialkonfiguration resultiert aus einem Linksschritt
nach Übertragung der Eingabe auf des Band von links nach rechts.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
20 / 236
Turingmaschinen
Vorüberlegung
Darstellung von Turingmaschinen
Wir entwickeln die graphische Darstellung von Kellerautomaten fort. Falls
b ∈ B so schreiben wir
q
b||ϕ
p
anstelle von
hhq, bi, hp, ϕii ∈ δ
wobei ϕ ∈ B + {L, R} oder ϕ ∈ B × {N, L, R} gilt. Der (äußere) Anfangsund Endzustand wird markiert wie zuvor.
Die Einschränkungen bzgl. der Komponierbarkeit solcher Übergänge bei
Kellerautomaten gilt sinngemäß auch für Turingmaschinen.
Satz
Jede Sprache, die von einer langsamen TM akzeptiert wird, wird auch von
einer schnellen TM akzeptiert, und umgekehrt.
Beweis.
H.A.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
21 / 236
Turingmaschinen
Vorüberlegung
Beispiel ( L = { an b n c n : n ∈ N } mittels schneller TM)
Setze B = {a, b, c, B, #} , wobei B dazu dient anzuzeigen, dass b bearbeitet wurde. Start mit qc am rechten Rand, auf # bei leerer Eingabe.
Idee: Pro Durchlauf vom rechten zum linken Rand das erste c von rechts
löschen, das erste b von rechts mit B überschreiben und das letzte a von
rechts löschen; dann erfolgt ein entsprechender Durchlauf vom linken zum
rechten Rand. Akzeptanz, wenn B n übrigbleibt. Beachte die Symmetrie!
a||ha, Li, B||hB, Li, b||hb, Li
qa1
a||h#, Ri
B||hB, Ri
qa2
#||h#, Ri
#||h#, Ni
q→b
qb←
B||hB, Li, c||hc, Li
c||h#, Li
qF
qc1
q→
b||hB, Ri
Theoretische Informatik 2
B||hB, Li
c||h#, Li
#||h#, Ni
#||h#, Li
a||h#, Ri
a||ha, Ri, B||hB, Ri
Jürgen Koslowski (TU-BS)
b||hB, Li
q←
qc2
b||hb, Ri, B||hB, Ri, c||hc, Ri
SS 2015
22 / 236
Turingmaschinen
Vorüberlegung
Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM)
Die obige Maschine kann mechanisch(!) durch eine langsame Maschine
simuliert werden (vergl. HA), was an 6 Stellen je einen weiteren Zustand
erfordert (farbig markiert):
a, B, b||L
qa1
qb←
qF
q→b
qc1
#||L
q→
b||hB, Ri
B||L
c||h#, Li
#||#
a||h#, Ri
a, B||R
B, c||L
c||h#, Li
#||#
qa2
b||hB, Li
#||R
a||h#, Ri
B||R
q←
qc2
b, B, c||R
In den blau markierten Fällen läßt sich jeweils der Hilfszustand mit dem
Zielzustand verschmelzen, in den rot markierten Fällen ist das nicht möglich.
Das führt zu umseitiger TM mit zwei zusätzlichen Zuständen:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
23 / 236
Turingmaschinen
Vorüberlegung
Beispiel ( L = { an b n c n : n ∈ N } mittels langsamer TM, Fortsetzung)
#, B, c||L
a, B, b||L
qa0
#||R
q←
b||B
qb←
c||#
a||#
qa1
#||R
B||R
qF
#||#
qa2
B||L
qc0
#||#
#||L
qc1
a||#
c||#
q→b
#, a, B||R
q→
b||B
#||L
qc2
b, B, c||R
Eine solche langsame TM direkt zu entwerfen, wird i.A. schwieriger sein, als
den Umweg über die schnelle TM zu gehen. Noch aufwändiger wird die
Konstruktion, wenn das Bandalphabet auf Σ + {#} beschränkt ist.
In diesem Fall wäre auf das Löschsymbol B zu verzichten (siehe HA).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
24 / 236
Turingmaschinen
Vorüberlegung
Definition
Sprachen, die von einer TM akzeptiert werden, heißen semi-entscheidbar
Andere Varianten von TMs sind gleich mächtig zu den bisherigen TMs:
Definition
Eine Mehr-Spur Turingmaschine mit Bandalphabet B ⊇ Σ + {#} entspricht einer 1-Band TM mit Bandalphabet Form B0 := Bn . Als Blanksymbol dieser 1-Band Maschine dient das n -Tupel h#, . . . , #i .
Zur Interpretation von Wörtern in Σ∗ als Eingaben für die Mehr-Spur
Maschine dient die Einbettung B h Bn , die alle Komponenten mit
positivem Index auf # setzt; d.h., Eingaben aus Σ∗ stehen auf Spur 0.
Der Kopf ließt/schreibt immer in allen Spuren gleichzeitig, und die
Bewegung erfolgt auch in allen Spuren synchron in derselben Richtung.
Satz
Von Mehr-Spur TMs akzeptierte Sprachen sind semi-entscheidbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
25 / 236
Turingmaschinen
Vorüberlegung
Beweis.
Das Alphabet Σ0 := Σ × {#}n−1 für die 1-Band Interpretation der
Maschine ist natürlich zu Σ isomorph (verwende h ). Die Einschränkung
auf Σ-Eingaben in Spur 0 läßt sich durch einen Präprozessor realisieren.
Definition
Für eine n -Band TM M = hQ, B, n, Σ, δ, q0 , qF i hat δ die Form
Q × Bn
δ
Q ×(B+{L, R})n
bzw.
Q × Bn
δ
Q ×(B×{L, R, N})n
Der Konfigurationsbegriff ist entsprechend zu erweitern. Berechnungen
starten mit der Eingabe auf Band 0 . Die graphische Darstellung verwendet
Label der Form β||A0 ; A1 ; . . . ; An−1 mit β ∈ Bn und n Aktionen Ai .
Wesentlich ist, dass die n Köpfe unabhängig auf den n Bändern agieren
können. Hier zeigt sich der Nutzen von N bei schnellen Maschinen!
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
26 / 236
Turingmaschinen
Vorüberlegung
Satz
Von n -Band TMs akzeptierte Sprachen sind semi-entscheidbar.
Beweis (Idee)
Simulation durch 2n -Spur TM, bei deren geraden Spuren den Bändern
entsprechen, und auf deren ungeraden Spuren über die jeweiligen Kopfpositionen buchgeführt wird, durch Markierungen in der relevanten Spalte.
Weiterhin ist es möglich, das (potentiell beideitig unendliche) Turingband
durch einen 2- oder höherdimensionalen Speicher zu ersetzen, der ebenfalls
in Zellen aufgeteilt ist. Entsprechend wäre dann auch die Beweglichkeit des
Kopfes zu erhöhen, im 2-dimensionalen Fall nicht nur nach links bzw. rechts,
sondern auch nach unten bzw. oben.
Der Beweis, dass auch diese Verallgemeinerung die Leistungsfähigkeit des
Maschinenmodells nicht vergrößert, ist den Lesern überlassen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
27 / 236
Turingmaschinen
Vorüberlegung
Beispiel
Die Sprache L = { w ∈ {0, 1}∗ : |w |0 = |w |21 } ist semi-entscheidbar:
Idee: Wir verwenden eine 3-Band dTM, bei der die Nullen und Einsen der
Eingabe auf B0 zunächst auf die Bänder B1 bzw. B2 verschoben werden.
Dort finden alle weiteren Berechnungen statt. Wegen
(n − 1)2 = n2 − 2n + 1 = n2 − 2(n − 1) − 1
können wir dann ggf. in mehreren Durchläufen auf diesen Bändern zunächst
je eine Null und eine Eins, und dann für jede verbliebene Eins weitere zwei
Nullen löschen. Dabei werden die Einsen auf B2 in beiden Richtungen, die
Nullen auf B1 aber nur in einer Richtung durchlaufen. Gelingt die Löschung
aller Symbole, wird die Eingabe akzeptiert.
Bei der umseitigen Realisierung sind Aktionen, die weder Kopfposition noch
Bandinhalt verändern, durch “ − ” abgekürzt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
28 / 236
Turingmaschinen
Vorüberlegung
Beispiel (Fortsetzung)
start
q0
h0, #, #i||h#, Li; h0, Li; h#, Ni
h1, #, #i||h#, Li; h#, Ni; h1, Li
h#, #, #i||−, h#, Ri; h#, Ri
h#, 0, 1i||−, h#, Ri; h1, Ni
h#, 0, 1i||−, h#, Ri; h1, Ri
q3
i||−
q1
,−
,−
h#, 0, #i||−, h#, Ri; h#, Ri
h#, #, #i||−, −, −
qF
h#
,
h#, #, #i||−, −, −
h#, 0, #i||−, h#, Ri; h#, Li
q4
#,
#i
||−
,−
,−
h#, 0, 1i||−, h#, Ri; h#, Li
q6
h#, 0, 1i||−, h#, Ri; h1, Ni
h#
,#
,#
h#, 0, 1i||−, h#, Ri; h1, Li
h#, 0, 1i||−, h#, Ri; h#, Ri
q2
q5
In Zukunft werden wir nicht alle TMs so detailliert beschreiben können,
sondern uns meist auf informelle Spezifikationen beschränken.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
29 / 236
Turingmaschinen
Vorüberlegung
Satz
Jede semi-entscheidbare Sprache wird von einer dTM akzeptiert.
Beweis
Betrachte eine 1-Band TM M = hQ, B, Σ, δ, q0 , qF i mit L(M) = L . Für
jedes Paar hq, bi ∈ Q × B bezeichne ρhq, bi die Anzahl der verfügbaren
Übergänge; diese werden von 0 bis ρhq, bi − 1 durchnummeriert. Setze
r := max{ ρhq, bi : hq, bi ∈ Q × B }
und Zr := { n ∈ N : n < r }
Falls r > 1 ist M nicht deterministisch und wir konstruieren eine
deterministische 4-Band Maschine M0 mit L(M0 ) = L :
B0 enthält die Eingabe w ∈ Σ∗ ;
auf B1 werden systematisch die Zahlen k ∈ N erzeugt (unär);
auf B2 werden systematisch die k -Tupel ϕ ∈ (Zr )k erzeugt;
Band B3 dient zur Simulation des durch ϕ spezifizierten
Anfangsstücks einer M-Berechung der Länge ≤ k mit Eingabe w .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
30 / 236
Turingmaschinen
Vorüberlegung
Beweis (Fortsetzung)
Genauer: die Initialkonfiguration mit Eingabe w generiert einen Graphen
von Folgekonfigurationen, bei denen jeder Knoten maximal r Nachfolger
hat. Die k -Tupel ϕ spezifizieren darin potentielle Wege der Länge k :
. sofern Schritt i von hq, . . . b . . .i ∈ Q × B∗ ausgeht, wird Übergang
Nummer ϕi mod ρhq, bi der verfügbaren Übergänge ausgeführt,
sofern ρ(q, b) 6= 0 ; sonst ist eine Haltekonfiguration erreicht.
Per Zustand wird darüber buchgeführt, ob
ein Weg eine akzeptierenden Haltekonfiguration erreicht, dann wird w
von M0 akzeptiert; andernfalls wird ϕ auf B2 und ggf. k auf B1
aktualisiert und fortgefahren;
alle potentiellen Wege der Länge k in nicht akzeptierenden
Haltekonfigurationen enden, dann hält M0 ohne zu akzeptieren;
andernfalls wird k auf B1 erhöht und fortgefahren.
Beachte: Falls M immer hält, hat auch M0 diese Eigenschaft.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
31 / 236
Turingmaschinen
Entscheidbare Sprachen/Probleme
Entscheidbare Sprachen/Probleme
Die Terminologie “semi-entscheidbar” deutet die Existenz “entscheidbarer”
Sprachen an. Dabei soll das Wortproblem entschieden werden, ob die
Eingabe w ∈ Σ∗ zur Sprache L ⊆ Σ∗ gehört, oder nicht.
Definition
Eine Sprache heißt entscheidbar, wenn sie von einer TM akzeptiert wird, die
immer hält. (Man kann sich auf dTMs beschränken.)
Entscheidbare Sprachen sind semi-entscheidbar, aber die umgekehrte
Inklusion gilt nicht (Beispiel später).
Alternativ heißen semi-entscheidbare/entscheidbare Sprachen in der
Literatur auch “rekursiv aufzählbar”/“rekursiv”. Hintergrund: rekursiv
aufzählbare Sprachen können von einer dTM “aufgelistet” werden, wobei
Wiederholungen erlaubt sind.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
32 / 236
Turingmaschinen
Entscheidbare Sprachen/Probleme
Definition
Die von einer dTM T aufgezählte Sprache G(T) besteht aus den Wörtern
w ∈ Σ∗ , die in T-Konfigurationen der Form hqF , ωl bw #ωr ; . . .i mit
b ∈ B , ωl , ωr ∈ B∗ vorkommen, wenn T von hq0 , #; . . . ; #i aus startet.
Satz
Jede Sprache der Form G(T) ist semi-entscheidbar.
Beweis.
M habe ein Band mehr als die n -Band Maschine T , verwendet Bn für die
Eingabe und simuliert T auf den ersten n Bändern. Erreicht T eine
Konfiguration mit Zustand qF , wird das Σ-Wort rechts des Kopfes auf B0
mit der M-Eingabe auf Bn verglichen.
Satz
Jede semi-entscheidbare Sprache ist von der Form G(T) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
33 / 236
Turingmaschinen
Entscheidbare Sprachen/Probleme
Beweis.
Ist L ⊆ Σ∗ semi-entscheidbar, wählen wir eine 1-Band dTM M mit
L = L(M) . Die Aufzählung von L leistet eine 4-Band dTM T :
B0 ist leer und dient zur Aufzählung von L (s.u.);
auf B1 werden aufsteigend die Zahlen k ∈ N erzeugt (unär);
auf B2 werden systematisch die Wörter der Länge ≤ k erzeugt;
auf B3 werden bis zu k Schritte der M-Berechnung des Worts w
auf B2 simuliert.
− Im Fall der Akzeptanz wird w nach B0 kopiert, der Kopf links davon
positioniert und der Zustand qF angenommen. Anschließend wird B0
gelöscht.
− Danach wird das nächste Wort auf B2 erzeugt.
− Nach Bearbeitung aller Wörter der Länge ≤ k wird k auf B1 erhöht.
Per Zustand kann darüber buchgeführt werden, ob alle Wörter der Länge
≤ k zu nicht akzeptierenden Haltekonfigurationen führen. Weil M
deterministisch ist, muß L(M) dann endlich sein und T kann halten.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
34 / 236
Turingmaschinen
Entscheidbare Sprachen/Probleme
Satz
Eine Sprache L ⊆ Σ∗ ist genau dann entscheidbar, wenn L und ihr
Komplement L̄ := Σ∗ − L semi-entscheidbar sind.
Beweis.
Ist L entscheidbar, so existiert eine TM M mit L(M) = L , die immer
hält, also ist L semi-entscheidbar. Mit obiger Konstruktion erhalten wir
eine dTM M0 mit L = L(M0 ) , die immer hält. Ein neuer Endzustand q∗
und neue Übergänge hq, bi 7→ hq∗ , bi bzw. hq∗ , hb, Nii falls q 6= qF und
0
0
hq, biδ 0 = ∅ , liefern dann eine dTM M̄ mit L(M̄ ) = L̄ .
Umgekehrt lassen wir dTMs M und M̄ mit L(M) = L und L(M̄) = L̄
mittels Interleaving dieselbe Eingabe bearbeiten. Die resultierende Maschine
K hält genau dann, wenn eine der Teilmaschinen hält, und sie möge genau
dann akzeptieren, wenn M hält und akzeptiert, oder wenn M̄ hält und
nicht akzeptiert. Dann hält K immer und erfüllt L(K) = L .
In beiden Fällen ist die Verwendung von dTMs wesentlich.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
35 / 236
Turingmaschinen
Die Chomsky-Hierarchie formaler Sprachen
Die Chomsky-Hierarchie formaler Sprachen
Nicht alle Sprachen sind semi-entscheidbar: im Vorgriff auf Kapitel 7 stellen
wir fest, dass jede TM M über Σ = {0, 1} sich durch ein Binärwort c(M)
codieren läßt. Damit ist die Menge der möglichen Turingmaschinen über
{0, 1} abzählbar (vergl. Folien für Theoretische Informatik 1, Mathematischer Anhang), also auch die Menge der semi-entscheidbaren Sprachen
über {0, 1} . (Die Einschränkung auf das Alphabet {0, 1} ist unerheblich.)
Andererseits ist die Potenzmenge P(Σ∗ ) überabzählbar. Die meisten
Sprachen über {0, 1} sind also nicht semi-entscheidbar. Konkret gilt dies
etwa für
Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈
/ L(M) }
Lcode besteht also aus den Binärcodes aller TMs, die ihr eigenes Codewort
nicht akzeptieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
36 / 236
Turingmaschinen
Die Chomsky-Hierarchie formaler Sprachen
Satz
Lcode ist nicht semi-entscheidbar.
Beweis.
Wenn eine TM M mit L(M) = Lcode existiert, erfüllt w = c(M) die
Bedingung w ∈ L(M) = Lcode gdw. w ∈
/ L(M) = Lcode , Widerspruch.
Die Trennung der entscheidbaren von den semi-entscheidbaren Sprachen
erfolgt in Kapitel 7 mit Hilfe der Sprache
Lhalt := { c(M)w : M TM, die bei Eingabe w hält }
die semi-entscheidbar aber nicht entscheidbar ist (Halteproblem).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
37 / 236
Turingmaschinen
Die Chomsky-Hierarchie formaler Sprachen
Satz
Jede kontextfreie Sprache ist entscheidbar.
Beweis.
Ein Kellerautomat kann durch eine 2-Band Turingmaschine simuliert
werden: der Kopf auf B0 fährt zum linken Rand der Eingabe und B1 dient
zur Simulierung des Kellers, der sich von der aktuellen Kopfposition nach
rechts erstrecken möge (vergl. HA). Damit ist jede kontextfreie Sprache
semi-entscheidbar.
Um die Entscheidbarkeit sicherzustellen, müssen wir mit einem Kellerautomaten beginnen, der immer hält. Dies ist sicher der Fall, wenn keine
spontanen Übergänge auftreten. Und letzteres kann garantiert werden, wenn
der Kellerautomat ausgehend von einer kontextfreien Grammatik in
Greibach Normalform konstruiert wird (vergl. Skript zu TheoInf 1).
Alternativ könnte man den CYK-Algorithmus per TM implementieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
38 / 236
Turingmaschinen
Die Chomsky-Hierarchie formaler Sprachen
Die betrachteten Klassen formaler Sprachen über Σ bilden eine echte
Hierarchie; wir geben Trenn-Beispiele zu den echt kleineren Klassen an:
Alle Sprachen, Lcode ;
die semi-entscheidbaren Sprachen, Lhalt , s.u.;
die entscheidbaren Sprachen, { an b n c n : n ∈ N } ;
die kontextfreien Sprachen, { w sp(w ) : w ∈ Σ∗ } ;
die deterministisch kontextfreien Sprachen; { an b n : n ∈ N } ;
die regulären Sprachen, {a2n : n ∈ N } ;
die endlichen Sprachen.
Nicht betrachtet wurde die Klasse der kontext-sensitiven Sprachen, echt
zwischen den Klassen der kontextfreien und der entscheidbaren Sprachen.
Man spricht in diesem Zusammenhang auch von der Chomsky-Hierarchie.
Sie wurde von Noam Chomsky Mitte der 1950’er Jahre entwickelt.
Allerdings lag der Schwerpunkt damals auf linguistischen Fragestellungen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
39 / 236
Turingmaschinen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Satz
Die Klasse der (semi-)entscheidbaren Sprachen ist abgeschlossen unter
endlicher Vereinigung und endlichem Durchschnitt;
Konkatenation und Iteration (Kleene Stern);
Spiegelung und Shuffle;
Residuierung bzgl. endlicher Sprachen.
homomorphen Bildern und Urbildern.
Darüberhinaus sind die entscheidbaren Sprachen unter Komplementbildung
abgeschlossen, die semi-entscheidbaren Sprachen aber nicht.
Beweis
Vorbemerkung: Bei s-e Sprachen erfordert die Simulation mehrerer dTMs
Interleaving. Diese Einschränkung entfällt bei der Verwendung von nTMs.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
40 / 236
Turingmaschinen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Beweis (Fortsetzung).
Zu endlicher Vereinigung, Shuffle und Residuierung vergl. HA.
Durchschnitte handhabt man wie Vereinigungen, nur die Akzeptanzbedingung ist insoweit anzupassen, als beide Maschinen akzeptieren müssen.
Für die Spiegelung verwendet man ein neues Band um die Eingabe zu
spiegeln, bevor die Maschine für die ursprüngliche Sprache simuliert wird.
Der Abschluß entscheidbarer Sprachen unter Komplementbildung folgt aus
ihrer Charakterisierung mittels semi-entscheidbarer Sprachen. In Kapitel 7
zeigen wir, dass das Komplement von Lhalt nicht semi-entscheidbar ist.
Im Falle der Konkatenation kann die Eingabe zufällig in zwei zusammenhängende Teile zerlegt werden, die dann als Eingabe für die zu simulierenden Maschinen dienen; dies liefert eine nTM.
Für die Iteration ist dagegen eine Zerlegung in endlich viele Teile
erforderlich, die alle als Eingaben für dieselbe Maschine zu testen sind:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
41 / 236
Turingmaschinen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Beweis (Fortsetzung).
Im Fall L(M) = L habe M0 für L∗ ein neues zweispuriges Eingabeband
Bn . Parallel zur nichtleeren Eingabe schreibt man ein mit 1 beginnendens
zufälliges Binärwort derselben Länge auf die zweite Spur. Dessen Einsen
markieren die Anfänge der Teilwörter der Zerlegung, die nun als Eingaben
von M zu testen sind, ob sie zu L gehören. Zudem ist ε zu akzeptieren.
Jeder Homomorphismus Σ∗ h Γ∗ ist durch seine Einschränkung auf
Σ ⊆ Σ∗ bestimmt, d.h. durch endlich viele Werte h(a) , a ∈ Σ .
Wird K ⊆ Γ∗ von einer n -Band Maschine N akzeptiert, so möge die
Maschine M für h−1 (K ) ein neues Band Bn für die Eingabe w haben.
Dann wird h(w ) auf B0 geschrieben, und N mit dieser Eingabe simuliert.
Falls L = L(M) ⊆ Σ∗ , ist die Eingabe w ∈ Γ∗ in h -Bilder der Buchstaben
aus Σ zu zerlegen, entweder nichtdeterministisch, oder systematisch. Mit
den resultierenen h -Urbildern von w ist dann M zu simulieren. Gehört
mindestens ein solches Urbild zu L , folgt w ∈ h[L] .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
42 / 236
Turingmaschinen
Abschlußeigenschaften (semi-)entscheidbarer Sprachen
Satz
(Semi-)entscheidbare Sprachen sind nicht unter abzählbar unendlichen
Vereinigungen abgeschlossen, entscheidbare Sprachen auch nicht unter
abzählbar unendlichen Durchschnitten und unter Residuierung mit
unendlichen Sprachen.
Beweis.
Die Sprachen Lcode bzw. Lhalt sind abzählbar unendliche Vereinigungen
regulärer Singleton-Sprachen.
Die Abgeschlossenheit der entscheidbaren Sprachen unter Komplementen
impliziert wegen der de Morgan’sche Regel die Aussage über Durchschnitte,
und folglich über Residuierungen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
43 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Turing-berechenbare partielle Funktionen
Wir wollen TMs nun auch zur Berechnung partieller Funktionen Σ∗ f
einsetzen. Dazu muß Σ, Γ ⊆ B − {#} gelten. Die Spezifikation eines
Finalzustands qF ist hier verzichtbar.
Γ∗
Zu vereinbaren bleibt, welcher Teil des Bandinhalts nach dem Halt der
Maschine als Funktionswert interpretiert werden soll. Wir wollen dafür das
längste zusammenhängende Wort aus Γ∗ verwenden, das links neben der
finalen Kopfposition auf einem designierten Band auftritt. Das Feld des
Kopfes gehört nicht dazu, aber nach einem Linksschritt könnte die Ausgabe
ggf. als Eingabe für eine weitere Maschine verwendet werden, sofern das
restliche Band leer ist.
Partielle Funktionen der Form (Σ∗ )n f (Γ∗ )k mit n > 1 oder k > 1
erfordern je genau ein Trennzeichen zwischen den Komponenten der Einbzw. Ausgabe. Auch wenn das Blankzeichen dafür verwendet werden kann,
wird dies nicht empfohlen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
44 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Beispiel ( f (n) = 2n : Wähle Σ = Γ = {|} = B − {#} .)
Idee: 2-Band Maschine; Eingabe zweimal von B0 auf B1 kopieren.
h|, #i||h|, Li; h|, Ri
start
q0
h|, #i||h#, Ri; h|, Ri
h|, #i||h#, Ni; h|, Ri
h#, #i||h#, Ri; h#, Ni
qF
oder geschickter
start
r0
r1
h#, #i||h#, Li; h|, Ri
Beim aktuellen Bandinhalt h#, #i in Zustand qF bzw. r0 hält die
jeweilige Maschine mit dem Ergebnis auf B1 und B0 leer.
Beispiel ( f (w ) = |w | : Wähle Γ = {|} disjunkt zu Σ .)
Idee: Eingabe mit Symbolen | überschreiben; rechten Rand suchen.
|||h|, Ri
a||h|, Li
start
Jürgen Koslowski (TU-BS)
q0
#||h#, Ri
qF
Theoretische Informatik 2
mit a ∈ Σ
SS 2015
45 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Beispiel ( f (n, m) = n + m : Wähle Σ = Γ = {|} , B = {|, @, #} .)
Idee: 2-Band Maschine; Eingabe auf B1 kopieren, dabei das Trennsymbol
@ überspringen.
h|, #i||h#, Li; h|, Ri
h|, #i||h#, Li; h|, Ri
start
q0
h@, #i||h#, Li; h#, Ni
qF
Idee: 1-Band Maschine; Trennsymbol @ mit erstem | von rechts
überschreiben
|||h|, Ri
|||h|, Li
start
q0
|||h#, Li
q1
@||h|, Ri
qF
@||h#, Ni
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
46 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Beispiel ( f (n, m) = n · m : Wähle Σ = Γ = {|} , B = {|, #} .)
Wir begnügen uns nun mit einer High-Level-Beschreibung:
Idee: 3-Band Maschine; das zweite Argument der Eingabe |n #|m auf B2
verschieben; für jedes Symbol | auf B2 das verbliebene Argument |n von
B0 nach B1 kopieren, von links nach rechts.
Bemerkung
Die Erfahrungen mit Turing Maschinen und anderen Versuchen aus der
ersten Hälfte des 20. Jahrhunderts, den Begriff der “durch einen
(terminierenden) Algorithmus berechenbaren Funktion” formal zu fassen,
führten zu der Vermutung, dass jede solche (totale) Funktion
Turing-berechenbar sein muß. Diese nicht beweisbare Vermutung ist
bekannt als Church-Turing These und wird in Kapitel 6 ausführlicher behandelt.
Wie üblich stellt sich jetzt die Frage nach Funktionen, die nicht
Turing-berechenbar sind.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
47 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Definition
Die sog. Busy Beaver Funktion N
β
N bildet n ∈ N ab auf
die größte Zahl β(n) nichtleerer Felder, die eine schnelle 1-Band
dTM über {|} , die über n Nicht-Haltezustände und einen
Haltezustand verfügt, ausgehend vom leeren Band auf diesem
hinterlassen kann, wenn sie hält.
Achtung: Nach dem Halt der Maschine dürfen zwischen den Strichen |
Lücken auftreten. Damit kann sich die größte unär codierte Zahl k , die
nach dem Halt auf dem Band steht, durchaus von β(n) unterscheiden.
Beispiel ( β(0) = 0 und β(1) = 1 )
#||h|, Ni
start
Jürgen Koslowski (TU-BS)
qF
bzw
start
q0
Theoretische Informatik 2
|||h|, Li
qF
SS 2015
48 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Beispiel ( β(2) = 4 )
hq0 , #i ` hq1 , | #i
` hq0 , | | i
#||h|, Ri
` hq1 , # | | i
start
q0
#||h|, Li
q1
|||h|, Ri
qF
` hq0 , # | | | i
` hq1 , | | | | i
` hqF , | | | | i
|||h|, Li
Bei Wikipedia findet man diverses Hintergrundmaterial zum Thema Busy Beaver
(dort heißt die Funktion Σ ), einschließlich einiger Schranken für die Werte
β(6) und β(10) . Weiterhin sei auf die Seite von Heiner Marxen verwiesen, der
zeitnah über aktuelle Busy Beaver Rekorde buchführt.
Es ist zu empfehlen, den Wert β(3) selbständig nachzurechnen, ohne obige
Quellen zu konsultieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
49 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Lemma
Die busy beaver Funktion wächst streng monoton, d.h., β(n) < β(n + 1)
für jedes n ∈ N .
Beweis.
Die dTM M mit Haltezustand qF möge β(n) realisieren. Füge einen
neuen Haltezustand qG hinzu und die Übergänge
|||h|, Li
qF
#||h|, Li
qG
Die neue Maschine M0 , mit qF als Nicht-Haltezustand, sucht links ein
freies Feld, schreibt | und hält. Also gilt β(n) < β(n) + 1 ≤ β(n + 1) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
50 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Satz
Für jede Turing-berechenbare totale Funktion N
rf , so dass für alle n ∈ N gilt f (n) ≤ β(n + rf ) .
f
N existiert eine Zahl
Beweis.
Die Funktion f möge von der dTM M mit rf Zuständen berechnet
werden. Für n ∈ N fügen wir n neue Zustände pi , i < n , zu M hinzu,
sowie folgende Übergänge:
start
p0
#||h|, Ri
p1
#||h|, Ri
...
#||h|, Ri
pn−1
#||h|, Ri
q0
Mn produziert ausgehend vom leeren Band n Striche und führt dann M
mit dieser Eingabe aus. Mit M hält auch Mn , und dann stehen
mindestens f (n) Striche auf dem Band, also folgt f (n) ≤ β(n + rf ) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
51 / 236
Turingmaschinen
Turing-berechenbare partielle Funktionen
Satz
β ist nicht Turing-berechenbar.
Beweis.
Wir nehmen an, β ist Turing-berechenbar vermöge der dTM M . Dann ist
auch N f N mit n 7→ β(2n) Turing-berechenbar (Verknüpfung mit der
Verdoppelungsmaschine aus einem früheren Beispiel). Für jedes n ∈ N gilt
nach obigem Satz β(2n) = f (n) ≤ β(n + rf ) . Aber n = rf + 1 liefert einen
Widerspruch zur stengen Monotonie von β .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
52 / 236
Church-Turing-These
Kapitel 6
Die Church-Turing These
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
53 / 236
Church-Turing-These
Alternativen zu Turingmaschinen
Alternativen zu Turingmaschinen
Laut Church-Turing-These (oder besser: Vermutung) stimmt die Klasse aller
intuitiv algorithmisch berechenbaren Funktionen mit der Klasse der
Turing-berechenbaren Funktionen überein.
Diese These kann prinzipiell nicht beweisen werden, wird aber dadurch
untermauert, dass andere natürliche Formalisierungen des AlgorithmusBegriffs dieselben Klasse berechenbarer Funktionen liefern. Etwa:
. Registermaschinen (RAMs), die heutigen Computern näher stehen als
klassische TMn (dieser Abschnitt wird sehr kurz gehalten);
. formale Grammatiken (eine Verallgemeinerung kfG’n, sind der hiesigen
Umsetzung der Bologna-Reform zum Opfer gefallen);
. die Theorie der sog. rekursiven Funktionen;
. der Lambda-Kalkül von Alonso Church, die Basis moderner
funktionaler Programmiersprachen (vergl. andere VL);
und diverse andere, siehe etwa Kapitel 18 im Buch von Rich.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
54 / 236
Church-Turing-These
Alternativen zu Turingmaschinen
Turing Maschinen lieferten seit Mitte der 1930’er Jahre einen konzeptionellen Zugang zum Algorithmusbegriff.
Hinsichtlich der in den 1940’er und 1950’er Jahren vereinzelt aufkommenden Rechenmaschinen/Computer waren TMs aber zu wenig an der
Hardware orientiert. Das RAM-Konzept kann zwischen abstrakten TMs und
konkreter Assembler-Programmierung verortet werden.
Umgekehrt sind Turing Maschinen im Hinblick auf den Begriff der Turingberechenbaren Funktion “zu konkret”, da Prozedur-orientiert. Sie vermitteln
wenig Intuition darüber, welche Funktionen eigentlich Turing-berechenbar
sind. Erfreulicherweise stimmt zumindest die Klasse der zahlentheoretischen
Turing-berechenbaren Funktionen mit auf völlig andere Weise eingeführten
Klasse der µ-rekursiven Funktionen überein. Hier stehen wirklich die
Funktionen im Mittelpunkt, und nicht ihre (relativ konkrete aber fehleranfällige) Implementierung.
Für die Korrektheitsbeweisen besser zugängliche funktionale Programmierung eignet sich der Lambda-Kalkül allerdings noch besser.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
55 / 236
Church-Turing-These
Registermaschinen (RAM)
Registermaschinen (RAM)
Anstelle eines (potentiell unendlichen) Turingbandes verfügt eine Random
Accesss Machine (RAM) oder Registermaschine über einen Datenspeicher
aus potentiell unendlich vielen Registern Ri , i ∈ N , die Daten hRi i in
Form von natürlichen Zahlen unbeschränkter Größe enthalten können (hier
muß getrickst werden). Das Register R0 heißt Akkumulator.
Anstatt eines Schreib-Lese-Kopfes arbeitet eine Steuereinheit taktweise die
(von den Daten separat gespeicherten) Programme zeilenweise ab, gemäß
eines Befehlszählers BZ , der auch als Register aufgefaßt werden kann (aber
ebenfalls nicht zum Datenspeicher gehört).
Die Ein- und Ausgabe erfolgt über separate Bänder, deren Felder natürliche
Zahlen enthalten können (Felder mit dem Inhalt 0 gelten als “leer”), und
auf denen ein Lese- bzw. Schreib-Kopf sich nur nach rechts(!) bewegen
kann (unmittelbar nach dem Lese- bzw. Schreibvorgang, im selben Takt).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
56 / 236
Church-Turing-These
Registermaschinen (RAM)
6.1.0 Befehlssatz einer RAM
Befehl
Wirkung
READ
hR0 i := hreadi, hBZ i := hBZ i + 1
der Lesekopf bewegt sich vom Feld mit Inhalt hreadi um ein Feld nach rechts
WRITE
hwritei := hR0 i, hBZ i := hBZ i + 1
der Schreibkopf schreibt hR0 i und bewegt sich ein Feld nach rechts
LOAD i/LOAD ∗i/LOAD !i
hR0 i := hRi i/hRhR i i/i und hBZ i := hBZ i + 1
i
STORE i/STORE ∗i
hRi i/hRhii i := hR0 i und hBZ i := hBZ i + 1
ADD i/ADD ∗i/ADD !i
hR0 i := hR0 i + hRi i/hRhR i i/i und hBZ i := hBZ i + 1
PRED
hR0 i := predhR0 i1 und hBZ i := hBZ i + 1
GOTO m
hBZ i := m
(
IF Ri = 0 GOTO m
hBZ i :=
i
m
hBZ i + 1
falls hRi i = 0
sonst
m
hBZ i + 1
Maschine hält
falls hRi i > 0
sonst
(
IF Ri > 0 GOTO m
STOP
hBZ i :=
Die ∗-Variante von LOAD , STORE bzw. ADD entspricht indirekter
Adressierung des Registers RhRi i , während die !-Variante von LOAD und
ADD Konstanten i ∈ N anstelle von Registerinhalten verwendet.
1
mit pred(n + 1) = n und pred 0 = 0
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
57 / 236
Church-Turing-These
Registermaschinen (RAM)
Beim Programmieren elementarer Aktionen als “Macros” ist zu beachten,
dass Sprung-Adressen ggf. anzupassen und der Akkumulator zu retten sind.
Beispiel
SUCC i / PRD i soll den Inhalt von Ri um 1 erhöhen/vermindern:
STORE α
LOAD !1
hRα i = hR0 i
hR0 i = 1
STORE α
hRα i = hR0 i
LOAD i
hR0 i = hRi i
ADD i
hR0 i := hRi i + 1
PRED hR0 i := predhRi i
STORE i
hRi i := hRi i + 1
STORE i
hRi i := predhRi i
LOAD α
hR0 i = hRα i
LOAD α
hR0 i = hRα i
Dabei ist Rα ein zum Zeitpunkt des Aufrufs freies Register, das jeweils
anzupassen ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
58 / 236
Church-Turing-These
Registermaschinen (RAM)
Beispiel ( SUB i subtrahiert hR0 i von hRi i , soweit möglich:)
0.
IF R0 = 0 GOTO 8
1.
PRD i
6.
PRED
7.
GOTO 0
8.
LOAD i
(braucht fünf Schritte)
Beispiel ( IF Ri = k GOTO m für k > 0 :)
0. STORE α
1. LOAD !k
2. SUB i
11. STORE i
(braucht neun Schritte)
(zerstört den Inhalt von Ri )
12. LOAD α
13. IF Ri = 0 GOTO m
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
59 / 236
Church-Turing-These
Registermaschinen (RAM)
Simulation einer TM durch eine RAM
Neben dem Akkumulator R0 sind die Register R1 für den Zustand und R2
für die Kopfposition reserviert, während R3+i für den Inhalt von Zelle i
zuständig ist.
Die Zustandsmenge wird durchnummeriert: Q = { qi : i < n } ; der
aktuelle Zustandsindex ist hR1 i
Das Bandalphabet B wird durchnummeriert: B = { si : i < m } mit
s0 = # . Der Index des Inhalts von Feld i findet sich in Register R3+i .
Die Bandzellen werden durchnummeriert, mit 0 für die Kopfposition in
der Initialkonfiguration, ungerade Zahlen nach rechts, gerade Zahlen
nach links. Die aktuelle Kopfposition ist hR2 i .
Die Übergangstabelle hqi , sj i 7→ hqr , At i wird programmiert.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
60 / 236
Church-Turing-These
Registermaschinen (RAM)
Die Simulation einer TM-Berechnung erfolgt in drei Schritten:
Zunächst wird die Eingabe a0 a1 . . . ak−1 in die Register R3 , R5 , . . . ,
R1+2k übertragen, durch wiederholte Anwendung von READ .
Nach Erreichen von # werden die Register R1 und R2 gemäß der
Initialkonfiguration initialisiert. Anschließend sind die den Übergängen
hqi , bj i 7→ hqr , at i mit bj ∈ B und at ∈ B + {L, R} entsprechenden
Programme auszuführen, solange Übergänge verfügbar sind.
Der Bandinhalt rechts der Kopfposition wird auf das Ausgabeband
übertragen, bis ein Blankzeichen auftritt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
61 / 236
Church-Turing-These
Registermaschinen (RAM)
6.1.2 Berechenbarkeit
Definition
Eine RAM berechnet eine (partielle) Funktion Nk f N, falls die RAM bei
genau den Eingaben aus dem Definitionsbereich D(f ) hält und dann der
einzige Wert auf dem Ausgabeband mit dem Funktionswert von f
übereinstimmt.
Nachdem die Simulierbarkeit von dTMs durch RAMs konzeptionell bereits
etabliert worden ist, gilt es nun, auch die umgekehrte Simulierarkeit zu
zeigen.
Satz
Jede RAM-berechenbare Funktion ist Turing-berechenbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
62 / 236
Church-Turing-These
Registermaschinen (RAM)
Beweis
Wir simulieren ein RAM-Programm für f mit Hilfe einer 6-Band TM mit
Bandalphabet {|, @, #} und Zustandsmenge der Form Q × A
(“zusätzliches Gedächtnis”), deren zweite Komponente zur Speicherung des
endlichen RAM-Programms dient.
B0 dient zur Eingabe mit @|x0 @|x1 @ . . . |xn−1 @ ;
B1 enthält die zunächst nichtleeren Register hRi i = n in der Form
@|i @|n @ ; aktuelle Angaben für Ri werden rechts angefügt (das erspart
das Verändern von Zahlen in der Mitte des Bandes); dann ist auch
n = 0 möglich;
B2 und B3 fungieren als Akkumulator bzw. Befehlszähler;
B4 ist ein Hilfsband und B5 dient der Ausgabe.
Zu Beginn sind alle Bänder außer B0 leer. Dann wird immer der Befehl
simuliert, dessen Zeilennummer auf B3 steht.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
63 / 236
Church-Turing-These
Registermaschinen (RAM)
Beweis (Fortsetzung)
Nun gilt es nur noch , die einzelnen RAM-Befehle zu simulieren. ...
Frau Viorica Sofronie-Stokkermans von der Universität Koblenz-Landau
verfolgt hinsichtlich Register-Maschinen einen geschickteren Ansatz:
Neben dem IF...GOTO-Konstrukt verwendet sie LOOP und WHILE
Schleifen, erstere mit vorgegebenener und lezterer mit potentiell
variabler Anzahl von Durchläufen.
Das induziert drei Klassen berechenbarer Funktionen, LOOP ,
WHILE und GOTO , wobei man jeweils noch den partiellen und den
totalen Fall unterscheiden kann.
Es stellt sich heraus, LOOP echt in den totalen WHILE-Funktionen
enthalten ist, während die Turing-berechenbaren Funktionen mit
WHILE und GOTO übereinstimmen; Slogan:
strukturierter Code ist genauso mächtig wie Spaghetti-Code
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
64 / 236
Church-Turing-These
6.2 Rekursive Funktionen
6.2 Rekursive Funktionen
Dieser alternative Ansatz zur Formalisierung intuitiv berechenbarer
Funktionen geht algebraisch vor. Ausgehend von sog. Grundfunktionen wird
mit zwei Operationen zunächst die Klasse der primitiv rekursiven
Funktionen aufgebaut. Der Abschluß unter einer dritten Operation liefert
dann die Klasse der µ-rekursiven Funktionen. Diese stimmt letztlich mit
der Klasse der partiellen Turing-berechenbaren Funktionen überein.
Definition
Die Klasse PR0 der Grundfunktionen besteht aus
.
allen Projektionen Nk
πik
Nk
κk;0
. allen konstante Funktionen
.
der Nachfolger-Funktion N
succ
N, x 7→ xi , für i < k ∈ N ;
N, x 7→ 0 , für k ∈ N ;
N, n 7→ n + 1 .
Speziell im Fall k = 0 ist N0 ein Singleton {∗} . Dann existieren keine
0;0
Projektionen, und die Konstante {∗} κ
N kann mit dem Element
0 ∈ N identifiziert werden (Funktion ohne Parameter).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
65 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Zunächst wollen wir die bekannte Verknüpfung einstelliger Funktionen
N
g
N
f
N
,
n 7→ f (g (n)) =: (f ◦ g )(n)
auf mehrstellige Funktionen übertragen. Ist Nk f N gegeben, kann man
im einfachsten FallP k Funktionen Nti gi N per Substitution zu einer
neuen Funktion N i<k ti f ◦ (g0 × · · · × gk−1 ) N verbinden:
g0
g1
g2
f
(In dieser graphischen Darstellung haben die Knoten als Funktionen oben
endlich viele Inputs, und unten genau einen Output.)
Diese Operation wird sich später als ableitbar erweisen, dient also nicht als
grundlegendes Konstruktionsprinzip für primitiv-rekursive Funktionen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
66 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Stattdessen kann man für Nk f N auch k Funktionen gi mit
demselben Definitionsbereich Nm betrachten, und daraus eine kombinierte
Funktion von Nm nach N gewinnen, indem man die Eingabe für alle
Funktionen gi klont:
g0
g1
g2
f
Definition (Klon-Komposition)
Für Nk
f
N und Nm
gi
N, i < k setze Nm
x 7→ f g0 (x), . . . , gk−1 (x)
f ◦ hgi : i < ki
N
Auch diese Operation wird in der Literatur leicht irreführend einfach als
“Substitution” oder “Komposition” bezeichnet.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
67 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel
Die Funktion N2 h N, hm, ni 7→ (m + n) + mn + max{m, n} läßt sich
mittels Klon-Komposition aus N3 f N, hx, y , zi 7→ x + y + z sowie
N2 gi N, i < 3 , konstruieren, mit g0 (m, n) := m + n , g1 (m, n) := mn
und g2 (m, n) := max{m, n} .
Beispiel
k;i
Konstante Funktionen Nk κ
N mit Wert i ∈ N liefert κk;0 durch
i -fache Verknüpfung mit der Nachfolger-Funktion: κk;i = (succ)i ◦ κk;0 .
Beispiel
Die durch f (n) = n + 2 spezifizierte Funktion N
f = succ ◦ succ realisieren.
f
N läßt sich durch
Entsprechend liefert die Spezifikation g (m, n) = n + 2 eine Funktion
N2 g N mit g = f ◦ π12 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
68 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Substitution läßt sich auf Klon-Komposition zurückführen.
Beweis
Für Nk f N erweitert man den Definitionsbereich der Funktionen
P
Nti gi N, i < k , mittels Dummy-Argumenten zu Nt mit t = i<k ti .
Dafür verwendet man Klon-Komposition mit geeigneten Projektionen:
t
g̃i = gi ◦ hπP
j<i tj
, . . . , π(tP
j≤i tj )−1
i
Dies liefert schließlich
f ◦ (g0 × · · · × gk−1 ) = f ◦ hg̃0 , . . . , g̃k−1 i
Umgekehrt zeigt die graphische Darstellung unmittelbar, dass die
Klon-Komposition nicht mit Hilfe der Substitution realisiert werden kann.
(Während Substitution nur auf der Tensorprodukt-Eigenschaft von × beruht, benötigt Klon-Komposition die Eigenschaften
eines kategoriellen Produkts, speziell die Existenz von Projektionen.)
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
69 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Definition (Induktions-Rekursions-Schema (IRS))
Aus zwei Funktionen Nk−1
Nk f = IR(g , h) N gemäß
g
N
h
Nk+1 konstruieren wir eine dritte
f (x, 0) := g (x) und f (x, m + 1) := h(x, m, f (x, m))
mit
x ∈ Nk−1
Die Rekursion erfolgt bei festem x ∈ Nk−1 im letzten Argument rückwärts
durch m + 1 -malige Anwendung von h auf den Startwert f (x, 0) = g (x) :
Beispiel ( m = 2 )
f (x, 3) = f (x, 2 + 1) = h(x, 2, f (x, 2))
= h(x, 2, f (x, 1 + 1))
= h(x, 2, h(x, 1, f (x, 1)))
= h(x, 2, h(x, 1, f (x, 0 + 1)))
= h(x, 2, h(x, 1, h(x, 0, f (x, 0))))
= h(x, 2, h(x, 1, h(x, 0, g (x))))
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
70 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Definition
Die Klasse PR der primitiv rekursiven Funktionen bilden den Abschluß der
Grundfunktionen unter der Klon-Komposition und Induktions-Rekursions:
Die Menge PRi+1 entstehe durch Anwendung von Klon-Komposition und
IRS auf Funktionen aus PRi , i ∈ N . Wegen idIN = π01 ∈ PR0 folgt sofort
PR0 ⊆ PR1 , und per Induktion auch PRi ⊆ PRi+1 .
[
PR := { PRi : i ∈ N }
Satz
Die Menge PR der primitiv-rekursiven Funktionen ist abzählbar.
Um f ∈ PR für eine gegebene zahlentheoretische Funktion Nk f N
nachzuweisen, ist f als Klon-Komposition von, oder als Ergebnis des IRS
mit Funktionen darzustellen, die auch zu PR gehören.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
71 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel
Die Fakultätsfunktion fac(n) = n! =
Q
i≤n
i ist primitiv rekursiv.
Da fac nicht offensichtlich die Klon-Komposition einfacherer Funktionen
ist, versuchen wir, fac mit Hilfe des IRS darzustellen. fac(0) = 1 erzwingt
g = κ0;1 . Um einen Kandidaten für h zu finden, wollen wir fac(m + 1)
mit fac(m) in Beziehung setzen. Offenbar gilt
Y
Y
i = (m + 1) ·
i = (m + 1) · m!
fac(m + 1) = (m + 1)! =
i≤m+1
i≤m
= (m + 1) · fac(m) = h(m, fac(m))
Das legt N2
h
N, ha, bi 7→ succ(a) · b nahe.
Bei h handelt es sich um das Ergebnis der Substitution von succ und
idN = π01 in die Multiplikation N2 mult N. Die primitive Rekursivität von
h folgt, wenn wir die der Multiplikation nachweisen können.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
72 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel (Fortsetzung)
Da die Multiplikation weder auf Klon-Komposition noch auf Substitution
basiert, versuchen wir es mit dem IRS. Aus n · 0 = 0 folgern wir g 0 = κ1;0 ,
während n · (m + 1) = n + n · m = h0 (n, m, n · m) die Wahl von
h0 (a, b, c) = a + c nahelegt, genauer: h0 = plus ◦ hπ03 , π23 i .
Damit bleibt die Addition N2 plus N auf primitive Rekursivität zu
untersuchen. Klon-Komposition und Substitution entfallen, bleibt also nur
das IRS. Aus n + 0 = n folgern wir g 00 = idN = π01 . Andererseits legt
n + (m + 1) = (n + m) + 1 = h00 (n, m, n + m) die Wahl von
h00 (a, b, c) = c + 1 nahe, genauer: h00 = succ ◦ π23 .
Zusammenfassend sind folgende Funktionen primitiv rekursiv:
plus = IR(π01 , succ ◦ π23 )
mult = IR(κ1;0 , plus ◦ hπ03 , π23 i)
fac = IR(κ0;1 , mult ◦ hsucc, π01 i)
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
73 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel (Die auf N beschränkte Subtraktion ist primitiv-rekursiv)
(
. m = n − m falls n > m
monus(n, m) = n −
0
sonst
läßt sich umschreiben zu
monus(n, 0) = n
und
monus(n, m + 1) = pred monus(n, m)
Dies paßt zum Rekursionsschema für g = π01 = idN und h = pred ◦π23 ,
wobei die totale Vorgängerfunktion pred definiert ist durch
pred(0) = 0
und
pred(m + 1) = m
Die primitive Rekursivität von h folgt aus der von pred . Aber dies ergibt
sich auch mit Hilfe des Rekursionsschemas und den Funktionen ḡ = κ0;0
und h̄ = π02 :
pred 0 = 0 = ḡ
Jürgen Koslowski (TU-BS)
und
pred(m + 1) = h̄(m, pred(m)) = m
Theoretische Informatik 2
SS 2015
74 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Das Umordnen, Löschen oder Wiederholen von Argumenten in primitivrekursiven Funktionen liefert wieder solche.
Beweis.
Für Nk g N und {0, . . . , k − 1} = k
die Komposition
f : Nm
Nϕ
Nk
g
N ,
ϕ
m = {0, . . . , m − 1} läßt sich
x 7→ g (xϕ(0) , ×ϕ(1) , . . . , xϕ(k−1) )
m , πm , . . . , πm
darstellen als Klon-Komposition f = g ◦ hπϕ(0)
ϕ(1)
ϕ(k−1) i .
Corollar
Ist Nk f N primitiv-rekursiv, dann auch für alle ` ∈ N die Funktion
0
Nk × N` = Nk+` f
N die gegeben ist durch f 0 (x, y) = f (x) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
75 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz (Fallunterscheidung ist primitv-rekursiv)
Sind für i < n die Funktionen Nk gi , hi N primitiv-rekursiv, und existiert
für jedes x ∈ Nk genau ein i < n mit hi (x) = 0 , so ist auch
Nk
f
N
,
x 7→ gi (x)
falls
hi (x) = 0
primitiv-rekursiv.
Beweis.
f (x) =
X
. h (x)
gi (x) · 1 −
i
i<n
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
76 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Mit Nk+1 g N sind auch folgende Funktionen Nk+1 f+ , f∗ N
primitiv-rekursiv:
X
Y
f+ (x, m) :=
g (x, i) und f∗ (x, m) :=
g (x, i)
i<m
i<m
Beweis.
f+ (x, 0) = 0
und
f+ (x, m + 1) = f+ (x, m) + g (x, m)
zeigt, wie f+ mit dem IRS aus g+ (x) = 0 und h+ (x, m, c) = g (x, m) + c
entsteht. Analog zeigt
f∗ (x, 0) = 1 und
f∗ (x, m + 1) = f∗ (x, m) · g (x, m)
wie f∗ mit dem IRS aus g∗ (x) = 1 und h∗ (x, m, c) = g (x, m) · c entsteht.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
77 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Definition (beschränkter µ -Operator)
Für eine Funktion Nk+1
g
N definieren wir Nk+1
f
N durch
f (x, m) = µi<m (g (x, i) = 0)
(
i0 falls g (x, i0 ) = 0 und g (x, j) 6= 0 für j < i0
=
0 falls g (x, j) 6= 0 für alle j < m (speziell für m = 0)
In Worten: f (x, m) ist die kleinste Zahl i0 < m mit g (x, i0 ) = 0 , falls
solch eine existiert, und 0 sonst.
Die Schreibweise soll andeuten, dass i eine gebundene Variable ist.
Wir werden später auch einen unbeschränkten µ-Operator kennenlernen.
Satz
Ist g in der obigen Definition primitiv-rekursiv, so auch f .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
78 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beweis.
Wie wollen wieder das IRS anwenden. Dazu schreiben wir f wie folgt:
f (x, 0) = 0
(
m
falls g (x, m) + f (x, m) = 0 und g (x, 0) · m 6= 0
f (x, m + 1) =
f (x, m) sonst
Damit funktioniert das IRS mit den Funktionen
ĝ (x) = 0
(
m
ĥ(x, m, c) =
c
Jürgen Koslowski (TU-BS)
. g (x, 0) · m) = 0
falls g (x, m) + f (x, m) + (1 −
. (g (x, m) + f (x, m)) · g (x, 0) · m = 0
falls 1 −
Theoretische Informatik 2
SS 2015
79 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Primitiv-rekursive Prädikate
Definition
Unter einem primitiv-rekursiven Prädikat verstehen wir eine primitivrekursive Funktion Nk p N mit Wertebereich 2 = {0, 1} ⊆ N .
Beispiel (vergl. T. A. Sudkamp, Languages and Machines, Kapitel 13)
Name
Sign
Prädikat
sg(x)
Sign Komplement
cosg(x)
Kleiner als
Größer als
Gleich
Ungleich
lt(x, y )
gt(x, y )
eq(x, y )
ne(x, y )
Definition
sg(0) = 0
sg(y + 1) = 1
cosg(0) = 1
cosg(y + 1) = 0
.
sg(y − x)
.
sg(x − y )
.
.
cosg((x − y ) + (y − x))
cosg(eq(x, y ))
alternative Beschreibung
.
1 − sg(x)
.
.
.
.
1 − (x − y ) − (y − x)
.
.
sg((x − y ) + (y − x))
Primitiv-rekursive Prädikate lassen sich mittels logischer Junktoren zu neuen
solchen kombinieren. Das kann im Rahmen von Fallunterscheidungen
nützlich sein.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
80 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Folgende Prädikate sind primitiv-rekursiv:
(
(
1 falls n teilt n
1 falls n prim ist
|(n, m) =
prime(n) =
0 sonst
0 sonst
Beweis.
|(n, m) = 1 ⇐⇒ ∃z. (z · n = m) ⇐⇒
X
eq(z · n, m) = 1
z≤m
Folglich gilt |(n, m) =
P
z≤m
eq(z · n, m) .
prime(n) = 1 ⇐⇒ n ≥ 2 ∧ ∀y < n. y = 0 ∨ y = 1 ∨ |(y , n) = 0
. (2 −
. n) + P
Also prime(n) = 1 −
y <n y · ne(y , 1) · |(y , n) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
81 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Die Funktion N
primitv-rekursiv.
p
N, die n die n -te Primzahl zuordnet, ist
Die Funktion N2 D N, die (i, n) auf den Exponenten von p(i) in
der Primzahlfaktorisierung von n abbildet, ist primitiv-rekursiv.
Beweis.
Wegen p(0) = 2 ist p nicht direkt eine beschränkte Minimierung.
p(m + 1) ist die kleinste Primzahl größer als p(m) . Der kleinste
Kandidat dafür ist p(m)! + 1 . Aus
. prime(i) + lt(i, p(m) + 1)
p(m + 1) = h(m, p(m)) = µi<p(m)!+2 (1 −
folgern wir p = IRS(κ0;2 , h) mit
. prime(i) + lt(i, b + 1)
h(m, b) = µi<b!+2 (1 −
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
82 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beweis (Fortsetzung).
D(i, n) ist die kleinste Zahl j < n , so dass n nicht durch p(i)j
geteilt wird. Das läßt sich direkt mittels beschränktem µ-Operator
ausdrücken
D(i, n) = µj<n+1 |(p(i)j+1 , n) = 0
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
83 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Eigenschaften von PR
Satz
Jede primitiv rekursive Funktion ist total.
Beweis.
Alle Projektionen πik , jede konstante Funktion κk;0 und die Nachfolgerfunktion succ sind überall definiert, d.h., total.
Sind Nk f N und Nm gi N, i < k , überall definiert, so gilt dies auch
für die Klon-Komposition f ◦ hgi : i < ki .
Sind Nk−1 g N h Nk+1 total, so ist f := IR(g , h) zumindest auf
Nk−1 × {0} definiert. Mit f (x, m) ist auch f (x, m + 1) = h(x, m, f (x, m))
definiert. Induktion zeigt nun: f ist auf ganz Nk definiert.
Strukturelle Induktion über den Aufbau primitv rekursiver Funktionen wie
hier ist aus der Logik bekannt und wird auch nachfolgend nützlich sein.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
84 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Der Aufbau von PR legt es nahe, analog zu regulären Ausdrücken auch
hier syntaktische Baupläne einzuführen, mit offensichtlicher Semantik F .
Σpr := {π, κ, succ, |, (, ), ; , clone, IR}
soll als Alphabet dienen. Parallel dazu ist auch die Arität σ festzulegen:
Definition
Für i < k ∈ N definieren wir zunächst primitv rekursive Ausdrücke (prAs)
mit folgender Arität und entsprechenden Grundfunktionen als Semantik:
σ(π(|k ; |i )) = k
, σ(κ(|k )) = k
bzw.
σ(succ) = 1
Sind F und Gi , i < σ(F ) primitiv-rekursive Ausdrücke mit
σ(Gi ) = σ(Gi+1 ) für alle i < σ(F ) − 1 , so ist
clone(F ; G0 ; . . . ; Gσ(F )−1 )
ein prA mit Arität
σ(Gi )
Sind G und H primitiv-reguläre Ausdrücke mit σ(H) = σ(G ) + 2 , so ist
IR(G ; H)
Jürgen Koslowski (TU-BS)
ein prA mit Arität σ(G ) + 1 = σ(H) − 1
Theoretische Informatik 2
SS 2015
85 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Jede primitiv rekursive Funktion ist Turing-berechenbar.
Beweis.
Alle Grundfunktionen sind Turing-berechenbar, mittels sehr einfacher
Maschinen, die wir mit Prki , Kok;0 bzw. Su bezeichnen wollen.
Realisieren 1-Band-Maschinen M und Ti , i < k , die totalen Funktionen
Nk f N und Nm gi N, i < k , so realisiert folgende (k + 1)-BandMaschine f ◦ hgi : i < ki : sie simuliert Ti , i < k , mit derselben Eingabe
w ∈ Nm , und schreibt die Ergebnisse der Reihe nach auf das Eingabeband
von M , die nschließend mit ebendieser Eingabe simuliert wird.
Realisieren die 1-Band-Maschinen L und N die totalen Funktionen
Nk−1 g N h Nk+1 , so realisiert folgende 2-Band-Maschine
f := IR(g , h) : bei Eingabe hx, mi simuliert sie zunächst L mit Eingabe x
und Ausgabe f (x, 0) = g (x) . Anschließend simulieret sie m -mal N mit
Eingabe hx, i, f (x, i)i und Ausgabe f (x, i + 1) , i < m .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
86 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Wichtig: Die resultierenden Mehrband-Maschnen im obigen Beweis lassen
sich systematisch in 1-Band-Maschinen umwandeln. Kennt man die Codes
der 1-Band-Maschinen, die die Argument-Funktionen in der Klon-Komposition bzw. dem IRS realisieren, so läßt sich daraus der Code der
1-Band-Maschine für die Ergebnis-Funktion berechnen!
Satz
Nicht jede totale Turing-berechenbare Funktion ist primitiv rekursiv.
Beweisidee
ϕi , i ∈ N , sei eine Aufzählung aller primitiv-rekursiven Funktionen, die
Stelligkeit sei σi = σ(ϕi ) . Definiere die Diagonalfunktion N ∆ N durch
∆(n) := ϕn (hn : i < σn i) + 1
für n ∈ N
Nach Konstruktion kann ∆ mit keiner einstelligen Funktion der Form ϕn
übereinstimmen: aus ∆ = ϕn folgt ∆(n) = ϕn (n) + 1 6= ϕn (n) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
87 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Fortsetzung
Damit ∆ Turing-berechenbar ist, muß die Aufzählung ϕ spezielle
Eigenschaften haben. Aus dem Argument n ∈ N wollen wir der Code der
Turingmaschine berechnet können, die ϕn realisiert. Dafür verwenden wir
primitiv rekursive Ausdrücke:
Faßt man deren Alphabet Σpr als linear geordnete Menge auf, so läßt sich
Σ∗pr nun lexikographisch linear ordnen. Die Reihenfolge der primitvrekursiven Ausdrücke gemäß dieser Ordnung sei durch ϕ codiert.
Nun können wir die Turing-Berechenbarkeit von ∆ zeigen: Für Eingabe n
wird zunächst der prA mit Index n gemäß obiger Auflistung bestimmt;
dann wird der Code der zugehörigen TM bestimmt, die die Semantik
des prA mit Arität σ realisiert (siehe Folie 87);
schließlich wird diese Maschine mit der Eingabe hn : i < σi simuliert
(Stichwort: universelle Turingmaschine, Kapitel 7);
zum Schluß wird das Ergebnis um 1 erhöht.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
88 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel (Ackermann-Funktion (Mitte der 1920’er Jahre))
Die von Wilhelm Ackermann gefundene Funktion ist das bekannteste
Beispiele für eine totale intuitiv berechenbare Funktion, die nicht primitiv
rekursiv ist. (Gabriel Sudan hat etwas früher eine weitere derartige Funktion
gefunden; Sudan und Ackermann waren beide Schüler von David Hilbert.)
Ackermanns ursprünglich 3-stellige Funktion wurde 1955 von Rózsa Péter
zur bekannten zweistelligen Version vereinfacht:


falls n = 0;
m + 1
A(n, m) := A(n − 1, 1)
falls n > 0 und m = 0;


A(n − 1, A(n, m − 1)) falls n > 0 und m > 0.
ist Turing-berechenbar, da A(n, m) tatsächlich nur von endlich vielen
vorher zu berechnenden Werten A(k, l) mit k ≤ n und l < m abhängt.
deutsch
Das z.B. auf Wikipedia beschriebene Wachstumsverhalten english
verhindert, dass A primitiv rekursiv sein kann: A “wächst zu schnell”.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
89 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Definition
Eine Funktion N2 h N majorisiert eine Funktion Nm g N, falls ein
b ∈ N existiert, so dass für jedes a ∈ Nm mit a := maxhai : i < mi gilt
g (a) < h(a, b)
Offenbar kann sich h nicht selber majorisieren, denn andernfalls hätte dies
h(b, b) < h(b, b) zur Folge.
Satz
Die Klasse der von A majorisierten Funktionen umfaßt alle primitiv
rekursiven Funktionen. Insbesondere kann A nicht primitiv-rekursiv sein.
Beweisidee
Man zeigt, analog zu früheren Beweisen, dass A alle Grundfunktionen
majorisiert, und dass die Eigenschaft, von A majorisiert zu werden, unter
Klon-Komposition und dem IRS erhalten bleibt, Details auf PlanetMath.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
90 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Historische Anmerkungen:
Der Begriff “primitiv rekursiv” geht auf Rózsa Péter zurück: Über den
Zusammenhang der verschiedenen Begriffe der rekursiven Funktion,
Mathematische Annalen, 110: 612–632 (1934).
Das Konzept muß Anfang bis Mitte der 1920’er Jahre Hilbert und
seinen Schülern bekannt gewesen sein: David Hilbert, Über das
Unendliche, Mathematische Annalen 95: 161–190 (1926). Dort wird
auf Ackermanns Ergebnis Bezug genommen, dessen Artikel Zum
Hilbertschen Aufbau der reellen Zahlen, Mathematische Annalen 99,
118–133 aber erst 1928 erschien. Hier wird auch Sudans Arbeit Sur le
nombre transfini ω ω , Bulletin mathematique de la Societe roumaine
des sciences 30: 11–30, (1927) zitiert.
Schon Hermann Grassmann beschrieb die induktive Definition von
Addition und Multiplikation in seinem Lehrbuch der Arithmetik für
höhere Lehranstalten (1861). Diese Idee wurde später unabhängig von
Richard Dedekind wiederentdeckt: Was sind und was sollen die Zahlen?
(1888).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
91 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Der unbeschränkte µ-Operator
Um die Klasse der primitiv rekursiven Funktionen zu vergrößern, führen wir
nun den unbeschränkten µ-Operator ein, eine Verallgemeinerung des
beschränkten µ-Operators. Er abstrahiert das Programmierkonzept der
unbeschränkten sequenziellen Suche oder auch WHILE-Schleife.
Eine Übersicht zu µ-Operatoren findet sich etwa bei
PlanetMath
.
Definition
Für eine k + 1-stellige partielle Funktion Nk+1
k -stellige Minimierung Nk µg N durch
g
N definieren wir ihre
x 7→ µg (x) := min{ m : g (x, m) = 0 ∧ ∀j < m. g (x, j) ist definiert }
Alternative Schreibweise mit m als gebundener Variable: µm (g (x, m) = 0) .
Die Minimierung µf einer totalen Funktion braucht nicht länger total zu
sein: Z.B. ist {∗} µsucc N undefiniert, da succ den Wert 0 nicht
annimmt, die zu minimierende Menge also leer ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
92 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Definition
Die Klasse der µ-rekursiven Funktionen bildet den Abschluß der
Grundfunktionen unter Klon-Komposition, dem IRS und Minimierung.
Beispiel
Die partielle Vorgängerfunktion N pvor N, n + 1 7→ n , ist µ-rekursiv als
Ergebnis der Anwendung des µ-Operators auf eine primitiv-rekursive
Funktion (vergl. HA), die wegen ihrer Totalität die orange Extrabedingung
automatisch erfüllt:
N2
f
N
,
. succ m) + (succ m −
. n) = eq(n, succ m)
hn, mi 7→ (n −
Offengar gilt f (n, m) = 0 gdw succ m = n , was nur im Fall n > 0
möglich ist, und zwar für m = n − 1 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
93 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Beispiel
Die Subtraktion N2 sub N, hn, mi 7→ n − m sofern m ≤ n , läßt sich mit
dem IRS darstellen: n − 0 = n impliziert g = idN = π01 . Wegen
n − (m + 1) = (n − m) − 1 = h(n, m, subhn, mi) liegt die Wahl von
h(a, b, c) = pvor(c) nahe, genauer h = pvor ◦ π23 .
Beispiel
Die ganzzahlige Division N2 div N, hn, mi 7→ k sofern k · m = n gilt,
ist µ-rekursiv. Wir versuchen es zunächst mit
f (n, m, k) := sub(n, k · m)
. m·k +m·k −
. n)
(oder f (n, m, k) := n −
Aber dann gilt f (0, 0, 0) = 0 , was µ f (0, 0) = 0 zur Folge hätte; das wäre
zumindest unkonventionell. Um im Fall m = 0 Undefiniertheit zu
erzwingen, können wir m durch succ(pvor m) ersetzen, was für m = 0
undefiniert ist. Andererseits sind im Fall f (n, m, k) = 0 die Werte
f (n, m, j) mit j < k definiert, woraus dann µ f (n, m) = k folgt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
94 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Satz
Jede µ-rekursive Funktion ist Turing-berechenbar.
Beweis.
Wegen der Turing-Berechenbarkeit primitiv rekursiver Funktionen ist nur zu
zeigen, dass der µ-Operator für partielle Funktionen Turing-Berechenbarkeit erhält: ausgehend von i = 0 wird i solange erhöht, bis erstmals
f (x, i) = 0 auftritt; das aktuelle Argument i ist dann der Wert von µ f (x)
(orange Extrabedingung!). Andernfalls ist µ f (x) undefiniert.
Ohne Beweis (sehr technisch) geben wir die Umkehrung an:
Satz
Jede Turing-berechenbare Funktion ist µ-rekursiv.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
95 / 236
Church-Turing-These
6.2 Rekursive Funktionen
Der leider sehr technische Beweis des letzten Satzes hat eine vielleicht
überraschende Konsequenz:
Corollar. (Kleene Normalform)
Zu jeder µ-rekursiven Funktion f existieren primitiv-rekursive Funktionen
g und h mit
f (x) = g µi (h(x) = 0) bzw. elementfrei f = g ◦ µh
Speziell die Ackermann-Funktion muß auf diese Weise darstellbar sein, siehe
etwa Mathematcs Stack Exchange .
Weitere interessante Überlegungen zur Ackermannfunktion finden sich
ebenfalls bei Theoretical Computer Science Stack Exchange .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
96 / 236
Unentscheidbare Probleme
Kapitel 7
Unentscheidbare Probleme
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
97 / 236
Unentscheidbare Probleme
7.0 Problemstellung
7.0 Problemstellung
Wir brauchen Methoden um festzustellen, dass für ein Problem kein immer
terminierender Algorithmus existiert.
Formaler: Für eine gegebene formale Sprache L ∈ Σ∗ suchen wir nach
Beweisen, dass L nicht entscheidbar ist, im Sinne des vorletzten Kaptiels.
Beispiel
Eingabe: Programmtext P (in ALGOL 68, FORTH, . . . ), Eingabedaten E
Aufgabe: Festzustellen, ob P bei Eingabe E terminiert.
Dieses Problem ist nicht entscheidbar!
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
98 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
7.1 Universelle Turingmaschine
Zunächst überzeugen wir uns von der Existenz einer “programmierbaren”
Turingmaschine MU . An diese stellen wir folgende Anforderungen:
MU soll beliebige TMs simulieren können, deterministische wie
nicht-deterministische. Dies ist eine Instanz von Selbstreflektion, ein
Algorithmus, der jeden beliebigen Algorithmus ausführt, insbesondere
auch sich selbst. Praktische Beispiele dafür sind z.B. Interpreter für
Programmiersprachen (JAVA-Bytecode,. . . ), CPUs (= Interpreter für
Maschinencode).
Konkret soll MU bei Eingaben der Form hc(M), w i , c(M) der
Binärcode einer TM M , diese Maschine mit Eingabe w ∈ {0, 1}∗
simulieren, im Entscheidungs- wie im Berechnungsfall.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
99 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
Bemerkung
Wir können uns auf das binäre Alphabet Σ = {0, 1} ohne Hilfssymbole
beschränken, denn jede Maschine M = hQM , {sk : k < N}, Σ, δ, q0 , qF i
mit einem Band und Blanksymbol s0 läßt sich durch eine Maschine M̄ mit
B = {#, 0, 1} simulieren:
. Für sk , k < N , verwenden wir 01k+1 (letztendlich unär), speziell
entspricht 01 dem ursprüngliche Blankzeichen s0 . Vorteil: damit wird
der relevante Bandinhalt von M durch ein zusammenhängendes
Binärwort auf dem Band von M̄ beschrieben.
. Den M-Kopf zu bewegen entspricht der Suche nach der nächsten Null.
. Das Überschreiben von si durch sj erfordert ggf. die Verschiebung
eines Teils des M̄-Bandinhalts, um keine Lücken entstehen zu lassen.
Dabei dient das Blankzeichen # der Maschine M̄ als Randbegrenzer.
Weiterhin kann M̄ eine Zustandsmenge der Form Q̄ = Q × QM haben
(“zusätzliches Gedächtnis”), deren zweite Komponente über den Zustand
der zu simulierenden Maschine M buchführt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
100 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
Nun wollen wir nTMs mit n Zuständen über Σ = {0, 1} der Form
M = h{ qi : i < n }, {#, 0, 1}, {0, 1}, δ, q0 , qn−1 i
mit qn−1 := qF und t Übergangsregeln ein Binärwort der Form
c(M) = 1110n 1w0 1w1 1 . . . 1wt−1 111
(1)
zuordnen, wobei die Wörter wj , j < t , den Regeln aus δ entsprechen.
Ähnlich wie oben codieren wir den Zustand qi durch 10i+1 , i < n , und
die möglichen Aktionen gemäß
h#, 0, 1, L, Ri 7→ h10, 102 , 103 , 104 , 105 i
Übergänge lassen sich nun darstellen als Binärwörter wj aus
{10i+1 : i < n}{10, 102 , 103 }{10i+1 : i < n}{10, 102 , 103 , 104 , 105 }
In c(M) werden deren Grenzen durch zwei Einsen markiert.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
101 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
Beispiel
Eine Binärmaschine M0 mit zwei Übergängen hat einem Code der Form
c(M) = 111001w0 1w1 111 . Etwa
hq0 , 1i 7→ hq1 , Li entspricht
w0 = 10100010010000
hq1 , #i 7→ hq1 , 1i entspricht
w1 = 100101001000
Satz
Die Sprachen xC = { c(M) : M ist eine binäre xTM } , x ∈ {n, d} , der
Codes (nicht)deterministischer TMs sind entscheidbar.
Beweis.
Das entspricht einem Syntaxcheck: Randbegrenzer 111 überprüfen,
Zustandszahl n auslesen, Übergangscodes wj separieren und auf
Konsistenz prüfen. Im deterministischen Fall ist noch sicherzustellen, dass
verschiedene Übergänge verschiedene linke Seiten haben.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
102 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
Beispiel
Wir erinnern an die nicht semi-entscheidbare Sprache
Lcode := { w ∈ {0, 1}∗ : w = c(M) für eine TM M mit w ∈
/ L(M) }
Die Maschine M0 aus obigem Beispiel akzeptiert ihren eigenen Code, da
sie nach einem Schritt im Endzustand q1 hält. Folglich gilt c(M0 ) ∈
/ Lcode .
Eine ähnliche Maschine M1 mit den Übergängen
hq0 , 1i 7→ hq1 , #i
und hq1 , #i 7→ hq1 , Ri
erfüllt hingegen c(M1 ) ∈ Lcode , da sie nie hält.
Wir rekapitulieren die Anforderungen an MU für legale Eingaben c(M)w :
. MU hält auf c(M)w gdw. M hält auf w , und wenn die Maschinen
halten, dann mit identischer Ausgabe.
. MU akzeptiert c(M)w gdw. M akzeptiert w .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
103 / 236
Unentscheidbare Probleme
7.1 Universelle Turingmaschine
Der Einfachheit halber konzipieren wir MU erst als 3-Band-Maschine. Diese
kann gemäß unserer Überlegungen in Kapitel 5 auch als 1-Band-Maschine
realisiert werden; erst diese liefert den Code c(MU ) .
Auf B0 steht zunächst die Eingabe c(M)w .
Der vordere Teil c(M) wird nach B1 verschoben und einem
Syntaxcheck unterzogen. Damit verbleibt die Eingabe w für M auf
B0 , das ab jetzt die Rolle des einzigen Bandes von M spielt.
Auf B2 wird über den aktuellen Zustand qi von M mittels i + 1
Nullen buchgeführt; zunächst wird hier eine Null geschrieben.
Die Simulation von M liest zunächst auf B0 ein Symbol aus
{#, 0, 1} . In Verbindung mit der Zustandsinformation auf B2 wird
nichtdeterministisch nach einem passenden Übergang auf B1 gesucht.
Gibt es keinen solchen, so hält MU , wobei genau dann der
Finalzustand von MU anzunehmen ist, wenn 0n auf B2 steht.
Andernfalls wird gemäß der rechten Seite der Zustandsindex auf B2
angepaßt, die entsprechende Aktion auf B0 ausgeführt, und der Kopf
auf B1 z.B. am Rand des Codes c(M) geparkt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
104 / 236
Unentscheidbare Probleme
7.2 Das Halteproblem
7.2 Das Halteproblem
In Kapitel 5 war Lhalt := { c(M)w : M TM, die bei Eingabe w hält }
erwähnt worden, aber erst jetzt ist die Binärcodierung von TMs verfügbar.
Problem: Bei deterministischen Maschinen läßt jede Eingabe höchstens
eine Berechnung zu, somit ist klar, was mit “ M hält bei Eingabe w ”
gemeint ist. Aber wie steht’s mit nichtdeterministischen Maschinen?
Lösung: Wie in Kapitel 5 gesehen, besitzt jede nTM M eine sog.
Determinisierung M0 , die M simuliert. Zwar war M0 als 4-Band Maschine
beschrieben worden, aber diese kann systematisch in eine TM Md mit
einem Band und Bandalphabet {#, 0, 1} transformiert werden.
Beobachtung 0: Md bzw. M0 hält genau dann bei Eingabe w , wenn
entweder w ∈ L(M) , oder jeder Berechnungspfad in M für w terminiert,
ohne zu akzeptieren.
Beobachtung 1: Die Funktion c(M) 7→ c(Md ) ist Turing-berechenbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
105 / 236
Unentscheidbare Probleme
7.2 Das Halteproblem
Definition
Lhalt := { c(M)w : M TM, und Md hält bei Eingabe w }
Satz
Die Sprache Lhalt ist semi-entscheidbar, aber nicht entscheidbar.
Beweis
Semi-Entscheidbarkeit: via Kombination von Syntaxcheck mit MU :
v
v = c(M)w ?
Ja
berechne c(Md )
c(Md )w
hält MU ?
Ja
v akz.
Nein
v n. akz.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
106 / 236
Unentscheidbare Probleme
7.2 Das Halteproblem
Beweis (Forsetzung).
Entscheidbarkeit: Annahme: Lhalt ist entscheidbar. Dann existiert eine
TM Mhalt , die immer hält und L(Mhalt ) = Lhalt erfüllt. Wir konstruieren
daraus wie folgt eine dreiteilige TM Mcode mit L(Mcode ) = Lcode , die
immer hält:
w
w = c(M)?
Ja
c(Md )w
Mcode :
Nein
w n. akz.
akz. Mhalt ?
Nein
w akz.
Ja
c(Md )w
akz. MU ?
Ja
w n. akz.
Nein
w akz.
Nach erfolgreichem Syntaxcheck w = c(M) wird die Maschine Mhalt auf
die Eingabe c(Md )w angewendet. Hält Md (also auch M ) nicht auf
Eingabe w , so wird w = c(M) von Mcode akzeptiert. Andernfalls testet
MU , ob Md (also auch M ) die Eingabe w akzeptiert. Genau dann wird
w von Mcode nicht akzeptiert. Aber dies ist ein Widerspruch zur
Nichtentscheidbarkeit von Lcode .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
107 / 236
Unentscheidbare Probleme
7.2 Das Halteproblem
Corollar
Das Komplement von Lhalt ist nicht semi-entscheidbar.
Beweis.
Wegen der Semi-Entscheidbarkeit von Lhalt ist die Semi-Entscheidbarkeit
des Komplements äquivalent zur Entscheidbarkeit von Lhalt .
Wie sieht das Komplement von Lhalt überhaupt aus?
Lhalt = { v ∈ {0, 1}∗ : ∃M. v = c(M)w =⇒ Md hält nicht auf w }
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
108 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
Die obige Beweistechnik ist unter dem Namen Reduktion bekannt, da die
Frage der Entscheidbarkeit eines neuen Problems auf die der Entscheidbarkeit eines bekannten Problems reduziert wird. Ein ähnliches Verfahren
wird auch in Kapitel 8, Komplexitätstheorie, nützlich sein.
Studierende sollen diese Beweistechnik beherrschen und einen Vorrat an
unentscheidbaren Problemen kennen.
Reduktionsschema
Gegeben: eine formale Sprache L ⊆ {0, 1}∗ .
Zu zeigen: L ist nicht entscheidbar.
Annahme: L ist entscheidbar. Dann exisiert eine TM M mit L(M) = L ,
die immer hält.
Verfahren: Konstruiere mittels M eine TM M̃ für eine bekanntermaßen
unentscheidbare Sprache L̃ , Widerspruch!
Damit kann L nicht entscheidbar gewesen sein.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
109 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
7.3.0 Das Akzeptanzproblem
Satz
Die Sprache Lacc := { c(M)w : M TM mit w ∈ L(M) } ist
unentscheidbar.
Beweis.
Wir nehmen an, die TM Macc entscheidet Lacc und hält immer.
Idee: Eine TM M so modifizieren, dass sie jede Eingabe w akzeptiert, bei
der sie hält.
Man kann die Nichtfinalzustände nicht zu Finalzuständen machen, aber
man kann einen neuen Endzustand qn hinzufügen und neue Übergänge
hqi , si 7→ hqn , si , sofern keine M- Übergänge aus hqi , si existieren; die
resultierende TM, bezeichnen wir mit M̄ .
Die Funktion c(M) 7→ c(M̄) ist natürlich Turing-berechenbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
110 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
Beweis (Fortsetzung).
Nun konstruieren wir eine zweiteilige TM Mhalt , die Lhalt entscheidet:
u
Mhalt :
u = c(M)w ?
Ja
c(M̄)w
Nein
u n. akz.
akz. Macc ?
Ja
u akz.
Nein
u n. akz.
Mhalt hält auf jede Eingabe, da jede Teilmaschine dies tut.
Nach erfolgreichem Syntaxcheck ist festzustellen, dass M auf w genau
dann hält, wenn M̄ die Eingabe w akzeptiert.
Da Lhalt aber nicht entscheidbar ist, kann Macc nicht existieren
.
Andererseits ist das Akzeptanzproblem für Kellerautomaten entscheidbar:
Kellerautomaten sind analog binär codierbar und können algorithmisch in
cfG’n umgewandelt werden, sogar in CNF. Der CYK-Algorithmus
entscheidet dann das Akzeptanzproblem.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
111 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
7.3.1 Akzeptanz des leeren Worts
Satz
Die Sprache Lε := { c(M) : M TM mit ε ∈ L(M) } ist unentscheidbar.
Beweis.
Wir nehmen an, die TM Mε entscheidet Lε und hält immer.
Idee: Die Akzeptanz von w ∈ L(M) durch M auf die Akzeptanz von ε
durch eine TM Mw zurückführen. Diese enthält alle Zustände von M ,
aber mit um m := |w | erhöhtem Index, sowie m neue Zustände qi ,
i < m . Mit Hilfe von Übergängen hqi , #i 7→ hqi , si i sowie
hqi , si i 7→ hqi+1 , Ri , i < m , und hqm−1 , sm−1 i 7→ hqm , sm−1 i wird
w = s0 s1 . . . sm−1 von links nach rechts auf das leere Band geschrieben.
Dann wird M mit um m erhöhten Zustandsindizes ausgeführt.
Die Funktion hc(M), w i 7→ c(Mw ) ist natürlich Turing-berechenbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
112 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
Beweis (Fortsetzung).
Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet:
u
Macc :
u = c(M)w ?
Ja
c(Mw )
Nein
u n. akz.
akz. Mε ?
Ja
u akz.
Nein
u n. akz.
Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun.
Nach erfolgreichem Syntaxcheck ist festzustellen, dass w genau dann von
M akzeptiert wird, wenn Mw die Eingabe ε akzeptiert.
Da Lacc aber nicht entscheidbar ist, kann Mε nicht existieren
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
.
SS 2015
113 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
7.3.2 Terminierung eines Algorithmus
Satz
Die Sprache
Lterm := { c(M) : M TM, so dass Md auf jede Eingabe hält } ist
unentscheidbar.
Beweis.
Wir nehmen an, die TM Mterm entscheidet Lterm und hält immer.
Idee: Einschränkung des Verhaltens einer TM M auf ihr Verhalten bei
leerer Eingabe: die modifizierte Maschine M̃ soll zunächst die Eingabe
löschen, mit Hilfe von Übergängen hq0 , si 7→ hq1 , #i 7→ hq0 , Li , s ∈ Σ ,
sowie hq0 , #i 7→ hq2 , #i , und bei leerem Band weiter wie M mit um 2
erhöhten Zustandsindizes verfahren.
Die Funktion c(M) 7→ c(M̃) ist natürlich Turing-berechenbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
114 / 236
Unentscheidbare Probleme
7.3 Weitere unentscheidbare Probleme
Beweis (Fortsetzung).
Nun konstruieren wir eine dreiteilige TM Mε , die Lε entscheidet:
u
u = c(M)?
Ja
akz. Mterm ?
c(M̃d )
Mε :
Nein
u n. akz.
Nein
u n. akz.
Ja
c(Md )
akz. MU ?
Ja
u akz.
Nein
u n. akz.
Mε hält auf jede Eingabe, da die ersten beiden Teilmaschinen dies tun und
die dritte nur bei garantierter Terminierung aufgerufen wird.
Nach erfolgreichem Syntaxcheck für M bedeutet die Nichtakzeptanz von
c(M̃d ) durch Mterm , dass Md bei Eingabe ε nicht hält, und M folglich
ε nicht akzeptiert. Im “Ja”-Fall hält Md bei Eingabe ε , es ist aber noch
zu überprüfen, ob ε auch akzeptiert wird. Das leistet MU mit Eingabe
c(Md ) . Im positiven Fall akzeptiert auch M das leere Wort, d.h.,
c(M) ∈ Lε . Die Unentscheidbarkeit von Lε liefert den gesuchten .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
115 / 236
Unentscheidbare Probleme
7.4 Satz von Rice
7.4 Satz von Rice
Wir brauchen ein effektiveres Verfahren, die Nichtentscheidbarkeit von
Teilsprachen von dC oder nC und verwandten Sprachen festzustellen.
Definition
Für eine Eigenschaft S formaler Sprachen setze
LS := { c(M) : M TM und L(M) hat Eigenschaft S }
Wir nennen S trivial, falls keine Sprache der Form L(M) die Eigenschaft
S erfüllt, oder jede solche Sprache dies tut.
Für triviales S , etwa “L ist (nicht) semientscheidbar”, ist LS entscheidbar.
Interessanter ist die Umkehrung:
Satz von Rice
Für nicht-triviale Eigenschaften S ist die Sprache LS nicht entscheidbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
116 / 236
Unentscheidbare Probleme
7.4 Satz von Rice
Damit erweisen sich z.B. folgende Sprachen als unentscheidbar:
{ c(M) : M TM und L(M) regulär }
{ c(M) : M TM und L(M) kontextfrei }
{ c(M) : M TM und L(M) 6= ∅ }
Was die vorangehenden ausführlichen Beispiele angeht, so läßt sich etwa Lε
mit Hilfe der Eigenschaft “ ε ∈ L(M) ” charakterisieren.
Dagegen ist Lterm kein Beispiel für die Anwendbarkeit des Satzes von Rice,
da die Forderung, M möge auf jede Eingabe halten, keine Eigenschaft der
Sprache L(M) ist, denn M ist durch L(M) nicht eindeutig bestimmt.
Lcode ist nicht semi-entscheidbar, geschweige denn entscheidbar. Dennoch
könnte man die Eigenschaft “ c(M) ∈
/ L(M) ” betrachten: dies ist ebenfalls
keine “legale” Eigenschaft, die eine Sprache L ⊆ {0, 1}∗ haben kann oder
nicht! Denkbar wäre die Existenz mehrerer TMs, die L akzeptieren, und
von denen manche Codes zu L gehören und andere nicht. Insofern ist auch
hier der Satz von Rice nicht anwendbar!
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
117 / 236
Unentscheidbare Probleme
7.4 Satz von Rice
Beweis des Satzes von Rice.
S sei nichttrivial. Falls ∅ die Eigenschaft S nicht hat, existiert eine TM
M0 , so dass L(M0 ) 6= ∅ die Eigenschaft S besitzt.
Für eine beliebige TM M und w ∈ {0, 1}∗ sei Mw die folgende
Verknüpfung von M0 mit M : wenn M0 ihre Eingabe akzeptiert, ist
danach M mit Eingabe w auszugeführen. Genauer: nachdem M0
akzeptiert hat, ist das Band zu löschen, dann ist w auf das leere Band zu
schreiben, und schließlich M auszuführen. Damit ist die Abbildung
hc(M), w i 7→ c(Mw ) Turing-berechenbar (Details?), und es gilt
(
L(M0 ) falls w ∈ L(M)
w
L(M ) =
∅
sonst
Annahme: LS ist entscheidbar. Dann existiert eine TM MS mit
L(MS ) = LS , die immer hält.
Nun konstruieren wir eine zweiteilige TM Macc , die Lacc entscheidet:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
118 / 236
Unentscheidbare Probleme
7.4 Satz von Rice
Beweis (Fortsetzung).
u
Macc :
u = c(M)w ?
Ja
w
c(M )
Nein
u n. akz.
akz. MS ?
Ja
u akz.
Nein
u n. akz.
Macc hält auf jede Eingabe, da beide Teilmaschinen dies tun.
u ∈ L(Macc )
gdw u = c(M)w ∧ c(Mw ) ∈ L(MS ) = LS
gdw u = c(M)w ∧ L(Mw ) hat Eigenschaft S
gdw u = c(M)w ∧ L(Mw ) 6= ∅
gdw u = c(M)w ∧ L(Mw ) = L(M0 )
gdw u = c(M)w ∧ w ∈ L(M)
gdw u ∈ Lacc
Also L(Macc ) = Lacc , Widerspruch. Damit existiert Macc nicht und Lacc
ist nicht entscheidbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
119 / 236
Unentscheidbare Probleme
7.4 Satz von Rice
Beweis (Fortsetzung).
Falls ∅ die Eigenschaft S hat, betrachten wir die deren Negation S̄ . Weil
∅ die Eigenschaft S̄ nicht hat, die ebenso wie S nichttrivial ist, folgt wie
oben, dass LS̄ nicht entscheidbar ist.
Wir wissen aber bereits, dass die entscheidbaren Sprachen unter
Komplementbildung abgeschlossen sind. Also gilt das auch für die nicht
entscheidbaren Sprachen. Weiterhin sind die entscheidbaren Sprachen unter
endlichen Durchschnitten abgeschlossen. Wegen
LS̄ = LS ∩ nC
unentscheidbar
muß auch LS unentscheidbar sein, folglich also auch LS .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
120 / 236
Komplexität von Algorithmen
Kapitel 8
Komplexität von Algorithmen
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
121 / 236
Komplexität von Algorithmen
8.0 Übersicht
8.0 Übersicht
Die Klasse der algorithmisch lösbaren (= entscheidbaren) Probleme soll
jetzt detaillierter untersucht werden. Das wesentliche Unterscheidungsmerkmal wird sein, ob ein Problem “effizient lösbar” ist in dem Sinne, daß
die Laufzeit einer dTM, die das Problem löst, durch ein Polynom in der
Größe der Eingabe beschränkt ist. Die zugehörige Klasse heißt P .
Beispiel
Eingabe: ungerichteter Graph G = hV , E i
Aufgabe: entscheiden, ob G 2-färbbar ist, d.h., ob die Knoten so mit zwei
Farben gefärbt werden können, daß jede Kante verschiedenfarbige
Endpunkte hat.
Beispiel
Eingabe: natürliche Zahl n > 0
Aufgabe: entscheiden, ob n eine Primzahl ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
122 / 236
Komplexität von Algorithmen
8.0 Übersicht
Wenn hingegen eine potentielle Lösung in polynomialer Zeit von einer dTM
überprüft werden kann, gehört das Problem zu NP .
Beispiel
Eingabe: ungerichteter Graph G = hV , E i
Aufgabe: entscheiden, ob G 3-färbbar ist.
Für eine potentielle 3-Färbung V f 3 = {0, 1, 2} sind für jede Kante die
Farben der Endpunkte zu vergleichen.
Beispiel
Eingabe: n geographische Orte (“Städte”) und ihre Entfernungen (bzw.
Reiskosten), sowie eine Zahl K > 0
Aufgabe: entscheiden, ob es eine Rundreise gibt, die alle Städte genau
einmal besucht und deren Länge (oder Preis) durch K beschränkt ist.
Für eine Permutation der Orte ist die Länge (der Preis) der zugehörigen
Rundreise zu berechnen und mit K zu vergleichen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
123 / 236
Komplexität von Algorithmen
Offenes Problem
Stimmt P mit NP überein?
8.0 Übersicht
Millennium-Problem
Die “schwierigsten” Probleme innerhalb der Klasse NP heißen
NP-vollständig. Gelingt der Nachweis, dass eins von ihnen zu P gehört,
dann folgt P = NP . (Es gilt als sehr unwahrscheinlich, dass ein effizienter
Algorithmus für ein NP-vollständiges Problem gefunden werden kann.)
Es sind inzwischen sehr viele NP-vollständige Probleme bekannt:
− Garey, Michael R.; Johnson, David S. (1979), Computers and
Intractability: A Guide to the Theory of NP-Completeness, W. H.
Freeman;
− Eine ständig aktualisierte Liste findet sich bei
Wikipedia
− Pierluigi Crescenzi, and Viggo Kann (Eds.):
A compendium of NP optimization problems
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
124 / 236
Komplexität von Algorithmen
8.0 Übersicht
8.0.1 Wiederholung: Groß-O-Notation
Wir wollen Funktionen N
R+ in Bezug auf ihr Wachstum vergleichen.
Informell soll O(g ) die Klasse aller Funktionen sein, die asymptotisch (also
für große Werte von n ∈ N ) nicht schneller wachsen als g . Genauer:
Definition
f ∈ O(g )
gdw ∃c ∈ R+ . ∃n0 > 0. ∀n ≥ n0 . f (n) ≤ c · g (n)
Beispiel
Jedes Polynom p vom Grad t erfüllt p ∈ O(nt ) . Denn aus
!
p(n) =
X
i≤t
i
pi n = n
t
X
pi /n
k−i
=n
i≤t
t
pt +
X
pi /n
t−i
i<t
kt)nt
folgt sofort p(n) ≤ (pt +
für k ≥ max{pi : i < t} . Andererseits
gilt 2n ∈
/ O(nt ) , denn limn→∞ nt /2n = 0 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
125 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Vor einer genaueren Analyse graphentheoretischer Probleme ist zu klären,
wie Graphen sinnvoll als Eingaben für TMs codiert werden können.
Definition
Ein gerichteter Graph G = hV , E i besteht aus einer Menge V von Knoten
(Vertices) und einer Relation E ⊆ V × V . Paare hu, v i ∈ E werden
graphisch als gerichtete Kanten (Edges) oder Pfeile u
v dargestellt,
während E als binäre Adjazenzmatrix über V aufgefaßt werden kann
(
1 falls hu, v i ∈ E
Eu,v =
0 sonst
G heißt ungerichtet, falls die Relation E symmetrisch ist. Dann werden in
der graphischen Darstellung die Hin- und Rückpfeile u
v durch
eine ungerichtete Kante u
v ersetzt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
126 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Anstelle von Adjazenzmatrizen kann man auch sog. Adjazenzlisten
verwenden, in denen für jeden Knoten seine direkten Nachfolger gespeichert
sind, im Wesentlichen die Positionen der Einsen aus der entsprechenden
Zeile der Adjazenzmatrix:
Beispiel
0
1





2
3

4
0
0
0
1
0
1
1
0
0
0
0
1
0
0
1
0
0
0
0
1
0
1
0
0
0






0 → (1)
1 → (1, 2, 4)
2→()
3 → (0)
4 → (2, 3)
Während die Größe der Adjazenzmatrix durch |V |2 gegeben ist, ist der
Wert für die Darstellung mittels Adjazenzlisten mit |E | + |V | vielleicht
präziser, wegen |E | ∈ O(|V |2 ) aber von derselben Größenordnung.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
127 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Definition
Einer topologischen Sortierung eines gerichteten Graphen G = hV , E i mit
n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft
hu, v i ∈ E
impliziert
ord(u) < ord(v )
Beispiel
•
1
•
0
•
3
•
4
•
2
Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit.
Allgemein kann ein gerichteter Graph genau dann topologisch sortiert
werden, wenn er keine Zyklen hat (Test für die Existenz von Zyklen).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
128 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Naiver Algorithmus für Topologisches Sortieren)
Eingabe: Gerichteter Graph G = (V , E ) mit n Knoten und k Kanten
Ausgabe: Topologische Sortierung V ord n, falls G azyklisch
1:
2:
3:
4:
5:
6:
7:
8:
9:
{(0) Initialisierung}
i := 0
{ i : die Zahl, die ord zuweisen soll}
W := V
{ W : die Menge der noch nicht bearbeiteten Knoten}
{(1) Rekursionsschritt}
while ein Knoten x ∈ W ohne Vorgänger in W existiert do
ord(x) := i
i := i + 1
W := W − {x}
end while {Zyklus falls W 6= ∅ , sonst topologische Sortierung}
Korrektheit: klar.
Laufzeit: (unter Verwendung von Adjazenzmatrizen)
Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A .
Schleife 5 wird m2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft;
in der Rest-Matrix über W ist eine 0-Spalte zu finden, in Zeit K .
n
n
X
X
T (n) = 2A +
(Km2 + 3A) = 2A + K
m2 + 3An ∈ O(n3 )
m=1
Jürgen Koslowski (TU-BS)
m=1
Theoretische Informatik 2
SS 2015
129 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Verbesserter Algorithmus für topologisches Sortieren)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
{(0) Initialisierung}
i := 0
{Laufzeit A , i : die Zahl, die ord zuweisen soll}
for alle Knoten v in V do
In[v ] := 0
{Laufzeit A , In[v ] : Vorgängeranzahl von v }
end for {Laufzeit A · n }
for alle Knoten u in V do
for alle Knoten v mit einer Kante (u, v ) in E do
In[v ] := In[v ] + 1 {Laufzeit A }
end for {Laufzeit A · k(v ) , k(v ) Länge der Nachfolgerliste von v }
end for {Laufzeit A · k bei Adjazenzlisten}
U := ∅
{Laufzeit A , U - Menge aller Knoten v mit In[v ] = 0 }
for alle Knoten v in V do
if In[v ] = 0 then
U := U ∪ {v }
end if {Laufzeit 2A }
end for {Laufzeit 2A · n }
{(1) Rekursionsschritt}
while U einen Knoten v enthält do
U := U − {v } ; ord(v ) := i ; i := i + 1
{Laufzeit 3A }
for alle Knoten w mit (v , w ) ∈ E do
In[w ] := In[w ] − 1 {Laufzeit A }
if In[w ] = 0 then
U := U ∪ {w }
end if {Laufzeit 2A }
end for {Laufzeit 3A · k(v ) }
end while {Laufzeit 3A · (n + k) , Zyklus falls i < n , sonst topologische Sortierung}
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
{A}
{A·n}
{A·k }
{A}
{ 2A · n }
{ 3A · (n + k) }
SS 2015
130 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Fortsetzung)
Gesamtlaufzeit: T (n, k) = 4A(n + k) + 2A(n + 1) ∈ O(n + k) .
Die FOR-Schleifen in Zeilen 6 und 7 garantieren nur in dieser Reihenfolge
eine Laufzeit von A · k in Zeile 10. Bei umgekehrter Reihenfolge, oder
Verwendung von Adjazenzmatrizen, ergäbe sich hier A · n2 . Ein ähnliches
Argument liefert für die FOR-Schleife in Zeile 20 innerhalb der
WHILE-Schleife in Zeile 18 den Term 3A · k in Zeile 26. Im Falle von
Adjazenzmatrizen stünde hier 3A · n2 .
Damit wäre bei Verwendung von Adjazenzmatrizen die Laufzeit gegeben
durch T (n) = 4A · (n + n2 ) + 2A · (n + 1) ∈ O(n2 ) .
Bei der Bestimmung der Effizienz kommt es also darauf an, wie man die
Größe der Eingabe definiert: Hinsichtlich der Knotenzahl |V | läuft der
Algorithmus mit Adjazenzmatrizen in quadratischer Zeit, verglichen mit
kubischer Zeit des naiven Algorithmus. Hinsichtlich der Summe |V | + |E |
läuft der obige Algorithmus in linearer Zeit.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
131 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Fortsetzung)
Korrektheit: Wenn G azyklisch ist, gibt es in jeder Runde Knoten ohne
Vorgänger. Folglich gilt U 6= ∅ , solange noch unsortierte Knoten existieren.
Erfolgt in Zeile 19 die Zuweisung ord(v ) = i , so wurden allen Vorgängern
von v in früheren Schritten kleinere Werte zugewiesen.
Aus obiger Analyse darf man allerdings nicht den Schluss ziehen, die
Codierung gerichteter Graphen mittels Adjazenzlisten wäre der Codierung
mittels Adjazenzmatrizen überlegen, zumal |E | ∈ O(|V |2 ) gilt.
Beispiel
v1
u
0
x3
w
4
y2
Jürgen Koslowski (TU-BS)
→(v
(v)), , v → (w , x) , ww →
→(()), , xx →
→(w
(w)), , yy →
→(x)
(x), ,
Adjazenzlisten: uu →
Knoten i
In[i]
∈ U?
In[i]
∈ U?
In[i]
∈ U?
u
0
yes
1
0
yes
v
2
1
0
yes
w
2
1
0
yes
x
0
yes
y
Theoretische Informatik 2
SS 2015
132 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Nun wenden wir uns der 2-Färbung ungerichteter Graphen zu.
Satz
Ein ungerichteter Graph ist genau dann 2-färbbar, wenn er keine Zyklen
ungerader Länge besitzt.
Beweis.
Zyklen ungerader Länge sind offensichtlich nicht 2-färbbar, dürfen somit
nicht als Untergraphen auftreten.
Gibt es keine Zyklen ungerade Länge, so färben wir pro Komponente einen
Knoten v und alle Knoten in gerader Entfernung von v rot, und alle
übrigen Knoten blau. Nach Voraussetzung haben alle Verbindungen
zwischen je zwei gleichfarbigen Knoten nur gerade Längen, während alle
Verbindungen zwischen Knoten unterschiedlicher Farbe von ungerader
Länge sind.
Idee für Implementieung: Schichtweises Vorgehen: färbe gewähltes v rot,
alle Nachbarn blau, die ungefärbten Nachbarn dieser Menge rot usw.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
133 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Algorithmus für 2-Färbung)
Eingabe: ungerichteter Graph G = hV , E i
Ausgabe: eine 2-Färbung V = ROT + BLAU , falls eine existiert
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
{(0) Initialisierung}
ROT := ∅ ; BLAU := ∅ ; F := ∅ ; {Laufzeit 3A , F : Menge der Knoten in Bearbeitung}
{(1) Rekursionsschritt}
while ∃v ∈ V do
V := V − {v } ; ROT := ROT + {v } ; F := F + {v } {Laufzeit 4A }
while ∃w ∈ F do
for alle Knoten u ∈ V mit {u, w } ∈ E do
if w ∈ ROT then
BLAU := BLAU + {u}
else
ROT := ROT + {u}
end if {Laufzeit 2A }
F := F + {u} ; V := V − {u} {Laufzeit 2A }
end for
F := F − {w } {Laufzeit A }
end while
end while
{(2) Ausgabe}
Überprüfen, ob BLAU oder ROT eine Kante enthalten
{ O(1) }
{ O(n + k) }
{ O(n + k) }
Die Laufzeit ist linear in |V | + |E | , da jeder Knoten und jede Kante einmal
“angefasst” werden.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
134 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Fortsetzung)
Korrektheit: Zu jedem Zeitpunkt liegt jeder Knoten v entweder in V , in
ROT oder in BLAU . Sobald V = ∅ , ist somit jeder Knoten gefärbt. Falls
ROT und BLAU keine Kante enthalten, liegt eine 2-Färbung vor.
Gehören die Endpunkte von hu, w i ∈ E zu ROT ( BLAU ), sind beide
durch einen Weg (un)gerader Länge mit dem Startknoten v verbunden
(Induktion). Damit liefern diese Wege samt hu, w i einen Zyklus ungerader
Länge, Widerspruch.
Beispiel
a
b
c
d
e
f
V
F
ROT
BLAU
Jürgen Koslowski (TU-BS)
Knoten
a...f
−
−
−
a∈V
b...f
a
a
−
a∈F
d, e, f
b, c
a
b, c
c ∈F
f
b, d, e
a.d.e
b, c
Theoretische Informatik 2
d ∈F
−
b, e, f
a.d.e
b, c, f
b∈F
−
e, f
a.d.e
b, c, f
e ∈F
−
f
a.d.e
b, c, f
SS 2015
f ∈F
−
−
a.d.e
b, c, f
135 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Algorithmus für 3-Färbung)
Eingabe: Ungerichteter Graph G = (V , E ) mit n Knoten und k Kanten
Ausgabe: G mit 3 Farben färben
Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man
alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine
Laufzeit O(3n ) . Andererseits kann man nichtdeterministisch eine
potentielle Färbung raten und diese deterministisch überprüfen.
Beispiel (Algorithmus für gerichteten Weg)
Eingabe: Gerichteter Graph G = hV , E i , Knoten v , w ∈ V
Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert
Idee: iterativ die von v aus erreichbaren Knoten bestimmen und in einer
Hilfs-Menge M sammeln; wenn w am Ende zu M gehört, existiert ein
gerichteter Weg von v nach w .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
136 / 236
Komplexität von Algorithmen
8.1.0 Beispiele effizienter Algorithmen (für Graphen)
Beispiel (Fortsetzung)
1:
2:
3:
4:
5:
6:
7:
8:
9:
{(0) Initialisierung}
M := {v } { M : die von v erreichbaren Knoten}
{(1) Rekursionsschritt}
while eine Kante hx, y i mit x ∈ M und y ∈
/ M existiert do
M := M + {y }
E := E − {hx, y i}
end while
{(2) Ausgabe}
JA, falls w ∈ M , sonst NEIN
Korrektheit: Klar!
Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Bei
Verwendung von Adjazenzlisten werden maximal n -mal alle k Kanten
getestet, was in einer Laufzeit von O(n · k) resultiert. Im Falle von
Adjazenzmatrizen ist stattdessen eine (n × n)-Matrix maximal n -mal nach
Einsen zu durchsuchen, also ergibt sich O(n3 ) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
137 / 236
Komplexität von Algorithmen
8.1.1 Weitere Vorüberlegungen
8.1.1 Weitere Vorüberlegungen
Wir betrachten zunächst 1-Band TMs wie auf Folie 15.Im Allgemeinen soll
die Codierung der Eingaben “vernünftig” sein, etwa:
Zahlen werden binär (oder dezimal) codiert (so dass ihr Wert exponentiell in der Länge der Darstellung ist), aber nicht unär (wobei der Wert
mit der Länge übereinstimmt).
Graphen werden mittels Adjazenzmatrizen oder -listen codiert.
Teilmengen n -elementiger Mengen werden als binäre n -Tupel codiert.
Besteht die Eingabe aus mehreren Teilen, ist darauf zu achten, dass diese
Teile geeignet voneinander getrennt werden, vergl. die Codierung binärer
TMs auf Folie 101.
Ein wesentliches Problem der Aussagenlogik bestand darin, die Erfüllbarkeit
von Formeln ϕ(x0 , . . . , xn−1 ) in den Variablen xi , i < n , zu überprüfen.
Besonders nützlich waren dabei Formeln in einer speziellen Normalform.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
138 / 236
Komplexität von Algorithmen
8.1.1 Weitere Vorüberlegungen
Zur Erinnerung:
Definition
Eine aussagenlogische Formel ϕ liegt in konjunktiver Normalform (KNF)
vor, wenn
− ϕ die Konjunktion von Klauseln Ki , i < n , ist;
− jede Klausel Ki die Disjunktion von Literalen Lij , j < mi , ist;
− jedes Literal Lij entweder eine Variable oder Negation einer solchen ist.
Ist die Anzahl der Literale pro Klausel durch m ∈ N beschränkt, sprechen
man von m -KNF.
Jede aussagenlogische Formel kann in eine äquivalente Formel in KNF
umgewandelt werden, etwa unter Verwendung der Distributivgesetze und
der de Morgan’schen Regeln.
Ein Beispiel in 2-KNF ist etwa
ϕ = (¬x ∨ y ) ∧ (¬x ∨ z) ∧ (x ∨ ¬z)
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
139 / 236
Komplexität von Algorithmen
8.1.1 Weitere Vorüberlegungen
In Analogie zur m -Färbbarkeit von Graphen stellt sich im Fall logischer
Formeln die Frage der m -Erfüllbarkeit:
Beispiel
Das E-Problem m -Sat hat als Eingabe eine Formel ϕ in m -KNF. Zu
entscheiden ist, ob diese Formel erfüllbar ist, in dem Sinne, dass eine
Belegung der auftretenden Variablen mit 0 (bzw. false ) und 1 (bzw.
true ) existiert, so dass ϕ den Wert 1 ( true ) erhält.
In Abschnitt 8.3 werden wir mittels Reduktion feststellen, dass 2-Sat zu P
gehört, während die NP-Vollständigkeit von 3-Sat in Abschnitt 8.4
nachgewiesen wird. Das unbeschränkte Erfüllbarkeitsproblem Sat ist
natürlich ebenfalls NP-vollständig (Cooke’scher Satz).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
140 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
8.2 Die Komplexitätsklassen P und NP
Unter P ( NP ) wollen wir die Klasse aller E-Probleme verstehen, die von
einem (nicht-)deterministischen Algorithmus in polynomialer Zeit gelöst
werden können.
Dabei soll die konkrete Implementierung des Algorithmus irrelevant sein,
d.h., P und NP sind unabhängig vom verwendeten Algorithmusmodell.
Wenn dies gewährleistet ist, kann man ein bequemes Modell wählen, etwa
TMs mit mehreren Bändern.
Definition
Eine Turing-berechenbare Funktion N t N wird als Zeitkomplexität einer
nTM M bezeichnet, wenn M für jede Eingabe w ∈ Σn immer nach
höchstens t(n) Schritten hält. D. h., die Tiefe des Berechnungsbaums von
w ist durch t(|w |) beschränkt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
141 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Bemerkung
Gelegentlich wird für die Zeitkomplexität nichtdeterministischer Maschinen
M gefordert, dass nur für Wörter aus L(M) eine (etwa die kürzeste)
akzeptierende Berechnung der Länge nach durch t(|w |) beschränkt sein
muß. Dies folgt sofort aus der obigen Definition.
Umgekehrt kann man M um einen Schrittzähler ergänzen und Berechnungen von w abbrechen, sobald sie mehr als t(|w |) Schritte brauchen.
Dabei sind |w | und t(|w |) vorher zu bestimmen, was O(|w | + T (|w |))
Schritte braucht, wobei T die Zeitkomplexität einer dTM ist, die t
berechnet. Die Zeitkomplexität der modifizierten Maschine liegt dann in
O(n + T (n) + t(n)) . Dies stimmt nur mit O(t(n)) überein, falls
{n, T (n)} ⊆ O(t(n)) gilt.
Damit sind beide Definitionen der Zeitkomplexität nicht äquivalent, aber
sofern es sich bei t und T um Polynome handelt, bleibt die
Zeitkomplexität polynomial, was für unsere Zwecke ausreicht.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
142 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Beispiel
Vollständig deterministische endliche Automaten (vDEA’s) verbrauchen pro
Schritt ein Symbol der Eingabe und halten dann. Also benötigen sie lineare
Zeit O(n) .
Beispiel
Eine dTM für die Sprache L = { w ∈ {a, b}∗ : w = sp(w ) } aller
Palindrome über Σ = {a, b} könnte wie folgt operieren:
Zeichen am rechten Rand löschen und im Zustand speichern;
linken Rand suchen, und dortiges Zeichen mit dem gespeicherten Wert
vergleichen; im Erfolgsfall linkes Randzeichen löschen und mit dem
nächsten Zeichen von links symmetrisch analog verfahren.
Bei gleichzeitigem Schreiben und Bewegen erfordern die dn/2e Durchläufe
n + 1 , n − 1 , . . . 1 Schritte, was sich durch dn/2e(dn/2e + 3)/2 ∈ O(n2 )
abschätzen läßt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
143 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Anmerkungen:
Bei gleichzeitiger Bearbeitung von k Zeichen läßt sich eine
Beschleunigung um den Faktor k erreichen, da sich die Anzahl der
Durchläufe entsprechend verringert.
Bei Verwendung einer 2-Band TM kann die Eingabe einmal kopiert
und die Kopie direkt in umgekehrter Richtung mit dem Original
verglichen werden, wodurch das Speichern des am Rand gelöschten
Symbols und die jeweilige Suche nach dem anderen Rand entfällt.
Damit läßt sich eine Laufzeit der Größenordnung O(n) realisieren.
In Abschnitt 8.4 werden wir zeigen, dass folgende Definition der Klassen P
und NP unter solchen Modifikationen des Maschinenmodells robust ist.
Definition
P ( NP ) ist die Klasse der entscheidbaren formalen Sprachen L , die von
einer dTM (nTM) mit polynomialer Zeitkomplexität akzeptiert werden
können, d.h., es existiert eine d/nTM M mit L = L(M) , und ein Polynom
p so dass jede Berechnung von w nach höchstens p(|w |) Schritten hält.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
144 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Satz
P ⊆ NP
Beweis.
Klar, da jede dTM auch eine nTM ist.
Im nichtdeterministischen Fall gibt es einen alternativen Zugang: anstelle
eine Sprache aus NP zu entscheiden, kann man sie verifizieren:
Definition
Für L ⊆ Σ∗ heißt Lcheck ⊆ Γ∗ mit Σ ⊆ Γ Zertifikatssprache, falls
Lcheck ∈ P , eine entsprechende dTM heißt Verifizierer;
es existiert ein Polynom q so dass für jedes w ∈ Σ∗ gilt
w ∈L
gdw wz ∈ Lcheck
für ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |)
Ein solches z heißt Zertifikat für w .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
145 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Satz
NP besteht genau aus den Sprachen, die Zertifikatssprachen besitzen.
Beweis
Ein Verifizierer Mcheck , mit Zeitkomplexität p , für Lcheck , mit
Längenkomplexität q , liefert einen Entscheider M für L wie folgt:
B0 enthält die Eingabe w ; ihre Länge |w | und q(|w |) werden auf
auf B3 gespeichert, was O(q(|w |)) Schritte erfordert;
auf B1 wird nichtdeterministisch ein Wort z ∈ Γ∗ mit |z| ≤ q(|w |)
erzeugt (“geraten”); dies erfordert |z| ∈ O(q(|w |)) Schritte;
auf B2 wird Mcheck mit Eingabe wz simuliert.
M hält und akzeptiert genau dann, wenn die Simulation von Mcheck dies
tut und hat Zeitkomplexität in O(p(q(n))) .
Umgekehrt sei M ein Entscheider für L mit Zeitkomplexität t . Als
Zertifikate für w ∈ L verwenden wir die Wegbeschreibungen der
akzeptierenden Berechnungen von w im M-Berechnungsbaum, genauer:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
146 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Beweis (Fortsetzung)
Der M-Berechnungsbaum von w hat eine Tiefe ≤ t(|w |) . Die maximale
Verzweigungszahl sei r ∈ N . Jeder Weg von der Initialkonfiguration zu einer
Haltekonfiguration, also jede Berechnung, kann nun durch ein Wort in
{0, . . . , r − 1}∗ der Länge ≤ t(|w |) eindeutig beschrieben werden (aber
nicht jedes derartige Wort muß einer Berechnung entsprechen). Lcheck
besteht dann aus den Wörtern wz ∈ (Σ + r )∗ mit w ∈ L und z
Wegbeschreibung einer akzeptierenden Berechnung für w .
Die Maschine Mcheck simuliert bei Eingabe wz den Ablauf der Maschine
M mit Eingabe w gemäß der durch z spezifizierten Berechnung und ist
somit deterministisch. Das erfordert |z| ≤ t(|w |) Simulationsschritte von
Mcheck . Deren Länge ist aber durch eine Konstante beschränkt .
Das obige maschinenbezogene Zertifikat wird in der Praxis meist sehr
unhandlich sein. Dort verwendet man meistens problembezogene Zertifikate.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
147 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Beispiel (Eine Zertifikatssprache für 3-Färbbarkeit)
Die Codierung ungerichteter Graphen G = hV , E i erfolgt mittels
Adjazenzmatrizen w und der Größenangabe n := |V | . Als Zertifikat
verwenden wir Codierungen z von Zufallszerlegungen V = R + G + B .
wz ∈ Lcheck
gdw
∀e ∈ E . e 6⊆ R ∧ e 6⊆ G ∧ e 6⊆ B
Teilmengen von V lassen sich als binäre n -Tupel codieren, während
Adjazenzmatrizen die Größe n2 haben.
Lcheck ∈ P : zu überprüfen ist, ob die Eingabe aus n2 + 3n Bits besteht,
und dann, ob die Teilmengen R, G , B ⊆ V , paarweise disjunkt sind, V
ausschöpfen, und keine Kanten {u, v } ∈ E als Teilmenge enthalten. Dies
kann durch bitweise Vergleiche geschehen, also in polynomialer Zeit.
Damit gilt 3-Färbbarkeit ∈ NP .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
148 / 236
Komplexität von Algorithmen
8.2 Die Komplexitätsklassen P und NP
Abschließend überlegen wir uns, dass zumindest P nicht mit der Klasse der
entscheidbaren Probleme übereinstimmt:
Beispiel
Folgende entscheidbare(!) Sprache gehört nicht zu P :
Lexp := { c(M) : M akzeptiert c(M) in ≤ 2|c(M)| Schritten }
P ist unter Komplementbildung abgeschlossen (warum?). Die Annahme
Lexp ∈ P impliziert dann Lexp ∈ P . Wähle eine TM M̄ mit L(M̄) = Lexp
und mit einem Polynom p̄ als Zeitkomplexität. Wähle n0 ∈ N mit
p̄(n) < 2n für alle n ≥ n0 , und
|c(M̄)| ≥ n0 (ggf. Zustände zu M̄ hinzufügen, ändert p̄ nicht)
Falls c(M̄) ∈ Lexp , wird c(M̄) von M̄ in höchstens p̄(|c(M̄)|) < 2|c(M̄)|
Schritten akzeptiert, d.h., c(M̄) ∈ Lexp , .
Falls c(M̄) ∈ Lexp , wird c(M̄) von M̄ in höchstens 2|c(M̄)| Schritten
akzeptiert, also c(M̄) ∈ L(M̄) = Lexp , .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
149 / 236
Komplexität von Algorithmen
8.3 Die Klasse FP von Berechnungsproblemen
8.3 Berechnungsprobleme und Reduzierbarkeit
Bisher hatten wir die Zeitkomplexität von E-Problemen betrachtet. Um
verschiedene E-Probleme miteinander vergleichen, genauer, sie aufeinander
reduzieren, zu können, müssen wir auch die Zeitkomplexität von
B-Problemen betrachten.
Beispiel
Unser Algorithmus zur 2-Färbung von Graphen (falls eine solche existiert)
bildet den Code eines Graphen auf den Code einer 2-Färbung ab, bzw. auf
die codierte Nachricht, dass keine solche Färbung existiert.
Definition
FP ist die Klasse aller Funktionen Σ∗ f Γ∗ , für die eine dTM M und
ein Polynom p existieren, so dass f von M berechnet wird und die
Berechnung von f (w ) ∈ Γ∗ höchstens p(|w |) Schritte benötigt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
150 / 236
Komplexität von Algorithmen
8.3 Die Klasse FP von Berechnungsproblemen
Beispiel (Starke Komponenten)
Eingabe: gerichteter Graph G = hV , E i
Aufgabe: die maximalen Mengen wechselseitig durch gerichtete Wege
miteinander verbundener Knoten (=”starke Komponenten”) berechnen
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
{Initialisierung}
i := 0
{ i : der Komponentenzähler}
{Rekursionsschritt}
while V 6= ∅ do
wähle v ∈ V ; V := V − {v } ; Ki := {v } { Ki : die neu zu startende Komponente}
for alle Knoten w ∈ V do
if gerWeg(v , w ) und gerWeg(w , v ) then
Ki := Ki + {w } ; V := V − {w }
end if
end for
i := i + 1
end while
Im Wesentlichen wird der Algorithmus für gerichteten Weg mit Laufzeit
O(n + k) in der maximal n -mal zu durchlaufenden FOR-Schleife zweimal
aufgerufen. Da die WHILE-Schleife auch maximal n -mal durchlaufen wird,
ergibt sich mit Adjazenzlisten eine Laufzeit von O(n2 (n + k)) , und mit
Adjazenzmatrizen von O(n4 ) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
151 / 236
Komplexität von Algorithmen
8.3 Die Klasse FP von Berechnungsproblemen
Beispiel
b
{a,b,c}
a
c
hat die starken Komponenten
{d,e}
e
d
{f}
f
Die starken Komponenten von G bilden die Knoten eines Graphen Ḡ :
dabei ist hK , K 0 i genau dann eine Kante von Ḡ , wenn eine G -Kante von
einem K -Knoten zu einem K 0 -Knoten existiert. Konstruktionsbedingt ist
Ḡ azyklisch, also topologisch sortierbar.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
152 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
8.4 FP-Reduzierbarkeit
Definition
Eine Sprache L ⊆ Σ∗ ist auf eine Sprache K ⊆ Γ∗ FP-reduzierbar,
Notation L / K , wenn eine Funktion Σ∗ f Γ∗ in FP existiert mit
w ∈L
gdw f (w ) ∈ K
Die Einschränkung auf Funktionen aus FP ist wichtig, denn andernfalls
wären alle entscheidbaren Sprachen wechselseitig aufeinander reduzierbar:
für echte Teilmengen L ⊆ Σ∗ und K ⊆ Γ∗ wähle u ∈ K und ū ∈ Γ∗ − K
und definiere Σ∗ f Γ∗ durch
(
u falls w ∈ L
f (w ) =
ū falls w ∈
/L
Dann gilt w ∈ L gdw f (w ) ∈ K , aber die “Reduktion” benötigt soviel Zeit
wie die Entscheidung, ob w ∈ L gilt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
153 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Die Relation / wird als Hauptwerkzeug zur Strukturierung der Klasse E
aller Entscheidungsprobleme dienen. Informell bedeutet L / K , dass L
höchstens so schwierig zu lösen ist wie K .
Da FP unter Komposition abgeschossen ist und alle Identitätsfunktionen
enthält, folgen Reflexivität und Transitivität der Relation / .
Andererseits werden wir bald sehen, dass / nicht antisymmetrisch ist. Es ist
also keine Ordnungsrelation im strengen Sinne, aber zumindest noch eine
Quasi-Ordnung auf der Klasse der Entscheidungsprobleme, bzw. eine
Ordnung den /- Äquivalenzklassen, d.h., auf den Klassen gleich schwieriger
Probleme (d.h., L / M und M / L ).
Zur besseren Orientierung erwähnen wir bereits jetzt, dass die oberen
/-Schranken der Klasse NP , d.h., die Probleme, die mindestens so
schwierig wie jedes NP-Problem sind, NP-hart heißen. Schließlich
bezeichnet man die NP-harten Probleme innerhalb der Klasse NP , also
die schwierigsten NP-Probleme, als NP-vollständig.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
154 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Beispiel (Das E-Problem Kanten-2-Färbbarkeit)
Eingabe: ungerichtete Graphen
zu entscheiden: können die Kanten derart mit 2 Farben gefärbt werden,
dass Kanten mit gemeinsamem Endpunkt verschieden gefärbt sind.
Wir zeigen Kanten-2-Färbbarkeit / 2-Färbbarkeit.
Idee: Die Kanten von G als Knoten eines sog. Kantengraphen GK
interpretieren. Formal: GK := hVK , EK i mit
VK := E
und {e, e 0 } ∈ EK
e ∩ e 0 6= ∅ ∧ e 6= e 0
gdw
Etwa
{0, 2}
2
G :
Jürgen Koslowski (TU-BS)
0
1
4
3
7→
GK :
Theoretische Informatik 2
{1, 2}
{0, 1}
{1, 3}
SS 2015
155 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Beispiel (Fortsetzung)
Korrektheit der Reduktion G 7→ GK : wir zeigen
G ist genau dann Kanten-2-färbbar wenn GK 2-färbbar ist
Für eine Zerlegung der Kantenmenge E = R + B gilt.
R + B = E ist eine Kanten-2-Färbung von G
⇔ wenn {u, v }, {x, y } einfarbig, dann {u, v } ∩ {x, y } = ∅
⇔ wenn {u, v }, {x, y } einfarbig, dann ist dies keine GK -Kante
⇔ R + B = E ist eine 2-Färbung von GK
Laufzeit: Die Adjazenzmatrizen A und AK der ungerichteten Graphen G
bzw. GK sind symmetrisch, also durch die Einträge im oberen Dreieck
bestimmt. Mit n := |V | ergibt sich in Laufzeit O(n2 )
X
|VK | = |E | =
Ai,j
i<j<n
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
156 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Beispiel (Fortsetzung)
Wir verwenden die Positionen hi, ji mit i < j < n der Einsen in A als
Knoten des Kantengraphen; diese seien lexikographisch geordnet.
Die Kanten von GK entsprechen Paaren von Einsen in derselben Zeile oder
Spalte im oberen Dreieck von A . Genauer, für i < j < l < n gilt:
Ai,j = Ai,l = 1
impliziert hi, ji
hi, li
in GK
Ai,l = Aj,l = 1
impliziert hi, li
hj, li
in GK
In jedem Fall sind drei geschachtelte Schleifen über i < n , über i < j < n
und über i < j < l < n zu durchlaufen, was eine Laufzeit von O(n3 )
liefert. Allerdings erfordert die Initialisierung der Matrix AK mit Nullen
bereits O(n4 ) Schritte.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
157 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Satz
Aus L / K ∈ P (NP) folgt L ∈ P (NP) , d.h., bzgl. / ist P ( NP ) ein
unterer Abschnitt der Klasse E aller E-Probleme.
Beweis.
Wähle eine FP-Reduktion L ⊆ Σ∗ f Γ∗ ⊇ K , die von einer dTM Mf
berechnet wird, und eine d/nTM MK mit L(MK ) = K . Diese Maschinen
mögen polynomiale Zeitkomplexität pf bzw. pK haben. Die
Hintereinanderschaltung ML von Mf und MK erfüllt
w ∈ L(ML )
gdw f (w ) ∈ L(MK ) = K
gdw
w ∈L
Da das Schreiben der Ausgabe f (w ) mindestens |f (w )| Schritte erfordert,
ist die Laufzeit von ML auf Eingabe w durch pK (pf (|w |)) beschränkt,
also hat ML ebenfalls polynomiale Zeitkomplexität.
Die Zugehörigkeit zu P bzw. NP kann somit auch durch Reduktion auf
andere P bzw. NP-Probleme nachgewiesen werden.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
158 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
8.4.1 2-Sat ∈ P
Der Nachweis von 2-Sat ∈ P verwendet die Reduktion auf ein graphentheoretisches Problem, das aufgrund früherer Ergebnisse zu P gehört.
In klassischer Logik haben wir die Implikation α ⇒ β als Abkürzung von
¬α ∨ β eingeführt. Für eine Klausel α ∨ β gilt also
¬α ⇒ β ≡ α ∨ β ≡ ¬β ⇒ α
Das motiviert uns, 2-KNF Formeln ϕ in Implikationsgraphen G (ϕ) umzuformen, mit den Literalen aller auftretendende Variablen als Knoten und je
zwei gerichteten Kanten gemäß der obigen Implikationen, etwa
ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y )
Jürgen Koslowski (TU-BS)
7→
Theoretische Informatik 2
G (ϕ) :
x
¬x
y
¬y
z
¬z
SS 2015
159 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Behauptung: ϕ ist erfüllbar gdw für jede Variable x die Literale x und
¬x in verschiedenen starken Komponenten von G (ϕ) liegen.
( ⇒ ) Wenn eine Belegung der Variablen existiert, die jeder Klausel (α ∨ β)
den Wert true zuordnet, muß insbesondere α oder β mit true belegt
sein. Damit hat G (ϕ) keine Kante von einem mit true zu einem mit
false belegten Literal. Da je zwei Knoten einer starken Komponente auf
einem gerichteten Kreis liegen, können somit die verschieden belegten
Literale x und ¬x nicht in derselben starken Komponente auftreten.
( ⇐ ) Wähle eine topologische Sortierung ord des Graphen der starken
Komponenten [α] von G (ϕ) , α Literal, und setze
x = true
gdw
ord[¬x] < ord[x]
Ist (α ∨ β) eine Klausel mit α = false , dann gilt wegen der Kanten
¬β ⇒ α und ¬α ⇒ β in G (ϕ)
ord[¬β] ≤ ord[α] < ord[¬α] ≤ ord[β]
und folglich β = true .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
160 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Auf welches Problem habe wir 2-Sat eigentlich reduziert?
Definition
SinvKomp hat als Eingabe einen gerichteten Graphen G = hV , E i und
eine selbstinverse Abbildung V f V ohne Fixpunkte.
Zu entscheiden ist, ob für jedes u ∈ V die Knoten u und f (u) in
verschiedenen starken Komponenten von G liegen.
Offenbar gehört SinvKomp zu P , da die Berechnung der starken
Komponenten in polynomialer Zeitkomplexität erfolgen kann, wie auch die
Überprüfung, ob a und f (a) zu derselben starken Komponente gehören.
Es bleibt nachzuweisen, dass unsere Reduktion ϕ 7→ G (ϕ) zu FP gehört.
Als Maß m für die Größe der Eingabe ϕ bietet sich die Länge der Formel
an, ohne die Klammern bei Infix-Notation. Die Ermittlung der Variablen in
ϕ und somit der Knoten von G (ϕ) erfordert lineare Zeit, ebenso wie das
Eintragen der zwei Kanten pro Klausel.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
161 / 236
Komplexität von Algorithmen
8.4 FP - Reduzierbarkeit
Beispiel
Die obige Formel ϕ = (x ∨ y ) ∧ (¬x ∨ z) ∧ (¬z ∨ ¬y ) ist erfüllbar, da sich
die positiven und negativen Varianten der Variablen x , y und z auf die
beiden starken Komponenten des zugehörigen Graphen G (ϕ) verteilen. Die
Belegung x = z = true und y = false und ihre Negation liefern beide den
Wert true für ϕ .
Andererseits ist ψ = (y ∨ x) ∧ (¬y ∨ z) ∧ (¬z ∨ x) ∧ (¬x ∨ ¬t) ∧ (t ∨ ¬x)
nicht erfüllbar, da G (ψ) nur eine starke Komponente besitzt:
Jürgen Koslowski (TU-BS)
x
y
z
t
¬x
¬y
¬z
¬t
Theoretische Informatik 2
SS 2015
162 / 236
Komplexität von Algorithmen
8.5 Robustheit der Klassen P und NP
8.5 Robustheit der Klassen P und NP
Wir müssen nun untersuchen, of die Definition der Klassen P und NP
gegenüber Änderungen des TM-Models robust ist. Ähnche Überlegungen
könnten für andere Algorithmus-Modelle angestellt werden. Schließlich
interessieren uns Abschlußeigenschaften der Klasse P .
Zusätzlicher Speicher: Zustandsmengen der Form Q × A erlauben es,
nur eine Komponente für die Steuerung der Maschine zu verwenden,
während man in der zweiten andere Informationen zwischenspeichern und
transportieren kann, statt dafür das Band zu verwenden. Das war aber von
Beginn an erlaubt und erweitert das Modell nicht.
Erweitertes Bandalphabet: Optionale Bandsymbole, die über Σ + {#}
hinausgehen, können die Arbeit einer TM erheblich vereinfachen, insbesondere Verschiebe-Opertationen zwecks Erhaltung eines zusammenhängenden Bandinhalts können entfallen. Der Taschenspielertrick der
Hausaufgabe, das Alpahbet Σ zu vergrößern und einen Präprozessor zu
verwenden, erzeugt aber nur linearen Overhead.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
163 / 236
Komplexität von Algorithmen
8.5 Robustheit der Klassen P und NP
Mehrspur-TM: Hier dient Bk als Bandalphabet, mit Blanksymbol
h# : i < ki . Zu Beginn steht die Eingabe auf der ersten Spur. Die
Identifikation des Alphabets Σ mit Σ × {h# : i < n − 1i} erlaubt uns
nun, Mehrspur-Maschinen als Spezialfall von Maschinen mit erweitertem
Bandalphabet aufzufassen, s.o.
Mehrband-TM: Hierbei existieren k unabhängige Schreib-Leseköpfe.
ObdA nehmen wir an, dass M pro Schritt immer nur auf einem Band
arbeitet. Andernfalls verlängert die Sequentialisierung von M die
Zeitkomplexität nur um einen Faktor k .
Die Simulation kann durch eine TM mit 2k Spuren erfolgen: Spur 2i
enthält den Inhalt von Band i , während Spur 2i + 1 nur die Kopfposition
auf Band i verzeichnet.
Satz
Jede k -Band dTM M mit mindestens linearer Zeitkomplexität t kann
durch eine Einband-TM M0 mit Zeitkomplexität t 2 simuliert werden.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
164 / 236
Komplexität von Algorithmen
8.5 Robustheit der Klassen P und NP
Beweis.
In den ungeraden Spuren wird zunächst unter dem letzten
Eingabesymbol in Spur 0 eine Kopfmarkierung gesetzt, was konstante
Zeit erfordert.
Eine M-Aktion auf Band i kann durch M0 auf den Spuren 2i und
2i + 1 simuliert werden, in derselben Zeit, die M benötigt.
Um eine nachfolgende Aktion auf Band j zu simulieren, ist der Kopf
von M0 zur Kopf-Markierung auf Spur 2j + 1 zu verschieben. Dazu
sind bei Eingabe w maximal t(|w |) Schritte nötig.
Insgesamt wird die Schrittzahl also höchstens quadriert.
Somit dürfen wir auch bei Komplexitätsargumenten auf die bequemeren
Mehrband-Maschinen zurückgreifen.
Für andere Algorithmenmodelle (RAM, reale Rechner, etc.) kann man den
Zeitbedarf bei der Simulierung durch (Mehrband-)TMs ermitteln. Dieser
stellt sich als polynomial heraus, daher bleibt P invariant.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
165 / 236
Komplexität von Algorithmen
8.5 Robustheit der Klassen P und NP
Satz
P ist abgeschlossen unter binären Vereinigungen und Durchschnitten,
Komplementbildung, Konkatenation und Kleene-Stern.
Beweis.
Für binäre Vereinigungen und Durchschnitte, sowie für Kleene-Stern vergl.
0
HA. Für die Komplementbildung verwende die Konstruktion M 7→ M̄ aus
dem Beweis der Charakterisierung entscheidbarer Sprachen durch ihre
Semi-Entscheidbarkeit und die des Komplements (Folie 35).
Konkatenation: Die dTM Mi möge immer halten und Li ⊆ Σ∗i in
polynomialer Zeit pi akzeptieren, i < 2 . Die Maschine M zerlegt die
Eingabe w ∈ (Σ0 ∪ Σ1 )∗ systematisch in zwei Teile w0 und w1 mit
w0 w1 = w und untersucht diese auf Zugehörigkeit zu Li , i < 2 . Sobald
beide Tests positiv ausfallen, wird w akzeptiert. Die Anzahl der
Zerlegungen ist durch |w | + 1 beschränkt, die Laufzeit der Tests auf
max{p0 (|w |), p1 (|w |)} .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
166 / 236
Komplexität von Algorithmen
8.6 Einige Probleme aus NP
8.6 Einige Probleme aus NP
Beispiel ( Hamiltonscher Kreis ∈ NP )
Das E-Problem Hamiltonscher Kreis hat als Eingabe einen ungerichteten
Graphen G = hV , E i mit n := |V | Knoten.
Zu entscheiden ist, ob G einen Hamiltonschen Kreis besitzt, d.h., eine
Permutation π der Knoten, so dass sie in dieser Reihenfolge durch Kanten
zu einem Kreis verbunden werden können, formal
{π(i), π(i + 1 mod n)} ∈ E
für i < |V |
Als Zertifikate eignen sich Permutationen von V . Die Überprüfung, ob die
entsprechenden Kanten existieren, kann in linearer Zeit erfolgen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
167 / 236
Komplexität von Algorithmen
8.6 Einige Probleme aus NP
Beispiel ( TSP ∈ NP )
Das Travelling Salesman Problem in seiner Entscheidungsvariante TSP hat
als Eingabe n Städte (geographische Orte) Si , i < n , eine
(symmetrische) Matrix d von Entfernungen und eine Schranke K .
Zu entscheiden ist, ob eine Rundreise existiert, die alle Städte genau
einmal besucht (ein Hamilton’scher Kreis), so dass ihre Länge, die Summe
der Entfernungen aufeinanerfolgender Städte, durch K nach oben
beschränkt ist.
Als potentielle Zertifikate eignen sich wieder Permutationen π von V . In
linearer Zeit überprüft man die Gültigkeit von
X
dπ(i),π(i+1 mod n) ≤ K
i<|V |
(Die Optimierungsvariante dieses Problems gibt keine Schranke K vor;
gesucht ist die bestmögliche Lösung.)
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
168 / 236
Komplexität von Algorithmen
8.6 Einige Probleme aus NP
Beispiel ( Sat ∈ NP )
Sat hat als Eingabe eine Boole’sche Formel ϕ(x0 , . . . , xn−1 ) in KNF
(ohne Beschränkungen in der Länge der Klauseln). Zu entscheiden ist, ob
ϕ erfüllbar ist.
Als Kandidaten für ein Zertifikat eignen sich Zufallsbelegungen der
Variablen x0 . . . xm−1 . Die Berechnung des Wahrheitswerts von ϕ kann
wiederum in polynomialer Zeit erfolgen.
Beispiel ( Zerlegbarkeit ∈ P , erst seit 2004 bekannt)
Primes hat als Eingabe eine natürliche Zahl n . Zu entscheiden ist, ob n
eine Primzahl ist.
2004 zeigten Agrawal, Kayal und Saxena Primes ∈ P . Da P unter
Komplementbildung abgeschlossen ist, gehört das Problem
Zerlegbarkeit ebenfalls zu P , bei dem zu entscheiden ist, ob n
zusammengesetzt ist. Eine Lösung liefert aber leider keine Hinweise auf
Primfaktoren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
169 / 236
Komplexität von Algorithmen
8.6 Einige Probleme aus NP
Wie wir auf Folie 30 gesehen haben, kann jede immer haltende 1-Band nTM
M durch eine immer haltende 3-Band dTM M 0 simuliert werden, indem
“breadth first” alle M-Berechnungen bis zu einer vorgegebenen Tiefe nach
akzeptierenden Haltekonfigurationen durchsucht werden.
Corollar
Jede nTM mit Zeitkomplexität t(n) kann durch eine dTM mit Zeitkomplexität O(2c·t(n) ) , c ∈ R+ geeignete Konstante, simuliert werden.
Speziell ist jede Sprache L ∈ NP durch eine dTM mit Zeitkomplexität
2p(n) , p Polynom, entscheidbar.
Beweis
P
i
t(n) )
Für |w | = n ist die Anzahl der Tupel auf B2 durch
i<t(n) r ∈ O(r
beschränkt. Jedes Tupel führt zu maximal t(n) Simulationsschritten. Der
Übergang zu einer 1-Band-Maschine quadriert die Laufzeit nochmals:
O(t(n)r t(n) ) ⊆ O(r 2·t(n) ) ⊆ O(r 4·t(n) ) ⊆ O(2c·t(n) )
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
wobei r 4 ≤ 2c
SS 2015
170 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
8.7 NP-Vollständigkeit und Cooke’scher Satz
Definition
Ein E-Problem L heißt
NP-hart, falls L obere /-Schranke von NP ist, d.h., für jedes
NP-Problem K gilt K / L ; Klassenbezeichnung NPH
NP-vollständig, falls L /-größtes Elemente von NP ist, d.h.,
L ∈ NP ist NP-hart; Bezeichnung NPV .
Satz
Existiert ein NP-vollständiges Problem L ∈ P , so folgt P = NP .
Beweis.
Nach Definition läßt sich jedes Problem K ∈ NP auf L reduzieren und
folglich in polynomialer Zeit durch eine dTM lösen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
171 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Satz (Cook’scher Satz)
Das E-Problem Sat der Erfüllbarkeit einer Boole’schen Formel in KNF ist
NP-vollständig.
Beweis
Die Zugehörigkeit zu NP war bereits oben gezeigt worden.
Für jede Sprache {0, 1}∗ ⊇ L ∈ NP bleibt zu zeigen: L / Sat
Idee: Ausgehend von einer nTM M mit m Zuständen, die L in
polynomialer Zeit p akzeptiert, konstruiert man zu jedem w ∈ Σ∗ eine
Boole’sche Formel ϕw in KNF, die eine akzeptierende Berechnung von w
durch M beschreibt. Dann ist nachzuweisen:
. w ∈ L gdw. ϕw erfüllbar (Korrektheit der Reduktion)
. ϕw kann in Zeit O(p(|w |)2 ) aus w konstruiert werden (damit gehört
die Reduktion zu FP ).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
172 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Vorbereitung: gegeben ist eine binäre 1-Band nTM M mit polynomialer
Zeitkomplexität p und L(M) = L .
. Die Zustände sind vom Anfangszustand q0 bis zum Endzustand qm−1
(dieser hat keine Übergänge) durchnummeriert.
. B = {s0 , s1 , s2 } mit s0 = # , s1 = 0 , s2 = 1 , s3 = L und s4 = R .
. Das Band sei durch Z indexiert, mit 0 an der Position des Kopfes in
der Initialkonfiguration mit Eingabe w . Es genügt, Felder im Bereich
−p(|w |) bis p(|w |) zu betrachten.
. Es gibt d Übergänge hqi(y ) , sj(y ) i 7→ hqi 0 (y ) , sj 0 (y ) i , y < d , mit
d
i, i 0
n
,
d
j
3
und d
j0
5
(Indexfunktionen)
Die Formel ϕw soll eine akzeptierende Berechnung von M auf Eingabe w
beschreiben. Dabei ist zu maximal p(|w |) Zeitpunkten der Inhalt von
2p(|w |) Bandzellen zu spezifizieren, weiterhin Zustand und Kopfposition
der Maschine und, bis auf den letzten Zeitpunkt, der aktuelle Übergang.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
173 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Dafür dienen entsprechende Variable:
Name
qit
krt
`tr , nrt , ert ,
uyt
Interpretation: in Schritt t
ist M in Zustand qi
ließt M Bandzelle r
steht #, 0, 1 in Bandzelle r
wird Übergang y ausgeführt
Anzahl
i < m, t < p(|w |)
−p(|w |) < r < p(|w |), t < p(|w |)
−p(|w |) < r < p(|w |), t < p(|w |)
y < d, t < p(|w |) − 1
ϕw wird Konjunktion der Beschreibung folgender vier Teile sein:
der Initialkonfiguration;
der Akzeptanzbedingung für w ;
der Konsistenzbedingungen (KBD’n) für M : zu jedem Zeitpunkt t
−
−
−
−
ist M in höchstens einem Zustand;
steht in jedem Feld genau ein Symbol;
steht der Kopf auf genau einer Position;
findet höchstens ein Übergang statt.
des Übergangseffekts auf Zustand, Kopfposition und Bandinhalt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
174 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Initialkonfiguration: Initialzustand bzw. -kopfposition sind bestimmt durch
q00 und k00 , während der Bandinhalt w = s0 . . . sn−1 ∈ {0, 1}∗ mittels
geeigneter Variablen nr0 bzw. er0 mit −n < r ≤ 0 spezifiziert wird. Dazu
kommt die Angabe, dass die übrigen relevanten Felder leer sind:

 

^
^

`0r  ∧ 
`0r 
−p(n)<r ≤−n
0<r <p(n)
Dies benötigt O(p(n)) triviale Klauseln. Z.B. liefert w = 010 die Formel




^
^
0
0
q00 ∧ k00 ∧ 
`0r  ∧ n−2
∧ e−1
∧ n00 ∧ 
`0r 
−p(3)<r ≤−3
Akzeptanzbedingung:
0<r <p(3)
_
t
qm−1
(1 Klausel)
t<p(|w |)
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
175 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
KBD Zustände: Für t < p(n) ist M in höchstens einem Zustand:
qit ⇒ ¬qjt
bzw.
¬qit ∨ ¬qjt
für alle i < j < m
(m(m − 1)/2 Klauseln)
KBD Feldinhalt: Für t < p(n) und −p(n) < r < p(n) gilt
(`tr ∨ nrt ∨ ert ) ∧ (¬`tr ∨ ¬nrt ) ∧ (¬nrt ∨ ¬ert ) ∧ (¬ert ∨ ¬`tr )
Diese 4 · p(n)(2p(n) − 1) ∈ O((p(n))2 ) Klauseln besagen, dass jedes
relevante Feld genau ein Symbol enthält.
KBD Kopfposition: Für t < p(n) drücken 1 + (2p(n) − 1)(p(n) − 1)
Klauseln aus, dass der Kopf in genau einer Position steht:


^
_

krt  ∧
¬krt ∨ ¬krt0
−p(n)<r <p(n)
Jürgen Koslowski (TU-BS)
−p(n)<r <r 0 <p(n)
Theoretische Informatik 2
SS 2015
176 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
KBD Übergänge: Für t < p(n) drücken d(d − 1)/2 Klauseln aus, dass
höchstens ein Übergang stattfindet:
¬uyt ∨ ¬uzt
für y < z < d
Beschreibung der Übergangseffekte: Für jeden der d Übergänge
hqi(y ) , sj(y ) i 7→ hqi 0 (y ) , sj 0 (y ) i drücken p(n) − 1 Teilformeln(!) die
Zustandsänderung für t < p(n) − 1 aus:
t+1
t
uyt ⇒ qi(y
∧
q
)
i 0 (y )
Gemäß der Definition der Implikation liefern die Distributivgesetze nun
insgesamt 2 (p(n) − 1) d äquivalente Klauseln:
t+1
t
t
¬uyt ∨ qi(y
∧
¬u
∨
q
für t < p(n) − 1 und y < d
0
y
)
i (y )
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
177 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Speziell für sj(y ) = 0 und sj 0 (y ) = L , beschreiben weitere 2(p(n) − 1)2
Teilformeln Kopfbewegung und den ursprünglichen Feldinhalt:
t
uyt ∧ krt ⇒ krt+1
für t < p(n) − 1 , − p(n) + 1 < r < p(n)
−1 ∧ nr
Nach Definition der Implikation liefern die de Morganschen Regeln und die
Distributivgesetze nun 4(p(n) − 1)2 äquivalente Klauseln:
t+1
t
t
t
t
¬ uyt ∧ krt ∨ krt+1
−1 ∧ nr ⇔ ¬uY ∨ ¬kr ∨ kr −1 ∧ nr
t
t
t
⇔ ¬uYt ∨ ¬krt ∨ krt+1
−1 ∧ ¬uY ∨ ¬kr ∨ nr
Schließlich bleibt wegen sj 0 (y ) = L der Bandinhalt unverändert:
uyt ∧ xrt ⇒ xrt+1
bzw.
¬uyt ∨ ¬xrt ∨ xrt+1
(∗)
für t < p(n) − 1 , −p(n) + 1 < r < p(n) und x ∈ {`, n, e} , was weitere
6(p(n) − 1)2 Klauseln liefert.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
178 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Falls sj(y ) ∈ {#, 1} bzw. sj 0 (y ) = R kann man analog verfahren, während
für Aktionen der Form sj 0 (y ) ∈ {#, 0, 1} insbesondere die Klauseln (∗) für
den Bandinhalt zur Zeit t + 1 anzupassen sind (HA).
Schließlich bleibt auszudrücken, dass Zustände außer q00 tatsächlich nur
aufgrund von ÜbergängenWentstehen. Leider ist es nicht möglich, für
t < p(n) − 1 die Klausel y <d uyt zu verwenden (warum?) Stattdessen soll
ein Zustand zur Zeit t + 1 nur aufgrund eines Übergangs zur Zeit t
angenommen werden können ( k(p(n) − 1) Klauseln):
_
_
uyt bzw. ¬qzt+1 ∨
uyt
qzt+1 ⇒
i 0 (y )=z
i 0 (y )=z
Hingegen kann die Änderung der Feldinhalte kann aufgrund der zu (∗)
analogen Formeln für sj(y ) ∈ {#, 1} nur jene Ursache haben, braucht also
nicht gesondert betrachtet zu werden.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
179 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Beweis (Fortsetzung)
Laufzeit: ϕw entsteht durch Konjunktion aller Klauseln. Die resultierende
Formel in KNF hat eine Länge, die quadratisch in p(n) , und damit
polynomial in n = |w | ist.
Korrektheit: Nach Konstruktion existiert eine Variablenbelegung, die ϕw
den Wert true zuordnet, wenn M bei Eingabe w eine akzeptierende
Berechnung durchführen kann.
Umgekehrt ist im Fall der Erfüllbarkeit von ϕw die Akzeptanzbedingung
T
erfüllt, d.h., es gibt eine Zeit T < p(n) mit qm−1
= true . Sofern T > 0 ,
existiert mindestens ein Übergang, der den Endzustand qm−1 produziert.
Zum Zeitpunkt T − 1 wird aber nur genau ein Zustand quT −1
angenommen und es findet genau ein Übergang uyT −1 statt. Auf diese
Weise kann man rückwärts den Zustand q00 erreichen.
Die Initialkonfiguration und die Konsistenzbedingungen garantieren dann,
dass wirklich eine Berechnung der Maschine M vorliegt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
180 / 236
Komplexität von Algorithmen
8.7 NP - Vollständigkeit und Cooke’scher Satz
Satz (Ladner 1975)
Falls P 6= NP , dann wird NP nicht von P und NPV ausgeschöpft, d.h.,
es gibt dann E-Probleme, die weder NP-vollständig sind, noch zu P
gehören.
Beispiel
Ein Kandidat für ein derartiges Problem ist Graph-Isomorphismus: die
Eingabe besteht aus zwei Graphen Gi = hVi , Ei i , i < 2 . Zu entscheiden
ist, ob es eine Bijektion V0 f V1 gibt mit hu, v i ∈ E0 gdw.
hf (u), f (v )i ∈ E1 .
Bemerkung
Im Gegensatz dazu ist das Problem Subgraph-Isomorphismus
NP-vollständig: für eine Eingabe aus zwei Graphen Gi = hVi , Ei i , i < 2 ,
ist zu entscheiden, ob es eine Injektion V0 f V1 gibt mit hu, v i ∈ E0
gdw. hf (u), f (v )i ∈ E1 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
181 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
8.8 Weitere NP-vollständige Probleme
Beispiel ( 3-Sat ist NP-vollständig)
3-Sat gehört aus demselben Grund wie Sat zu NP , vergl. S. 148.
Idee für eine Reduktion Sat / 3-Sat : Wir formen eine Klausel
ϕ := (α0 ∨ α1 ∨ · · · ∨ αk−1 ) der Länge k > 3 iterativ um zu
(α0 ∨ α1 ∨ b0 ) ∧ (¬b0 ∨ α2 ∨ · · · ∨ αk−1 )
(α0 ∨ α1 ∨ b0 ) ∧ (¬b0 ∨ α2 ∨ b1 ) ∧ (¬b1 ∨ α3 ∨ · · · ∨ αk−1 )
...
bis eine Konjunktion von k − 2 Klauseln der Länge 3 erreicht ist. Dafür
sind k − 3 neue Variablen nötig, also ist die Laufzeit pro Klausel linear.
Korrektheit: Die Existenz eines j < k mit αj = true ist äquivalent zu
b0 = true und es existiert 2 ≤ j < k mit αj = true, oder
b0 = false und es existiert j < 2 mit αj = true
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
182 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Beispiel ( 3-Färbbarkeit ist NP-vollständig)
Auf S. 124 haben 3-Färbbarkeit ∈ NP gezeigt.
Um 3-Sat auf 3-Färbbarkeit zu reduzieren, betrachten wir
H:
•
a
•
x
d
•
b
•
c
Behauptung 0: Sind a , b und c in H rot, dann auch d .
Beweis: Wenn b und c rot sind müssen die Farben blau und gelb bei den
links danebenliegenden Knoten auftreten, folglich ist x rot. Dasselbe
Argument für a und x liefert, dass d rot sein muß.
Behauptung 1: Ist einer der Knoten a , b oder c blau, kann auch d blau
gefärbt werden.
Beweis: Klar, wenn a , b und c blau sind.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
183 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Beispiel (Fortsetzung)
Ist a blau und x rot, können wir die links danebenliegenden Knoten rot
bzw. gelb und dann d blau färben. Ist b oder c blau, kann x blau
gefärbt werden, und ebenso d , unabhängig von der Farbe von a .
Reduktion: Einer Formel ϕ in KNF ordnen wir einen Graphen Gϕ zu, der
aus drei Typen von Teilgraphen besteht: Dreiecken
G
R
¬x
x
und
für jede Variable x in ϕ
G
B
und für jede Klausel (α ∨ β ∨ γ) eine Kopie von H
•
α
•
x
B
•
β
•
γ
mit Knoten α , β bzw. γ in den obigen Literal-Dreiecken.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
184 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Beispiel (Fortsetzung)
So ist etwa die Klausel (x ∨ ¬y ∨ ¬z) für den folgenden Teilgraphen
verantwortlich:
¬z
z
¬y
y
¬x
x
G
•
R
•
B
•
•
•
Jede weitere 3-Klausel liefert eine weitere Kopie des Hilfsgraphen H , die
bei B anzuheften ist, und ggf. weitere bei G anzuheftende Dreiecke für
neue Variablen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
185 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Beispiel (Fortsetzung)
Korrektheit: Ist ϕ erfüllbar, so färben wir die Knoten R , G und B mit
den Farben rot, gelb bzw. blau. Im Dreieck für die Variable x ist dann das
wahre Literal blau und das falsche rot zu färben. Wegen der Erfüllbarkeit
von ϕ ist in jeder Kopie von H ein Knoten α , β oder γ blau gefärbt,
was mit der Färbung von B konsistent ist.
Ist Gϕ 3-färbbar, dann seien oBdA die Knoten R , G und B rot, gelb und
blau gefärbt. Kein Variablen-Knoten kann dann gelb gefärbt sein, und nach
der ersten Behauptung können in keiner Kopie von H die Knoten α , β
und γ rot gefärbt sein. Also ist einer dieser Knoten blau, was nach der
zweiten Behauptung zur blau-Färbung von B konsistent ist, und damit ist
die Klausel wahr.
Laufzeit: Die Anzahl der Variablen-Dreiecke und der Kopien von H
beträgt jeweils O(|ϕ|) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
186 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Satz
k -Färbbarkeit ist NP-vollständig für jedes k > 2 .
Beweis.
Das Beispiel zeigt die NP-Vollständigkeit von 3-Färbbarkeit.
Zwecks Reduktion k -Färbbarkeit / (k + 1)-Färbbarkeit fügen wir
einen neuen Knoten zu G hinzu, den wir in linearer Zeit mit allen alten
Knoten verbinden. Der neue Graph G 0 ist genau dann (k + 1)-färbbar,
wenn G k -färbbar ist.
Definition
Ein Graph heißt planar, wenn er ohne Kantenüberschneidungen in der Ebene
gezeichnet werden kann.
Planare k -Färbbarkeit ist
trivial für k > 3
Appel, Haken 1976
;
NP-vollständig für k = 3 ;
in P für k < 3 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
187 / 236
Komplexität von Algorithmen
8.8 Weitere NP - vollständige Probleme
Beispiel (Hamilton’scher Kreis (HC) ist NP-vollständig)
Eingabe: ungerichteter Graph G = hV , E i . Zu entscheiden ist, ob ein
Rundweg (Kreis) existiert, der alle Knoten genau einmal besucht.
Aufgabe 6.5 (zum Selbststudium) zeigt einen expliziten Beweis basierend
auf [Christos H. Papadimitriou. Computational Complexity. Addison-Wesley,
1994].
Beispiel (TSP ist NP-vollständig)
TSP ∈ NP : vergl. Seite 147.
HC / TSP : ordne einem ungerichteten Graphen G = hV , E i die
Konstante K := |V | zu und die {1, 2}-wertige Kostenmatrix mit
di,j = 1
gdw {i, j} ∈ E
Korrektheit: Klar, da ein Hamilton’scher Kreis in einem Graphen mit n
Knoten die Länge n haben muß.
Die Laufzeit ist im Falle von Adjazenzmatrizen quadratisch in n , da einzig
dieJürgen
Nullen
der(TU-BS)
AdjazenzmatrixTheoretische
durch Zweien
Koslowski
Informatik 2 zu ersetzen sind. SS 2015
188 / 236
Komplexität von Algorithmen
8.9 Die Klasse coNP
8.9 Die Klasse coNP
Der Abschluß von P unter Komplementbildung sollte “von rechts wegen”
bewiesen werden, indem man die Endzustandsmenge einer dTM, die immer
hält, durch ihr Komplement ersetzt (wie im Fall regulärer Sprachen). Die
technische Konvention eines einzigen Endzustands qF erfordert den
Umweg, einen neuen Endzustand qG einzuführen, und Übergänge
hp, si 7→ hqG , ai , sofern q 6= qF und keine Übergänge aus hp, si existieren.
Die Zeitkomplexität wird davon nicht tangiert.
Wendet man dasselbe Verfahren auf eine nTM M an, die immer hält, so
braucht die Sprache L(M̄) nicht mit dem Komplement Σ∗ − L
übereinzustimmen: sobald für w ∈ L(M) auch eine nicht-akzeptierende
Berechnung existiert, gehört w auch zu L(M̄) .
Tatsächlich ist die Frage, ob NP mit coNP übereinstimmt, bisher offen.
Im negativen Fall würde P 6= NP folgen. Auf jeden Fall gilt aber
P ⊆ coNP .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
189 / 236
Komplexität von Algorithmen
8.9 Die Klasse coNP
Beispiel (Gültigkeit ist coNP-vollständig)
Eingabe: Boole’sche Formel ϕ in KNF. Zu entscheiden ist, ob jede
Belegung der Variablen ϕ den Wert true zuordnet.
Als Alphabet für Boole’sche Formeln diene Σ = {x, 0, 1, ∧, ∨, ¬, (, )} . Die
Variablen sollen die Form xw haben, w eine Binärzahl. Somit können wir
die Menge der Formeln in KNF als (reguläre!) Sprache Knf über Σ
auffassen, die die Menge Gültigkeit der gültigen Formeln enthält.
Das Komplement Gültigkeit ist die Vereinigung aus
. Σ∗ − Knf , was regulär ist und folglich zu P ⊆ NP gehört; und
. Knf − Gültigkeit = { ϕ ∈ Knf : ¬ϕ erfüllbar } ; mit Belegungen
der Variablen, die für ϕ den Wert false liefern, als Zertifikaten folgt
auch hier die Zugehörigkeit zu NP .
Da NP unter binären Vereinigungen abgeschlossen ist, folgt
Gültigkeit ∈ NP , und somit Gültigkeit ∈ coNP .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
190 / 236
Komplexität von Algorithmen
8.9 Die Klasse coNP
Beispiel (Fortsetzung)
Der Nachweis der coNP-Vollständigkeit erfordert zu zeigen, dass jedes
coNP-Problem auf Gültigkeit FP-reduziert werden kann. Aber aus
L ∈ coNP folgt L̄ / Sat , etwa vermöge einer FP-Reduktion g . Für die
Selbst-Abbildung w 7→ ¬g (w ) auf Σ∗ gilt zweifellos
w ∈ L gdw
w∈
/ L gdw
g (w ) nicht erfüllbar
gdw
¬g (w ) gültig
Leider ist dies noch keine FP-Reduktion von L auf Gültigkeit , da
¬g (w ) als Negation einer KNF-Formel i.A. nicht in KNF vorliegt; das
Hineinziehen der Negation zu den Literalen liefert sogar eine Formel in DNF,
deren äquivalente Umwandlung in KNF zu exponentiellem Längenwachstum
führen kann.
Mit Hilfe neuer Variablen läßt sich ¬g (w ) aber in eine gleicherfüllbare
Formel ψ(w ) in KNF umwandeln, die gegenüber ¬g (w ) nur linear wächst
(vergl. HA 5.5(d)). Damit liefert w 7→ ψ(w ) die gewünschte
FP-Reduktion L . Gültigkeit .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
191 / 236
Komplexität von Algorithmen
8.9 Die Klasse coNP
Der nächste Satz folgt aus der entsprechenden Aussage in NP :
Satz
Aus L / K ∈ coNP folgt L ∈ coNP , d.h., bzgl. / ist coNP ein unterer
Abschnitt der Klasse E aller E-Probleme.
Offenes Problem
Stimmt der Durchschnitt von NP und coNP mit P überein?
Satz
NP = coNP genau dann wenn es ein coNP-vollständiges Problem in NP
gibt.
Beweis.
( ⇐ ) Aus coNPV ∩ NP 6= ∅ folgt coNP ⊆ NP , da NP ein unterer
Abschnitt ist. Also gilt auch NP = cocoNP ⊆ coNP .
( ⇒ ) Das coNP-vollständige Problem Gültigkeit gehört zu NP .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
192 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
8.10 Komplexität von Optimierungsproblemen
Das TSP in seiner E-Variante wirkt etwas künstlich: die Schranke K hat
intrinsisch wenig mit dem Problem zu tun. Gesucht ist eigentlich die “beste”
Reiseroute. Ähnlich verhält es sich mit der Färbbarkeit von Graphen: hier ist
eigentlich die minimale Farbenzahl von Interesse, mit der ein Graph gefärbt
werden kann. An diese kann man sich “herantasten”, indem man die
Schranke k im zugehörigen E-Problem sukzessive verringert.
Das deutet an, dass es neben den Klassen der Entscheidungs- oder
E-Probleme und der Berechnungs- oder B-Probleme eine weitere Klasse
interessanter und wichtiger Probleme von praktischer Relevanz gibt: die
Optimierungs- oder O-Probleme.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
193 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Die Probleme MaximalesMatching und MaxFlow
Definition
Ein gerichteter Graph G = hV , E i heißt bipartite, wenn eine Zerlegung
V = V0 + V1 existiert, so dass alle Kanten nur von Knoten in V0 zu
Knoten in V1 verlaufen, formal E ⊆ V0 × V1 + V1 × V0 .
Unter einem Matching versteht man dann eine Menge paarweise disjunkter
Kanten, d.h., je zwei Kanten haben keinen gemeinsamen Endpunkt.
Bzgl. der Kantenzahl maximale Matchings kann man finden, indem man
gegebene Matchings solange mittels sog. “erweiternder Wege”in größere
Matchings umwandelt, wie möglich. Dann ist zu beweisen, dass alle derart
konstruierbaren Matchings dieselbe Kantenzahl haben.
Stattdessen werden wir das Optimierungsproblem MaximalesMatching
auf ein allgemeineres Problem reduzieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
194 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Definition
Einem Netzwerk ist ein gerichteter Graph G = hV , E i zusammen mit
zwei ausgezeichneten Knoten s, t ∈ V (für “Source” und “Target”)
ohne ein- bzw. ausgehende Kanten;
einer Kapazitätsfunktion V × V
gdw chu, v i = 0 genügt.
c
N, die der Bedingung hu, v i ∈
/E
Ein Fluß durch das Netzwerk ist eine Abbildung V × V
(F0) f hu, v i ≤ chu, v i für hu, v i ∈ V × V ;
f
Z mit
Kapazitätsbeschränkung
(F1) f hu, v i = −f hv , ui für alle u, v ∈ V ;
Schiefsymmetrie
P
(F2)
Gleichgewicht
u∈V f hu, v i = 0 für alle Knoten v ∈ V − {s, t} .
Schließlich ist die Größe des Flusses f gegeben durch
P
P
kf k := hs,v i∈E f hs, v i = hv ,ti∈E f hv , ti
Achtung: f ist ein Netto-Fluß: fließen tatsächlich 4L von u nach v und 3L
von v nach u , so gilt f (u, v ) = 1 und f (v , u) = −1 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
195 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Ford-Fulkerson Algorithmus (1956), informell
Um einem Fluß f in einem Netzwerk auf Maximalität zu prüfen versuchen
wir, einen größeren Fluß f 0 zu finden. Dann hat auch der Differenzfluß
∆f = f 0 − f positive Größe. Dieser lebt aber auf einem hinsichtlich f
modifizierten Netzwerk:
Definition
Zu einem Netzwerk hhV , E i, s, t, ci und einem Fluß f ist das abgeleitete
Netzwerk N(f ) = hhV , E 0 i, s, t, c 0 i bestimmt durch
hu, v i ∈ E 0
gdw c 0 hu, v i := chu, v i − f hu, v i > 0
Achtung: Die Bedingung chu, v i − f hu, v i > 0 kann auch erfüllt sein, wenn
hu, v i ∈
/ E und somit chu, v i = 0 gilt. Somit können in N(f ) alte Kanten
verschwinden und neue hinzukommen.
Wegen (F2) impliziert ein positiver Fluß auf N(f ) , dass t von s aus
erreichbar sein muß. Anderfalls ist der bisherige Fluß maximal.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
196 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Algorithmus für maximalen Fluß
(Initialisierung:) f0 sei der Null-Fluß.
(Rekursion:) Falls t von s in N(fn ) erreichbar ist,
− wähle einen Pfad P von s nach t in N(fn ) ;
− bestimme die minimale Kapazität k entlang der P - Kanten;
− Hinzufügen aller P - Kanten mit dem Wert k zu fn liefert fn+1 .
Beispiel
12
12
v0
12
19
v1
16
4
N(f3210 ) :
20
8
1
10
s
4
7
9
13
6
2
11
7
v0
t
4
v2
14
7
3
12
v1
12
f3210 :
12
19
7
s
11
7
v3
t
4
v2
11
7
v3
11
7
In N(f3 ) ist t von s aus nicht mehr erreichbar, also ist f3 maximal.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
197 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Die maximale Größe eines Flusses ist natürlich durch das Minimum der
Kapazitätssummen der Kanten aus s bzw. nach t beschränkt. Daher
terminiert der obige Algorithmus nach endlich vielen Schritten, da der Fluß
pro Schritt um mindestens 1 größer wird. (Für R-wertige Kapazitäten und
Flüsse gilt dieses Argument nicht mehr!)
Da obiges Argument bzgl. des Differenzflusses für jeden Fluß f und jeden
Fluß F maximaler Größe anwendbar ist, folgt sofort, dass der Algorithmus
unabhängig von der Wahl der Verbindungspfade immer ein globales
Maximum liefert, nicht nur ein lokales.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
198 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Beispiel ( MaximalesMatching / MaxFlow )
Einem bipartiten Graph G = hV0 + V1 , E ⊆ V0 × V1 i ordnen wir als
Netzwerk N(G ) den Graphen
hV0 + V1 + {s, t}, {s} × V0 + E + V1 × {t}i
zusammen mit den neuen Knoten s und t und der auf der neuen
Kantenmenge konstant 1-wertigen Kapazitätsfunktion zu.
Laufzeit: Zwei neue Knoten lassen den Graphen linear wachsen; die
Adjazenzmatrix codiert die Kapazitätsfunktion.
Korrektheit: Ein Matching M für G läßt sich durch Verbinden der
beteiligten Knoten mit s bzw. t zu einem Fluß m auf N(G ) ergänzen;
die paarweise Disjunktheit der Kanten des Matchings ist äquivalent zur
Gleichgewichtsbedingung des Flusses. Die Anzahl der Kanten in M stimmt
mit der Größe des Flusses überein, also bewirkt eine Vergrößerung des
Matchings eine Vergrößerung des Flusses und umgekehrt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
199 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Beispiel (Fortsetzung)
N(f43210 ) :
f43210 :
Wir stellen fest:
Haben alle Kanten Kapazität c , entsteht das abgeleitete Netzwerk
durch Umkehrung aller Kanten im gewählten Pfad von s nach t .
Beim Anfügen des neuen Pfades an den bestehenden Fluß heben sich
entgegengesetzt gerichtete Kanten auf.
Auch die Wahl eines absurd langen Pfades, etwa in N(f1 ) oben,
vergrößert das bisherige Matching nur um eine Kante (warum?).
Kürzere Pfade haben denselben Effekt und sind daher vorzuziehen. In
N(f3 ) ist dagegen kein kürzerer Pfad möglich.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
200 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Formalisierung von Optimierungsproblemen
Definition
Ein Optimierungsproblem hΣ, E , A, L, ci besteht aus
einem Alphabet Σ , codiert Probleminstanzen und Lösungen;
Sprachen E , A ⊆ Σ∗ der Probleminstanzen bzw. Lösungen;
einer Lösungsrelation L ⊆ E × A , die Probleminstanzen mit zulässigen
Lösungen verbindet;
einer Kostenfunktion L
c
N.
Eine TM M löst das Mini/Maximierungsproblem hΣ, E , A, L, ci , falls M
bei Eingabe von v ∈ E mit Ausgabe w ∈ A hält und gilt
. v Lw ;
. chv , w i
≤
≥
chv , w 0 i für alle w 0 ∈ A mit v L w 0 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
201 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Da die Kostenfunktion N-wertig ist, hat jede lösbare Instanz eines
Minimierungsproblems auch eine minimale Lösung, während bei
Maximierungsproblemen keine maximale Lösung zu existieren braucht.
Definition
PO ist die Klasse der Optimierungsprobleme P = hΣ, E , A, L, ci mit
E, A ∈ P ;
Es gibt ein Polynom p , so dass aus hv , w i ∈ L folgt |w | ≤ p(|v |)
(die Lösungen sind “kurz”);
die charakteristische Funktion χL und c gehören zu FP ;
P wird von einer dTM mit polynomialer Zeitkomplexität gelöst.
Definition
Das dem Mini/Maximierungsproblem P = hΣ, E , A, L, ci zugrunde
liegende E-Problem P dec hat neben v ∈ E eine Zahl k ∈ N als Eingabe.
Zu entscheiden ist, ob w ∈ A existiert mit hv , w i ∈ L und chv , w i ≤
≥ k.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
202 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Bemerkung
P ∈ PO impliziert natürlich P dec ∈ P . Sofern P 6= NP , folgt aus der
NP-Vollständigkeit von P dec dann auch P ∈
/ PO .
Beispiel ( MaxMatching ∈ PO )
Codierung einer Probleminstanz: Knotenzahl n , Adjazenzmatrix A und
binäres Partitionierungs-n -Tupel β , bzgl. dessen Bipartizität vorliegt.
Codierung von potentiellen Lösungen durch (n × n)-Matrizen M .
Syntaxcheck Probleminstanz: A hat nur Einsen in Positionen, deren
Koordinaten verschiedene β -Werte haben (der Graph ist bipartite).
Syntaxcheck potentielle Lösung: pro Zeile und Spalte tritt höchstens
eine Eins auf (das Matching besteht aus disjunkten Kanten).
A L M gdw M ≤ A komponentenweise (Teilgraph).
c(M) ist die Hälfte der Anzahl der Einsen in M (Symmetrie).
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
203 / 236
Komplexität von Algorithmen
8.10 Komplexität von Optimierungsproblemen
Beispiel (Fortsetzung)
Der Lösungsalgorithmus verwendet Erreichbarkeit ∈ P bzgl. s
und t im abgeleiteten Netzwerk; letzteres entsteht durch Umkehrung
gewisser Kanten, was in polynomialer Zeit machbar ist.
Terminologie
Optimierungsproblemen tragen Namen mit Präfix Min oder Max.
Beispiel ( MinFärbb ∈
/ PO )
Eingabe: ungerichteter Graph; zu bestimmen ist die Minimalzahl an
Farben für eine Knotenfärbung. Das zugehörige E-Problem MinFärbbdec
umfaßt 3-Färbbarkeit, was bekanntlich NP-vollständig ist.
Beispiel ( MinTSP ∈
/ PO )
Hier stimmt MinTSPdec mit dem NP-vollständigen E-Problem TSP
überein, vergl. S. 144.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
204 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
8.11 Approximation von Optimierungsproblemen
Gegeben: ein Optimierungsproblem P mit P dec NP-vollständig
Ziel: optimale Lösung effizient approximieren, mittels einer dTM mit
polynomialer Zeitkomplexität
Wir unterscheiden verschiedene Ansätze:
Heuristik: ein Algorithmus, der erfahrungsgemäß “gute” Lösungen
konstruiert, aber ohne harte Schranken für die Approximationsgüte.
Approximationsalgorithmus: dieser liefert harte Schranke für die Güte
der Approximation.
PTAS (polynomial-time approximation scheme): parametrisierter
Algorithmus, der beliebig gute Approximationen erlaubt, auf Kosten der
Laufzeit.
volles PTAS: zusätzlich hängt die Laufzeit polynomial von der
Approximationsgüte ab.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
205 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Approximationsalgorithmus für MinKÜ
Gegeben: ungerichteter Graph G = hV , E i ;
Gesucht: minimale Knotenmenge D ⊆ V , die jede Kante e ∈ E nichtleer
schneidet (Knotenüberdeckung).
Gemäß einer Übungsaufgabe ist MinKÜdec = KÜ NP-vollständig.
D := ∅ ; {bisherige Überdeckung}
while der aktuelle Graph eine Kante e hat do
3:
D := D ∪ e ; {Überdeckung um Endpunkte von e vergrößern.}
4:
G := hV − e, E 0 i ; {diese Knoten und inzidente Kanten aus G
entfernen (zwei Zeilen und Spalten der Adjazenzmatrix löschen)}
5: end while
1:
2:
Korrektheit: Jede aus E entfernte Kante schneidet D nichtleer, und alle
Kanten werden aus E entfernt.
Laufzeit: O(|E |) , denn jede Kante wird irgendwann entfernt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
206 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Güte der Approximation
Satz
Die minimale Größe opt(G ) einer Knotenüberdeckung und die Größe c(G )
der vom Algorithmus gelieferten Lösung erfüllen c(G ) ≤ 2opt(G ) .
Beweis.
D entsteht durch Vereinigung paarweise disjunkter Kanten. Jede andere
Knotenüberdeckung D 0 , speziell eine optimale, muß einen Endpunkt jeder
dieser Kanten enthalten, also mindestens |D|/2 viele Knoten.
Definition
Für ε > 0 heißt ein deterministischer Algorithmus für P mit polynomialer
Laufzeit ε-approximierend für P = hΣ, E , A, L, ci , falls
|chv , w i − opt(v )|
≤ ε wobei
|opt(v )|
Jürgen Koslowski (TU-BS)
opt(v ) := opt{ chv , w i : hv , w i ∈ L }
Theoretische Informatik 2
SS 2015
207 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beispiel
Der obige Algorithmus für MinKÜ ist 1-approximierend, denn
c(G ) ≤ 2opt(G ) impliziert c(G ) − opt(G ) ≤ opt(G ) .
Für ε < 1 ist der Algorithmus nicht ε-approximierend: G : •
c(G ) = 2 aber opt(G ) = 1 .
• liefert
Beispiel ( SiT(k) )
Das O-Problem Scheduling of Independent Tasks(k) hat ein
n -Tupel t ∈ Nn als Eingabe, zu interpretieren als Bearbeitungszeiten von
n voneinander unabhängigen Aufgaben (Tasks). Für diese stehen k
gleichmächtige Prozessoren zur Verfügung. Gesucht ist eine Abbildung
n S(t) k (Arbeitsplan oder Schedule), die die Gesamtlaufzeit T (t)
X
minimiert:
T (t) = max{
ti : j < k }
i∈S(t)−1 {j}
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
208 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Ein typischer Laufzeitplan hat etwa die Form
5
Prozessor
4
3
2
1
0
0
20
40
60
Zeit
Verschieben der letzten Aufgabe von Prozessor 4 nach Prozessor 1
verbessert in diesem Fall die Gesamtlaufzeit.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
209 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Idee für einen SiT(k)-Algorithmus: die Aufgaben gemäß Zeitbedarf
absteigend sortieren, in dieser Reihenfolge so verteilen, dass Prozessoren mit
der bisher geringsten Belastung bevorzugt werden.
Algorithmus für SiT(k)
Gegeben: t ∈ Nn ;
Gesucht: Schedule n
1:
2:
3:
4:
5:
6:
7:
8:
9:
S(t)
k, der die Gesamtlaufzeit minimiert.
t absteigend sortieren;
for m < k do
Tm = 0 ;
end for
for i < n do
wähle j < k mit Tj = minm<k Tm ;
S(i) := j ;
Tj := Tj + ti ;
end for
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
210 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Korrektheit: Die zweite FOR-Schleife sorgt dafür, dass jedem Task ein
Prozessor zugeordnet wird.
Laufzeit: Wegen der Konstanz von k haben die erste FOR-Schleife und
der Körper der zweiten FOR-Schleife konstante Laufzeit. Also benötigt die
zweite Schleife lineare Laufzeit. Die Sortierung erfordert O(n log n) .
Beispiel
h1, 3, 5, 3, 10, 7i liefert umsortiert ht0 , t1 , t2 , t3 , t4 , t5 i = h10, 7, 5, 3, 3, 1i ,
was bei k = 3 Maschinen zu folgenden Zuordnungen und Laufzeiten führt:
S(t)−1 {0} = {0}
, S(t)−1 {1} = {1, 4}
, S(t)−1 {2} = {2, 3, 5}
Prozessor
2
1
0
0
2
4
6
8
10
Zeit
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
211 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Satz
Der obige Algorithmus ist 1-approximierend.
Beweis
Wähle eine Aufgabe i , die zur Zeit T (t) endet. Falls i < k folgt
ti = T (t) , und somit T (t) = T opt . Andernfalls haben wir
Prozessor
k−1
.
.
.
3
2
1
0
0
T (t) − ti
T (t)
Da alle Prozessoren bis zur Zeit T (t) − ti beschäftigt sind, gilt
T (t) − ti ≤ T opt
Jürgen Koslowski (TU-BS)
und folglich
Theoretische Informatik 2
T (t) − T opt ≤ ti
SS 2015
212 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beweis (Fortsetzung)
Nach Voraussetzung muß zudem ti ≤ T (t) − ti und folglich ti ≤ T opt
gelten, denn sonst wäre die Aufgabe i früher verplant worden. Damit also
T (t) − T opt
T opt
≤
ti
ti
≤ =1
T opt
ti
Ohne Beweis stellen wir fest, dass der Algorithmus sogar 13 -approximierend
ist. Man spricht in diesem Zusammenhang auch von der Güte der
Approximation.
Ziel: PTAS für k = 2 . Dazu: Optimalalgorithmus für SiT(2) verwenden:
finde alle Teilsummen von t ∈ Nn mit dynamischer Programmierung;
P
jede minimale Teilsumme ≥ τ := 12 i<n ti liefert das Minimum; es
kann verschiedene Möglochkeiten geben, das zu erreichen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
213 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Für t ∈ Nn sei im Folgenden Bj die Liste der möglichen Teilsummen des
Anfangsstücks hto , t1 , . . . , tj−1 i , und || bezeichne die Konkatenation von
Listen.
Optimalalgorithmus für SiT(2)
Gegeben: t ∈ Nn ;
Gesucht: Schedule n S(t) 2, der die Gesamtlaufzeit minimiert.
P
1: τ := 12
i<n ti ; B0 = h0i ;
2: for j < n do
3:
Bj+1 := BJ ||(tj + Bj ) = Bj ||h b + tj : b ∈ Bj i ;
4: end for
5: finde die kleinste Komponente b∗ in Bn mit b∗ ≥ τ ;
6: finde eine Teilfolge von hti : i < ni mit Summe b∗ durch
Backtracking durch die Bi ; ordne diese dem Prozessor 0 zu
Korrektheit: Klar. Laufzeit: O(n · τ ) , aber dies ist exponentiell in der
Länge der (vernünftigen nicht-unären) Codierungen der ti !
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
214 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beispiel
Für t = h10, 53, 37, 22i erhalten wir τ = 122/2 = 61 sowie
B0 = h0i
B1 = h0, 0 + 10i
B2 = h0, 10, 0 + 53, 10 + 53i
B3 = h0, 10, 53, 63, 0 + 37, 10 + 37, 53 + 37, 63 + 37i
B4 = h0, 10, 53, 63, 37, 47, 90, 100, 22, 32, 75, 59, 69, 112, 122i
Damit ordnet die optimale Lösung den beiden Prozessoren die Aufgaben der
Längen 22 und 37 bzw. 10 und 53 zu.
Idee: ε-Approximation für Eingabe t ∈ Nn durch Optimallösung für linear
verkürzte Eingabe t 0 = rnd( λ1 · t) ∈ Nn mit λ > 1 realisieren. Durch die
Verkürzung der Eingabewerte um den Faktor λ gehen Bits verloren
(Rundungsfehler), daher wird S(t 0 ) i.A. nicht mit S(t) übereinstimmen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
215 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Der relative Fehler der Kosten hat dann die Form
|c(t) − opt(t)| |λ · opt(t 0 ) − opt(t)|
|λ · opt(t 0 ) − opt(t)|
le
≤
|opt(t)|
|opt(t)|
τ
Nun müssen wir durch geeignete Wahl von λ sicherstellen, dass der Zähler
nach oben durch τ ε beschränkt ist, damit der relative Fehler ≤ ε bleibt.
Der Vergleich entsprechender Teilsummen b∗0 und b∗ für t 0 bzw. t aus
den jeweiligen Optimalalgorithmen liefert
|λ · b∗0 − b∗ | = λ · |b∗0 − b∗ /λ| ≤
λ·n
2
(∗)
da b∗0 eine Summe aus höchstens n gerundeten Werten ist. Setze
λ := max{1, 2τ /n}
Falls 1 ≥ 2τ /n gilt, ist die optimale Lösung des ursprünglichen Problems
zu bestimmen, was dem Zähler des obigen Bruchs den Wert 0 zuweist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
216 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Lineare Verkürzung durch Abschneiden von Ziffern/Bits umgeht reelle
Arithmetik: statt rnd ist dann b−c zu verwenden, wodurch in (∗) der
Faktor 12 entfällt.
Für die β Basis der Zahlencodierung erhält man den Skalierungsfaktor
λ := β r
mit
r := max{ x ∈ N : β x ≤ τ ε/n }
Die Zeitkomplexität liegt nun in O(n · τ /λ) = O(n/ε) , was linear ist.
Definition
Ein PTAS für ein O-Problem P = hΣ, E , A, L, ci ist ein Algorithmus M
mit Eingabe v ∈ E und ε > 0 , dessen Ausgabe w ∈ A mit hv , w i ∈ L
einen relativen Fehler ≤ ε aufweist. Weiterhin muß für jedes ε > 0 ein
Polynom pε existieren, so dass M( , ε) eine Laufzeit in O(pε ) hat.
Ein PTAS heißt voll, falls die Laufzeit des Algorithmus polynomial in |v |
und in 1/ε ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
217 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beispiel
Der oben beschriebene Algorithmus für SiT(2) ist ein volles PTAS.
Beispiel
Das O-Problem MinBinPAcking hat als Eingabe ein Tupel a ∈ Nn von
“Gewichten” und eine “Kapazität” C ∈ N . Gesucht ist die Minimalzahl an
“Körben” der Kapazität C , die alle Gewichte aufnehmen können.
Diese Problem besitzt ein PTAS dessen Laufzeit exponentiell in 1/ε ist.
Unter der Voraussetzung P 6= NP existiert kein volles PTAS für
MinBinPAcking (ohne Beweis).
Satz
Unter der Voraussetzung P 6= NP existiert für kein ε > 0 ein
ε-approximierender Algorithmus für MinTSP.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
218 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beweis
Indirekt: wir nehmen an, A sei ein ε-approximierender Algorithmus für
MinTSP. Dann läßt sich das E-Problem HamiltonscherKreis (HK) in
polynomialer Zeit von einer dTM lösen, im Widerspruch zu seiner
NP-Vollständigkeit.
Zu einem ungerichteten Graphen G = hV , E i definieren wir die
Entfernungsmatrix


falls u = v
0
du,v := 1
falls {u, v } ∈ E


2 + dεne sonst
Die von A berechnete Rundreise möge die Länge K haben.
Behauptung: G hat genau dann einen HK, wenn K ≤ n(1 + ε) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
219 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Beweis (Fortsetzung)
( ⇒ ) Besitzt G einen HK, so hat die optimale Rundreise die Länge n .
Dann gilt
|K − n|
K
=
− 1 ≤ ε gdw K ≤ n(1 + ε)
n
n
( ⇐ ) Ohne HK in G hat die optimale Rundreise mindestens die Länge
2 + dεne + n − 1 ≥ 1 + n + εn = 1 + n(1 + ε) > n(1 + ε)
Der resultierende Algorithmus für HK berechnet also d wie oben, wendet
A auf die entsprechende Instanz von MinTSP an und prüft, ob die Länge
des gefundenen Rundwegs durch n(1 + ε) beschränkt ist.
Die Korrektheit ist klar, und die Laufzeit ist polynomial.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
220 / 236
Komplexität von Algorithmen
8.11 Approximation von Optimierungsproblemen
Die Voraussetzung P 6= NP liefert eine Einteilung der O-Probleme in eine
strikt wachsende Hierarchie von Klassen mit Trennbeispielen:
PO
vPTAS
PTAS
det. Polynomialzeit-Lösungsalgorithmen
volle PTAS
SiT(2)
Polynomialzeitapproximationsschemata
APX
es ex. ein ε-approximierender Algo
NPO
ndet. Polynomialzeit-Lösungsalgorithmen
Jürgen Koslowski (TU-BS)
MaxMatching
Theoretische Informatik 2
MinBinPacking
MinKÜ
MinTSP
SS 2015
221 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
8.12 Raumkomplexität
Speicherbedarf von Algorithmen ist das zweite wichtige Effizienzkriterium.
Definition (1. Versuch)
Eine Funktion N t R+ wird als Raumkomplexität einer nTM M
bezeichnet, wenn der Kopf von M für jede Eingabe w ∈ X n höchstens auf
t(n) verschiedene Felder zugreift. (Á priori muß M nicht immer halten!)
(N)PSPACE bezeichnet die Klasse aller E-Probleme, die von einer
(n)dTM mit polynomialer Raumkomplexität akzeptiert werden können.
In Analogie zur oben verwendeten Schreibweise findet man auch die
Bezeichnungen PTIME und NPTIME für P bzw. NP .
Da eine TM pro Schritt nur ein Feld beschreiben kann, gilt automatisch
P = PTIME ⊆ PSPACE und NP = NPTIME ⊆ NSPACE
Obwohl die Turingmaschinen hier nicht immer halten müssen, gilt
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
222 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Satz
PSPACE-Sprachen sind entscheidbar.
Beweisskizze
Für jede Eingabe kann nur endlicher Teil des Bandes erreicht werden, also
gibt es auch nur endlich viele mögliche Konfigurationen. Berechnet man
zunächst eine Schranke für deren Anzahl und zählt dann die Schritte, so
kann man feststellen, wann sich eine Konfiguration wiederholt haben muß.
Im deterministischen Fall kann die Eingabe dann nicht mehr akzeptiert
werden, insofern kann man die Berechnung abbrechen.
Für eine nTM M versagt dieses Argument, weil Berechnungszweige
ignoriert werden können. Der übliche Übergang zur Determinisierung Md ,
führt hier leider nicht weiter: die Schranke für die Anzahl der erreichbaren
Konfigurationen ist exponentiell in der Raumkomplexität, aber die Buchführung über die Berechnungstiefe in Md erfolgte unär! Statt hier etwa zu
binärer Darstellung überzugehen, wählen wir einen anderen Ausweg.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
223 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Zuvor aber eine vereinfachende Annahme über Turingmaschinen:
Lemma
Jede 1-Band TM mit Raumkomplexität t(n) ≥ n ist äquivalent zu einer
1-Band TM mit derselben Raumkomplexität, die nur mit leerem Band
halten kann.
Beweisskizze
Die Eingabe w ∈ Σ∗ wird am rechten und am linken Rand durch spezielle
Randmarkierer begrenzt. Nach Rückkehr zum rechten Rand von w wird die
Ursprungsmaschine ausgeführt, wobei die Randmarkierer nach Bedarf
verschoben werden. Hält diese Berechnung, wird der Bandbereich zwischen
den Randmarkierern (einschließlich) gelöscht.
Im Gegensatz zum bislang unbestimmten Verhältnis zwischen nichtdeterministischen und deterministischen Turing-Maschinen bei der
Zeitkomplexität, herrscht bei der Raumkomplexität Klarheit:
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
224 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Satz (Savitch, 1970)
Jede nTM mit polynomialer Raumkomplexität p kann von einer dTM mit
Raumkomplexität p 2 simuliert werden, also PSPACE = NPSPACE .
Beweis
Die nTM M habe Raumkomplexität p(n) ≥ n und möge nur bei leerem
Band halten, d.h., KF = hqF , #i ist die einzige Haltekonfiguration.
Zwecks Abschätzung der Anzahl κ der von der Initialkonfiguration bei der
Berechnung von w mit |w | = n aus potentiell erreichbaren
Konfigurationen setzen wir r := |Q| und m := |B| .
κ ≤ r · mp(n) · p(n) < r · mp(n)
2
< 2C ·p(n)
für geeignetes C ∈ N
Wir betrachten jetzt nur noch solch potentiell erreichbare Konfigurationen.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
225 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Beweis (Fortsetzung)
Genau dann, wenn eine Konfiguration K 0 von K aus in höchstens 2i
Schritten erreicht werden kann, setzen wir abkürzend
REACH(K , K 0 , i) = true
Also akzeptiert M die Eingabe w genau dann, wenn gilt
REACH(Kw , KF , C · p(n)) = true
wobei Kw die Initialkonfiguration bei Eingabe w ist.
Gesucht: ein deterministischer Algorithmus für REACH(K , K 0 , i) , der für
Werte i < C · p(n) selbst polynomiale Raumkomplexität hat.
Wir geben eine rekursive Konstruktion für einen derartigen Algorithmus an:
i = 0 : REACH(K , K 0 , 0) = true gdw K = K 0 oder K ` K 0 .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
226 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Beweis (Fortsetzung)
i + 1 : Wir nehmen an, für i ≥ 0 haben wir einen REACH-Algorithmus
mit der gewünschten Eigenschaft. Nun ist REACH(K , K 0 , i + 1) genau
dann wahr, wenn eine Zwischenkonfiguration K̄ existiert mit
REACH(K , K̄ , i) = true
und REACH(K̄ , K 0 , i) = true
Insgesamt sind dann höchstens 2 · 2i = 2i+1 Schritte nötig, um K 0 von K
aus zu erreichen.
Der Algorithmus für i + 1 probiert nun systematisch alle von der Kw aus
potentiell erreichbaren Konfigurationen K̄ durch.
Raumkomplexität: Die Spezifikation einer erreichbaren Konfiguration
benötigt maximal p(n) + 2 Bandzellen. Beim rekursiven Aufruf kann der
Platz vom letzten Versuch wiederverwendet werden. Der Zähler i ist durch
C · p(n) ∈ O(p(n)) beschränkt.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
227 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Beweis (Fortsetzung)
Der Raumbedarf S(i) erfüllt damit die Rekursion
S(0) = C · p(n)
und S(i + 1) = C · p(n) + S(i)
Dies läßt sich auflösen zu
S(C · p(n)) = C · p(n) + S(C · p(n) − 1)
= C · p(n) + C · p(n) + S(C · p(n) − 2)
...
= (C · p(n))2
Damit ist die Behauptung bewiesen.
Nun folgt unmittelbar NP ⊆ NPSPACE = PSPACE ⊆ REC . Für die
Oberklasse PSPACE von NP läßt sich nun in analoger Weise der Begriff
der Vollständigkeit formulieren.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
228 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Definition
Die Syntax quantifizierter Boole’scher Formeln (qBF) hat die BNF
ϕ ::= x | true | false | ¬ϕ | ϕ ∧ ϕ | ϕ ∨ ϕ | ϕ → ϕ | ∀x.ϕ | ∃x.ϕ
Die Menge der freien Variablen einer qBF ϕ ist gegeben durch
Frei(true) = Frei(false) := ∅
Frei(x) := {x}
Frei(¬ϕ) := Frei(ϕ)
Frei(ϕ ∧ ψ) = Frei(ϕ ∨ ψ) = Frei(ϕ → ψ) := Frei(ϕ) ∪ Frei(ψ)
Frei(∀x.ϕ) = Frei(∃x.ϕ) := Frei(ϕ) − {x}
Nicht freie Variablen sind durch einen Quantor gebunden.
ϕ heißt geschlossen, falls jede auftretenden Variable gebunden ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
229 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Schreibweise: ϕ(x0 , x1 , . . . , xn−1 ) bedeutet Frei(ϕ)⊆{ xi : i < n} .
Fakt
Jede geschlossene qBF ϕ kann in sogenannter Prenex-Normalform (PNF)
dargestellt werden
ϕ = Q0 x0 . Q1 x1 . . . . Qn−1 xn−1 . ψ(x0 , . . . , xn−1 )
wobei ψ keine Quantoren enthält. Mit Hilfe von “Dummy-Variablen” ist es
zudem möglich, alternierende Prenex-Normalform (aPNF) zu erreichen, bei
der Existenz- und All-Quantor alternieren:
ϕ = ∃x0 . ∀x1 . . . . Qm−1 xm−1 . ψ(x0 , . . . , xm−1 )
Beispiel
Das E-Problem QuantifizierteBoolescheFormel (QBF) hat als
Eingabe eine geschlossene quantifizierte Boolesche Formel ϕ in PNF. Zu
entscheiden ist, ob ϕ wahr ist.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
230 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Satz
QBF ∈ PSPACE .
Beweis.
Enthält ϕ = Q0 x0 . Q1 x1 . . . . Qn−1 xn−1 . ψ(x0 , . . . , xn−1 ) keine Quantoren,
gilt ϕ ∈ {true, false} . Andernfalls entfernt man Q0 und bewertet
A = Q1 x1 . . . . Qn−1 xn−1 . ψ(false, . . . , xn−1 )
B = Q1 x1 . . . . Qn−1 xn−1 . ψ(true, . . . , xn−1 )
Falls Q0 = ∃ , bildet man A ∨ B , andernfalls A ∧ B .
Die Laufzeit dieses rekursiven Verfahrens beträgt O(2n ) , bei einer
Rekursionstiefe von n (Anzahl der Quantoren). Da die Auswertung
quantorenfreier Formeln logarithmischen Platz in der Anzahl der Variablen
benötigt (HA), liegt der Platzbedarf in O(n + log n) = O(n) .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
231 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Satz
QBF ist PSPACE-hart und somit PSPACE-vollständig.
Beweis (vergl. Sipser)
Für L ∈ PSPACE ist L . QBF nachzuweisen.
Betrachte eine dTM M für L ⊆ Σ∗ mit polynomialer Raumkomplexität p .
Analog zum Beweis des Cooke’schen Satzes können Zustand, Bandinhalt
und Kopfposition von M durch Boolesche Formeln in KNF beschrieben
werden, also auch die Konfigurationen von M .
Wir führen neue Variable ci für Konfigurationen ein und konstruieren
daraus entsprechend der Idee im Beweis des Satzes von Savitch eine qBF
ρhc0 ,c1 ,ii , die ausdrückt, dass c1 von c0 aus in höchstens 2i Schritten
erreicht werden kann. Für w ∈ Σn ist dann w ∈ L äquivalent zur Wahrheit
von ρhcw ,cF ,C ·p(n)i .
Behauptung: w 7→ ρhcw ,cF ,C ·p(n)i braucht polynomiale Zeit in |w | = n .
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
232 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Beweis (Fortsetzung)
Idee: Abschätzung der Zeit durch Abschätzung der Länge.
Wie zuvor ist der Fall ρhc0 ,c1 ,0i trivial.
i 7→ i + 1 mittels Zwischenkonfigurationen:
ρhc0 ,c1 ,i+1i = ∃m. (ρhc0 ,m,ii ∧ ρhm,c1 ,ii )
(vorläufig)
Das Einfügen von Zwischenkonfigurationen verdoppelt aber die Länge der
Formeln, was zu exponentiellem Wachstum führt. Das läßt sich mit Hilfe
universeller Quantifizierung verhindern:
ρhc0 ,c1 ,i+1i = ∃m. ∀x.∀y . (hx, y i = hc0 , mi ∨ hx, y i = hm, c1 i) ⇒ ρhx,y ,ii
was die Länge pro Schritt um eine Konstante vergrößert, bei O(p(n))
Schritten also |ρhcw ,cF ,C ·p(n)i | ∈ O(p(n)) . Das Hinschreiben braucht also
O(p(n)) Zeit.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
233 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
QBF kann als Erweiterung von Sat aufgefaßt werden: eine KNF-Formel
ϕ(x0 , . . . , xt−1 ) ist genau dann erfüllbar, wenn folgende Formel wahr ist
∃x0 . ∃x1 . . . . ∃xt−1 . ϕ(x0 , . . . , xt−1 )
qBF-Formeln in aPNF lassen sich auch spieltheoretisch interpretieren: zwei
Spieler, Eloise und Abelard, wählen abwechsend Werte für die Variablen in
ψ = ∃x0 . ∀x1 . . . . Qm−1 xm−1 . ϕ(x0 , . . . , xm−1 )
Eloise für die durch Existenzquantoren gebundenen Variablen, Abelard für
die übrigen. Eloise gewinnt, falls in der so bestimmten Belegung ϕ wahr ist,
andernfalls gewinnt Abelard.
Definition
Die Sprache FormelSpiel besteht aus denjenigen geschlossenen Formeln
in aPNF, für die Eloise eine Gewinnstrategie hat.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
234 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Man überzeugt sich leicht davon (HA!), dass FormelSpiel PSPACE vollständig ist.
Die kleinste Raumkomplexität, die sich mit der ursprünglichen Definition
formulieren läßt, ist linear, O(n) , denn der Platz der Eingabe zählt mit!
Doch eine sinnvolle Definition sub-linearer Raumkomplexität erfordert, die
Handhabung der Eingabe zu überdenken:
Definition (Raumkomplexität revisited)
Eine 2-Band Turingmaschinen mit einem read-only Eingabeband und einem
normalen Arbeitsband hat Raumkomplexität f (n) , falls jede Eingabe der
Länge n höchstens f (n) Raum auf dem Arbeitsband benötigt. Wenn es
um die Berechnung von Funktionen geht, ist zusätzlich noch ein write-only
Ausgabeband vorzusehen.
Im Gegensatz zu endlichen Automaten und Kellerautomaten wird die
Eingabe nicht notwendig als Strom verarbeitet, da auf dem Eingabeband
Schritte in beiden Richtungen möglich sind, two-way statt one-way.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
235 / 236
Komplexität von Algorithmen
8.12 Raumkomplexität
Weitere interessante Raum-Komplexitätsklassen:
Definition
Die Klasse L ( NL ) besteht aus allen E-Problemen, die von einer
(nicht)deterministischen Turingmaschine mit Raumkomplexität in O(log n)
gelöst werden können.
Beispiel
Sowohl die Sprache der korrekt geklammerten Ausdrücke über {), (} als
auch die die Sprache {w ∈ {a, b}∗ : |w |a = |w |b } liegen in L : Man muß
nur die Anzahl noch offener Klammern bzw. die Anzahlen von Symbolen a
sowie b binär bestimmen und mit 0 bzw. miteinander vergleichen.
Man kann zeigen, dass Erreichbarkeit in gerichteten Graphen und
2-Sat in NL liegen und sogar NL-vollständig sind, woraus L ⊆ NL ⊆ P
folgt. Es ist offen, ob diese Inklusionen echt sind.
Jürgen Koslowski (TU-BS)
Theoretische Informatik 2
SS 2015
236 / 236
Herunterladen