Einführung in die Theoretische Informatik

Werbung
Einführung in die Theoretische Informatik
Dalitz
3.2
3.3
Prof. Dr. Christoph Dalitz
Hochschule Niederrhein
Skript zur Vorlesung THI – Version 0.7
Zusammenfassung
Während die meisten Teilbereiche der Informatik sich der handwerklichen Frage widmen,
wie ein konkretes Problem mit bestimmten konkreten Hilfsmitteln gelöst werden kann, stellt
die theoretische Informatik die philosophische Frage, welche Probleme überhaupt mit Rechnern gelöst werden können und wie man diese Probleme klassifizieren kann. Dieses Script
gibt eine Einführung in die Themen Berechenbarkeit, Komplexität und formale Sprachen.
1
2
3
Mathematische Allgemeinbildung
0.1 Definition, Aussage, Satz . . .
0.2 Beweismethoden . . . . . . .
0.2.1 Gegenbeispiel . . . . .
0.2.2 Direkter Beweis . . .
0.2.3 Indirekter Beweis . . .
0.2.4 Induktionsbeweis . . .
Analyse eines Algorithmus . . . . . . . .
Komplexitätsklassen . . . . . . . . . . .
3.3.1 Polynomial versus Exponentiell .
3.3.2 Klassenüberblick . . . . . . . . .
3.3.3 Die Klasse P . . . . . . . . . . .
3.3.4 Die Klasse N P . . . . . . . . . .
3.3.5 Eigenschaften der Klasse N P . .
3.3.6 NP-Vollständigkeit . . . . . . . .
3.3.7 Weitere NP-vollständige Probleme
Version Datum
0.5
2004.03.17
0.6
2005.02.10
.
.
.
.
.
.
2
2
4
4
4
5
5
Einführung
1.1 Rechner Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Was sind Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Berechenbarkeit
2.1 Berechenbarkeitsbegriff . . . . . . . . . . . . . . . . . .
2.2 Existenz unlösbarer Probleme . . . . . . . . . . . . . .
2.3 Turing Maschinen . . . . . . . . . . . . . . . . . . . . .
2.4 Turing-Maschinen und Computer . . . . . . . . . . . . .
2.5 Turing-Berechenbarkeit . . . . . . . . . . . . . . . . . .
2.6 Das Halteproblem . . . . . . . . . . . . . . . . . . . . .
2.6.1 Codierung von Turing-Maschinen als Binärstring
2.6.2 Das spezielle Halteproblem . . . . . . . . . . .
2.6.3 Das allgemeine Halteproblem . . . . . . . . . .
2.7 Weitere unentscheidbare Probleme . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
9
10
11
11
12
12
13
14
15
Komplexität
16
3.1 Maße für Komplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1
FH Niederrhein
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
17
19
19
21
23
24
26
Version und Änderungen
Inhaltsverzeichnis
0
THI
0.7
2007.07.11
Autor Änderung
Dalitz Ersterstellung Kap. 1-3 aus Mitschrift Karsten
Dalitz Anpassung Definition Landau-Symbole an Definition aus GDI (Rethmann)
Dalitz Korrektur kleinerer Tippfehler
0 Mathematische Allgemeinbildung
0.1 Definition, Aussage, Satz
Definitionen beschreiben Objekte und Begriffe. Sie sind im Prinzip willkürlich wählbar, aber:
• sollen sinnvoll sein, d.h. tatsächlich Objekte beschreiben, mit denen man arbeiten will
• sollen allgemein sein, d.h. nur die wesentlichen abstrakten Eigenschaften erfassen
Oft ist das Finden geeigneter Definitionen ein schwieriger Prozess (Beispiel: Wahrscheinlichkeitsgrundlagen: >300 Jahre). Eine gefundene Definition ist oft nicht unmittelbar einsichtig. Als
Beispiel dafür betrachten wir die Definition der “Mächtigkeit” (“Größe”) einer Menge.
Definition 0.1 (gleichmächtige Mengen)
Zwei Mengen heißen gleichmächtig (gleich groß), wenn es eine Eins-zu-Eins-Abbildung (Bijektion) zwischen ihnen gibt.
Tipps bei Verständnisschwierigkeiten:
a) Anhand einfacher Beispiele die anschauliche Bedeutung erfassen
b) Versuchen, eine eigene “naive” Definition zu formulieren
2
FH Niederrhein
THI
Aussage 1 ist “hinreichend und notwendig” für Aussage 2
(Um solch eine “Äquivalenzaussage” zu beweisen, müssen immer beide Richtungen bewiesen werden!)
Dalitz
FH Niederrhein
THI
Dalitz
d) Die Aussage für die Gleichheit von Mengen A, B : A = B beinhaltet zwei Teilaussagen:
A ⊆ B und B ⊇ A (beide müssen bewiesen werden)
Äquivalenzaussagen können gegebenenfalls auch als alternative Definitionen verwendet werden.
Z.B. können die Begriffe “endlich” und “unendlich” auf verschiedene Arten definiert werden.
gleichmächtig
(Paarbildung geht auf)
nicht gleichmächtig
(Paarbildung geht nicht auf)
Abbildung 1: Anwendung der Definition “gleichmächtiger” Mengen
c) Schwächen der eigenen Definition finden um einzusehen, warum eine “komplizierte” Definition gewählt wurde
Anwendung auf Definition der “Mächtigkeit”:
Definition 0.2 (endlich und unendlich)
Eine Menge A heißt endlich, wenn es eine Zahl n ∈ N gibt, so dass A gleichmächtig zu
{1, 2, . . . , n} ist. Andernfalls heißt A unendlich
Satz 0.1
Eine Menge ist unendlich
⇔
Es gibt eine echte Teilmenge, die gleichmächtig zur Menge selber ist.
Manche Autoren verwenden Satz 0.1 als Definition der Unendlichkeit. Dann wird die Definition
0.2 zu einer (beweisbaren) Aussage.
zu a) siehe Abb. 1
zu b) “naive” Definition: “gleiche Anzahl Elemente”
zu c) Die naive Definition klappt nicht bei unendlichen Mengen! ⇒ Ungeeignet, weil nicht allgemein genug
Oft ist nicht klar, ob eine Aussage wahr oder falsch ist. Wenn man eine Vermutung über den
Wahrheitswert hat, kann man versuchen, dies zu beweisen.
Als wahr bewiesene Aussagen heißen Satz oder Theorem. Sätze, die nur zum Beweis anderer
Sätze dienen, werden manchmal auch Hilfssatz oder Lemma genannt.
Über definierte Objekte und Begriffe werden mathematische Aussagen gemacht. Aussagen sind
wahr oder falsch.
0.2 Beweismethoden
Beispiele für Aussagen:
5 ∗ 3 = 10
Die Mengen A und B sind gleich groß.
0.2.1
Gegenbeispiel
Ein Gegenbeispiel zeigt, dass eine Aussage falsch ist. Es reicht, ein einziges Gegenbeispiel anzugeben.
Beispiele für keine Aussagen:
1 + 20
Sei A eine Menge.
So kann die Aussage “Jede ungerade Zahl ist eine Primzahl” durch das Gegenbeispiel: “33 ist
durch 3 teilbar und ungerade” widerlegt werden.
Typische Formen von Aussagen:
a) Aussage 1 ⇒ Aussage 2
d.h. Aussage 1 “ist hinreichend” für Aussage2
0.2.2
b) Aussage 1 “ist notwendig” für Aussage 2 heißt:
wenn A2 gilt, dann muss auch A1 gelten, d.h. A2 ⇒ A1
Beginne mit den Voraussetzungen und folgere mit Hilfe als wahr bekannter Aussagen die Behauptung.
c) Aussage 1 ⇔ Aussage 2
Aussage 1 gilt “genau dann wenn” Aussage 2 gilt
Als Beispiel wolle wir die de Morgansche Regel A ∪ B = A ∩ B beweisen. Dazu sind zwei
Aussagen zu zeigen:
3
Direkter Beweis
4
Dalitz
THI
FH Niederrhein
a) A ∩ B ⊆ A ∪ B
Dalitz
THI
Gesamtsumme:
2+2+2=6
b) A ∩ B ⊇ A ∪ B
FH Niederrhein
Gesamtsummme:
1+3+1+1=6
Beweis von a):
x∈A∪B ⇒ x∈
/ A∪B ⇒x∈
/ A und x ∈
/B
⇒ x ∈ A und x ∈ B
⇒ x∈A∩B
Beweis der Umkehrung b): Übung
Abbildung 2: Summe der ausgehenden Kanten
b) Nimm an, dass die Aussage(n) wahr ist und folgere daraus, dass die Aussage(n + 1) wahr
ist
Als Beispiel wollen wir einen einfachen Satz über Graphen beweisen (siehe Abb. 2).
0.2.3
Satz 0.2
Die Gesamtsumme der an allen Knoten eines Graphen ausgehenden Kanten ist gerade.
Indirekter Beweis
Nimm an, dass eine Aussage falsch ist (d.h. das Gegenteil ist richtig) und folgere daraus eine falsche Aussage. Typisches Beispiel: Folgerung, dass es nicht regnet, weil ein Eintretender
trocken ist.
Aussage:
S sei eine endliche Teilmenge einer unendlichen Menge U . Daraus folgt: T = U \ S
ist unendlich.
Beweis durch Widerspruch:
Beweis durch Induktion über die Anzahl der Kanten:
a) 0 Kanten ⇒ Summe=0, also gerade
b) Die Summe sei gerade; für jede weitere hinzugefügte Kante kommen zwei Enden hinzu.
Damit bleibt die Summe der Kanten gerade.
Ein anderes Beispiel aus der Informatik ist der Beweis für die Korrektheit des Zwei-PhasenSperrprotokolls zur Nebenläufigkeitskontrolle (vgl. Vorlesung “Datenbanksysteme”).
Voraussetzungen wie in der oben genannten Aussage, d.h. S ⊆ U , U ist unendlich
und |S| = n ∈ N
Annahme: T = U \S ist endlich, d. h. |T | = m
⇒ |U | = n + m wegen U = T ∪ S und T ∩ S = ∅ (⇔ T = U \ S)
⇒ Die Aussage “U ist endlich” führt zum Widerspruch zur Voraussetzung.
√
/ Q. Einen
Ein anderes, aus der Schulmathematik bekanntes Beispiel ist der Beweis, dass 2 ∈
indirekten Beweis für diese Aussage findet man in [3] Kap. 0.4.
0.2.4
Induktionsbeweis
Der Induktionsbeweis ist bei Aussagen über induktiv definierte Mengen, z.B. N, anwendbar.
Induktive Definition von N:
• 0∈N
• mit n ∈ N ist auch n + 1 ∈ N
Beweisverfahren:
a) Zeige, dass die Aussage für n = 0 wahr ist (ggf. auch n = 1 oder n = 2 . . .)
5
6
Dalitz
THI
FH Niederrhein
Dalitz
THI
Σ1
1 Einführung
Σ2
y1
1.1 Rechner Input
x
y2
y3
Abbildung 3: In einer Relation können einem
x-Wert mehrere y-Werte zugeordnet sein.
Rechner bekommen als Input Strings (Wörter) über einem Alphabet und geben auch wieder
Strings aus. Dazu wollen wir ein paar grundlegende Begriffe definieren.
x
Ein Alphabet Σ ist eine endliche Zeichenmenge. Beispiele: Σ1 = {a, b, . . . , z}, Σ2 = {0, 1}
−→
Algorithmus
−→
y
Beispiel a) Primfaktorzerlegung von n ∈ N
Ein String (oder Wort) x ist eine endliche Zeichenfolge über einem Alphabet.
Beispiele: x1 = abrakadabra, x2 = 0010
Σ1 = {0, 1, . . ., 9}
x = Dezimaldarstellung von n
Σ2 = {0, 1, . . ., 9, |}
(“|” = Trennzeichen)
y = a1 |a2 | . . . |ak
Die Länge eines Strings, symbolisch |x|, ist die Anzahl der Zeichen.
Beispiele: |x1 | = 11, |x2 | = 4
Der Leerstring ε (griechischer Buchstabe “epsilon”) ist der String der Länge Null.
Zwei Strings x und y können konkateniert werden. Das Ergebnis z ist wieder ein String. Schreibweisen:
z = xy
FH Niederrhein
xx
. . . x} = xk
| {z
k-mal
Eine Permutation des Ergebnisses ist möglich, es gibt deshalb mehrere mögliche
Antworten y zu x. Dieses Problem ist formulierbar als Relation R auf Σ∗1 × Σ∗2 (Abb.
3):
(x, y) ∈ R
⇔
y ist Primfaktorzerlegung von x
In diesem Fall kann die Relation eindeutig gemacht werden, indem die Faktoren im
Ergebnis der Größe nach sortiert werden (Satz von der eindeutigen Primfaktorzerlegung). Dann ist das Problem als Funktion f : Σ∗1 → Σ∗2 formulierbar.
Es gilt |xy| = |x| + |y|
Die Menge aller Strings über einem Alphabet Σ wird mit Σ∗ bezeichnet. Anmerkungen:
Beispiel b) Primzahltest
a) Σ∗ ist abzählbar unendlich (Übung)
b) Die Menge aller Teilmengen (“Potenzmenge”) von Σ ist etwas anderes als Σ∗ . Insbesondere ist die Potenzmenge(Σ) für endliches Σ endlich, die Menge aller Strings aber unendlich,
weil keine Grenze für die Stringlänge festgelegt ist.
∗
∗
Eine Sprache L ist eine Teilmenge von Σ , d.h. irgendeine Menge von Strings über Σ (L ⊆ Σ ).
Beispiele für Sprachen:
a) Menge aller C-Programme.
Dabei ist das Alphabet Σ = {a − z, A − Z, ; , . . .}
b) Menge der Primzahlen
Σ = {0, 1}
L = {x|x ist Binärdarstellung einer Primzahl}
1.2 Was sind Probleme
Σ1 = {0, 1, . . . , 9}
Σ2 = {0, 1}
x = Dezimaldarstellung von n ∈ N
y = 0, wenn x faktorisierbar; y = 1, wenn x Primzahl
Dieses Problem ist formulierbar als Funktion f : Σ∗1 → {0, 1}
Beispiel a) ist ein Suchproblem. Beispiel b) ist ein Entscheidungsproblem.
Der Primzahltest kann als Entscheidungsvariante des Suchproblems Primfaktorzerlegung aufgefasst werden. Im allgemeinen ist die Suchvariante eines Problems komplexer als die Entscheidungsvariante. So ist z.B. für den Primzahltest ein polynomialer Algorithmus bekannt [8], für
die Primfaktorzerlegung jedoch nicht. Für wiederum andere Beispiele lässt sich zeigen, dass die
Suchvariante nicht “wesentlich” komplexer als die Entscheidungsvariante ist (siehe [5] Kap. 3.6).
Entscheidungsprobleme können als Spracherkennung interpretiert werden, d.h. für ein gegebenes
x ∈ Σ∗ ist gefragt, ob x ∈ L. In dieser Vorlesung beschränken wir uns meist auf Entscheidungsprobleme.
Ein Problem besteht darin, zu einem gegebenen Inputstring x ∈ Σ∗1 (Frage) eine Outputstring
y ∈ Σ∗2 (Antwort) zu ermitteln:
7
8
Dalitz
THI
FH Niederrhein
2 Berechenbarkeit
Dalitz
THI
FH Niederrhein
Annahme: es gibt Abzählung
f1 : 0 0 1 0 0 1 1 0 0 0 . . .
f2 : 0 1 0 0 0 0 0 0 1 0 . . .
f3 : 1 0 0 0 1 0 0 0 1 0 . . .
..
.
2.1 Berechenbarkeitsbegriff
siehe Folien Kap2a
dort wird auch die Churchsche These erläutert.
Konstruiere nun eine weitere Funktion fneu nach folgender Regel:
fneu (xk ) 6= fk (xk )
2.2 Existenz unlösbarer Probleme
Wir zeigen: Es gibt mehr Probleme als Algorithmen. Dazu machen wir lediglich die Annahme,
dass sich Algorithmen in irgendeiner Programmiersprache formulieren lassen. D.h. wir gehen
vom “Software-Ansatz” aus (“WHILE/GOTO-Berechenbarkeit”), machen aber keine Annahme
über die konkret benutzte Programmiersprache.
Algorithmus = Programm = String über einem Alphabet Σ
Satz 2.1
Die Menge Σ∗ aller Strings über einem Alphabet Σ ist abzählbar unendlich: card(Σ∗ ) = card(N)
d.h. es gibt eine Eins-zu-Eins-Zuordnung (Bijektion) zwischen Σ∗ und den natürlichen Zahlen.
Beweis: Übung
Satz 2.2
Die Menge F aller Funktionen F := {f : Σ∗ → {0, 1}} ist größer als die Menge der Strings
über Σ: card(F) > card(Σ∗ ).
Im obigen Beispiel wäre also fneu : 101 . . .. Dann ist fneu verschieden von allen fk
aber fneu ∈ F. Das ist ein Widerspruch zur Annahme, dass (fk ) eine Aufzählung
von F ist.
Als Konsequenz aus Satz 2.2 können wir schließen, dass es mehr Entscheidungsprobleme als
Algorithmen (Programme) gibt, denn {alle Programme} ⊆ Σ∗ .
2.3 Turing Maschinen
Alan Turing (1937): allgemeines Rechnermodell
unendliches Band
als Speicher
Kontrolleinheit
#
#
a1
a2
endliche
Zustandsmenge
#
a3
#
#
beweglicher Schreib−
und Lesekopf
Bemerkungen:
a) F ist die Menge der Entscheidungsprobleme
b) Da F größer ist als eine abzählbare Menge, sagt man auch: F ist überabzählbar.
Beweisidee:
• Nimm an, es gäbe eine Bijektion Σ∗ ↔ F
• Konstruiere mit dem Cantorschen Diagonalverfahren ein f ∈ F, das nicht zugeordnet ist
• ⇒ Widerspruch (indirekter Beweis)
Wegen Satz 2.1 existiert eine Abzählung x1 , x2 , x3 , . . . der Strings in Σ∗ . Eine gegebene Funktion f ∈ F kann also als Folge von 0 und 1 notiert werden:
f:
Σ
Γ⊇Σ
] ∈ Γ \ Σ, das heißt ] ∈
/Σ
Q
q0 ∈ Q
F ⊆Q
Bemerkungen:
a) Das Blank-Symbol wird je nach Autor unterschiedlich dargestellt: in [4] durch B, in [3]
durch , in [2] und [1] durch Beweis:
x1 x2 x3 x4
0 0 1 0
Inputalphabet:
Bandalphabet:
Blank-Zeichen:
Zustandsmenge:
Startzustand:
Endzustände:
...
b) typischerweise ist F = {qaccept , qreject }, . . .
c) q0 hat nichts mit der Eingabe zu tun, sondern ist der Zustand, in dem die Maschine vor
dem Lesen des ersten Inputzeichens ist.
Ein Arbeitsschritt der Turing-Maschine im Zustand q ∈ Q:
9
10
Dalitz
THI
FH Niederrhein
Dalitz
THI
FH Niederrhein
• Lies a ∈ Γ aus der Bandzelle
Nur a) ist eine brauchbare Berechnung.
• Schreibe b ∈ Γ in die Bandzelle
Definition 2.1 (Turing-berechenbar)
Eine Funktion f : Σ∗ −→ Σ∗ heißt Turing-berechenbar, wenn es eine Turing-Maschine gibt,
die für alle x in endlich vielen Schritten f (x) berechnet.
• Gehe eine Zelle nach rechts oder eine Zelle nach links
• Gehe über in den Zustand q 0 ∈ Q
wird formal beschrieben durch die Übergangsfunktion δ:
δ: (q, a) −→ (q 0 , b, x)
δ: Q × Γ −→ Q × Γ× {L, R}
Definition 2.2 (entscheidbar)
Eine Sprache L ⊆ Σ∗ heißt entscheidbar (decidable), wenn ihre charakteristische Funktion
1 für x ∈ L
χL (x) =
0 für x ∈
/L
berechenbar ist.
wobei
x=
Übertragung auf Sprachen bzw. Entscheidungsprobleme:
L für Bewegung nach links
R für Bewegung nach rechts
Bemerkungen:
Eine Turing-Maschine wird also definiert durch das Tupel (Q, Σ, Γ, δ, q0 , F ).
Beispiel (Vergleichsoperator): siehe Folien Kap2b
a) Semi-entscheidbare (recognizable, rekursiv aufzählbare) Sprache: Für x ∈
/ L darf die
Turing-Maschine loopen.
2.4 Turing-Maschinen und Computer
b) Unentscheidbar heißt nicht, dass alle Instanzen des Problems unlösbar sind, sondern: Es
gibt keinen Algorithmus (Turing-Maschine), der alle Instanzen löst.
siehe Folien Kap2c
2.6 Das Halteproblem
2.5 Turing-Berechenbarkeit
Alternativen bei der Anwendung einer Turing-Maschine auf einen Input x ∈ Σ∗ :
a) nach endlich vielen Schritten wird ein Endzustand erreicht und das Ergebnis ausgegeben
Gegeben ist eine Turing-Maschine und ein Input. Kommt diese Turing-Maschine in endlich vielen Schritten zum Halt? Im Folgenden wird gezeigt, dass dieses allgemeine Halteproblem unentscheidbar ist.
Vorgehen:
• Codierung für Turing-Maschinen mit Σ = {0, 1}
b) die Berechnung läuft ewig (Loop)
• Betrachte das spezielle Halteproblem (Input zur Turing-Maschine ist ihr eigener Code) und
zeige Unentscheidbarkeit
• Führe das spezielle Halteproblem durch Reduktion auf das allgemeine Halteproblem
zurück. Wenn spezielles Problem unlösbar, dann auch das allgemeine.
2.6.1
Codierung von Turing-Maschinen als Binärstring
Σ = {0, 1}
Q = {q1 , q2 , . . . , qk }
Γ = {a1 , a2 , . . . , am } = {0, 1, ], a4 , . . . , am }
Richtungen = {L, R} =: {D1 , D2 }
11
k, m ∈ N beliebig
12
Dalitz
THI
FH Niederrhein
Dalitz
THI
FH Niederrhein
Codierung eines Übergangs der Übergangsfunktion δ:
δ(qi , aj ) = (qk , al , Dm ) → 0i 10j 10k 10l 10m
Die Übergangsfunktion δ wird durch endlich viele solcher Zuordnungen beschrieben. Das führt
insgesamt zu endlich vielen Codes {C1 , C2 , . . . , Cn }. In der Gesamtcodierung müssen diese Codes durch ein Trennzeichen getrennt werden, das in den Ci nicht vorkommen kann, z.B. “11”.
Damit ergibt sich die Codierung der Turing-Maschine
C1 11C2 11 . . . Cn−1 11Cn
Satz 2.3
Das spezielle Halteproblem Hspez ist unentscheidbar.
Bemerkungen:
a) Ein Programm auf seinen eigenen Code anzusetzen ist nichts Anrüchiges (Beispiel: Compiler).
b) Das heißt nicht, dass das Halteproblem für eine konkrete gegebene Turing-Maschine unentscheidbar ist, sondern dass es keinen Algorithmus gibt, der das Problem allgemein löst.
Bemerkungen:
a) Dies ist ein mögliches Codierungsschema. Andere Autoren verwenden andere Schemen.
Wesentlich für die folgenden Überlegungen ist nur, dass es eine Codierung gibt.
Beweis (indirekt) von Satz 2.3:
Angenommen Hspez wäre entscheidbar durch eine Turing-Maschine M, d.h.
0 wenn Mx (x) nicht hält
Ausgabe von M :
1 wenn Mx (x) hält
b) Die Codierung einer Turingmaschine wird manchmal auch die Gödelnummer der Turingmaschine genannt.
c) Unser Codierungsschema ist nicht eindeutig: pro Turing-Maschine sind mehrere Codierungen möglich.
Erweitere nun M zu M0 wie folgt:
d) Umgekehrt ist aber eine Turing-Maschine durch ihre Codierung eindeutig beschrieben
M0 :
• δ ist festgelegt
Daraus folgt:
• card(Γ) und card(Q) lassen sich ermitteln (Übung)
% 0 −→ Halt und 0 ausgeben
& 1 −→ Endlosschleife
Ausgabe von M0 :
Was leistet die Codierung?
• Zeigt, dass es abzählbar unendlich viele Turing-Maschinen gibt
0 wenn Mx (x) nicht hält
ansonsten Endlosschleife
M0 hat auch eine Codierung x0 . Dann gilt:
• Programmcode einer Turing-Maschine
M0 angesetzt auf x0 hält ⇔ M angesetzt auf x0 gibt 1 aus
⇔ Mx0 angesetzt auf x0 hält nicht
⇔ M0 angesetzt auf x0 hält nicht
• Codierung selbst kann von Algorithmen (Turing-Maschinen) bearbeitet werden
Nicht jeder String x ∈ {0, 1}∗ ist Codierung einer Turing-Maschine (siehe Übung). Wir können
aber formal jedem String x ∈ {0, 1}∗ eine Turing-Maschine zuweisen:
M, wenn x Codierung von M ist
Mx :=
M̂, wenn x keine Codierung einer Turing-Maschine ist
wobei M̂ die Turing-Maschine ist, die für jeden Input sofort hält und nichts ausgibt.
x −→ M
Dies ist ein Widerspruch und somit kann die Annahme nicht stimmen, dass es die
Turing-Maschine M gibt.
2.6.3
Das allgemeine Halteproblem
Das allgemeine Halteproblem wird definiert durch die Sprache
2.6.2
Das spezielle Halteproblem
Hallg := {x]y | x, y ∈ {0, 1}∗ und Mx mit Input y hält}
Das spezielle Halteproblem ist die Frage, ob eine Turing-Maschine mit ihrer eigenen Codierung
als Input zum Halt kommt. Es ist also definiert durch die Sprache
Hspez := {x ∈ {0, 1}∗ mit Mx angesetzt auf x hält}
13
14
Dalitz
THI
FH Niederrhein
Dalitz
THI
Unterschied zum speziellen Halteproblem: Input ist nicht nur der eigene Code, sondern kann
jeder beliebige String sein.
3 Komplexität
Satz 2.4
Das allgemeine Halteproblem Hallg ist unentscheidbar.
3.1 Maße für Komplexität
FH Niederrhein
Bei einem Algorithmus interessiert:
Beweis:
a) Laufzeit (Time Complexity) = Anzahl der Arbeitsschritte einer Turing-Maschine
Wäre Hallg eintscheidbar, dann auch Hspez , was aber im Widerspruch zu Satz 2.3
steht. Denn eine Turing-Maschine, die Hallg entscheidet, kann auch Hspez entscheiden, indem ihr als Input x]x übergeben wird.
b) Speicherbedarf (Space Complexity) = Anzahl benötigter Bandzellen der Turing-Maschine
+ Anzahl der “Speicherzellen” in der Kontrolleinheit
Die Komplexität hängt vom konkreten Inputstring x ab.
Bemerkungen zum Beweisverfahren:
• Allgemeine Methode der Reduktion eines Problems auf ein anderes
• Ein Spezialfall würde als unentscheidbar gezeigt, dann ist die allgemeinere Situation erst
recht unentscheidbar. Man schreibt auch Hspez ≤ Hallg , d.h. die Lösung von Hallg kann zur
Lösung von Hspez verwendet werden.
time = time(x)
space = space(x)
Interessant ist das Verhalten im schlimmsten Fall (worst case) und mittleren Fall (average case).
Diese Werte hängen von der Eingabegröße n = |x| ab.
timewc (n) := max{time(x) mit |x| = n}
X
timeac (n) :=
P (x) · time(x)
x∈Σ∗ mit |x|=n
2.7 Weitere unentscheidbare Probleme
Problem beim “average case” ac: Wahrscheinlichkeitsverteilung P(x). Typischerweise wird eine
Gleichverteilung angenommen. Das muss in der Praxis nicht die tatsächliche Verteilung sein,
z.B. sind die Folgen beim Sortieren oft teilsortiert.
siehe Folien Kap2d
Bemerkungen:
a) Manchmal interessiert die Anzahl einer bestimmten Operation, z.B. beim Sortieren die
Anzahl der Vergleiche oder die Anzahl der Wertzuweisungen.
b) Aufpassen bei der Eingabegröße, z.B. ist bei der Primfaktorzerlegung von z ∈ N die Eingabegröße (Bitlänge) n = log2 (z)
Speziell von Interesse ist die Komplexität eines Algorithus für große Eingaben, also das asymptotisches Verhalten für n → ∞. Formal wird dieses Verhalten erfasst mit den Landau-Symbolen
Groß-O und Θ Groß-Theta
Beispiel:
15
f (n) = 6n2 + 2n2 + 20n + 45 ∈ O(n3 )
n→∞
heißt: “f ∼ const · n3 oder schwächer”
16
Dalitz
THI
FH Niederrhein
Diese Notation vergleicht das asymptotische Verhalten von zwei Funktionen miteinander.
Definition 3.1 (Landau-Symbole)
Für f, g : N −→ R+ gilt f (n) ∈ O(g(n)), wenn es ein c, n0 ∈ N gibt, so dass
f (n) ≤ c · g(n) für alle n ≥ n0
Für f, g : N −→ R+ gilt f (n) ∈ Θ(g(n)), wenn es ein c1 , c2 , n0 ∈ N gibt, so dass
c1 · g(n) ≤ f (n) ≤ c2 · g(n) für alle n ≥ n0
Groß-O entspricht also einer asymptotischen Abschätzung nach oben und Θ einer asymptotischen “Gleichheit”. Tatsächlich sind die Landau-Symbole etwas allgemeiner als die asymptotische Gleichheit: es gilt zwar
f (n)
< ∞ ⇒ f (n) ∈ O(g(n))
g(n)
f (n)
0 < lim
< ∞ ⇒ f (n) ∈ Θ(g(n))
n→∞ g(n)
lim
n→∞
Dalitz
THI
FH Niederrhein
Wie große Probleme sind in derselben Zeit bei doppelter Rechenleistung lösbar?
√
√
2t = 2n2 = ( 2n)2 = a( 2n)
= 2 · 2m = 2m+1 = b(m + 1)
Bei a werden die Eingaben bei einer Verdoppelung der Rechenleistung vielfach größer, bei b nur
um ein Bit. Dies legt die Bewertung nahe, dass polynomiale Laufzeiten effizient und exponentielle Laufzeiten ineffizient (intractable) sind.
Definition 3.2
Eine Laufzeit f (n) heißt polynomial, wenn f (n) ∈ O(nk ) für irgendein k ≥ 0.
k
Gilt dagegen f (n) ∈ Θ(2cn ) für irgendwelche c, k > 0, so heißt die Laufzeit exponentiell.
Bemerkungen:
a) 2cn wächst stärker als jede Potenz, d.h.
nk
=0
für alle c, k > 0
2cn
b) Die Basis ist im exponentialen Verhalten egal, denn
lim
n→∞
aber die Umkehrung gilt nicht (Übung).
Beispiele:
0
2cn = ac n
3
2
a) f (n) = 5n + 2n + 7
Es ist
f (n) ∈ O(n3 ) f (n) ∈
/ O(n2 )
20
f (n) ∈ O(n ) f (n) ∈ Θ(n3 )
b) Logarithmus: f (n) ∈ O(log2 n) ⇐⇒ f (n) ∈ O(log10 n)
denn:
logb n = log2 n/ log2 b
(Übung)
⇒ Die Basis kann bei O-Notation weggelassen werden.
3.2 Analyse eines Algorithmus
c) Damit sind nicht alle möglichen Laufzeitverhalten abgedeckt: so gibt es noch Laufzeiten
2
zwischen polynomial und exponentiell (z.B. O(2log (n) ) und überexponentielle Laufzeiten.
Exponentiale Laufzeiten treten meist beim Brute-Force Vorgehen auf, d.h. beim Durchprobieren
aller möglichen Lösungen. Ein typisches Beispiel ist die Primfaktorzerlegung:
Input (Binärdarstellung von z ∈ N) der Länge n entspricht der Zahl z ≈ 2n . Alles
durchzuprobieren heißt: O(2n ) Schritte.
Ein großer Vorteil der groben Einteilung der Algorithmen in “polynomiale” und “exponentielle”
besteht darin, dass diese Eintilung nicht vom Maschinenmodell abhängt.
Satz 3.1 (Erweiterte Churchsche These)
Alle “vernünftigen” Rechnermodelle, mit denen jeder berechenbare Funktion implementiert werden kann, sind polynomial äquivalent, d.h. sie können wechselseitig in polynomialer Zeit simuliert werden.
siehe Folien Kap3a
3.3 Komplexitätsklassen
3.3.1
(siehe Übung)
Bemerkungen:
a) Beispielsweise kann eine Ein-Band Turing-Maschine in O(n2 ) eine Mehr-Band TuringMaschine simulieren.
Polynomial versus Exponentiell
Vergleiche zwei Algorithmen mit den Laufzeiten a(n) = n2 und b(n) = 2n . In einer gegebener
Zeit kann ein Rechner insgesamt t Arbeitsschritte durchführen:
b) “Nichtdeterministische” Maschinen (vgl. Literatur) sind nicht “vernünftig” bzw. nicht realistisch.
t = a(n) = b(m)
= n2 = 2m
17
18
Dalitz
THI
FH Niederrhein
Dalitz
THI
c) Wie die Churchsche These selber ist auch diese Erweiterung nicht beweisbar, da der Begriff des “venünftigen Rechnermodells” nicht wohldefiniert wird.
3
5
1
3.3.2
4
Abbildung 4: Graph mit einem Pfad von Knoten 1 zum Knoten 5
2
Klassenüberblick
siehe Folien Kap3b
3.3.3
FH Niederrhein
1
2
3
4
Die Klasse P
Definition 3.3 (Klasse P)
P = {alle Sprachen, die in polynomialer Zeit (Turing-) entscheidbar sind}
1
0
0
1
0
2
0
0
1
0
3
1
1
0
1
4
0
0
1
0
als String: Zeile1 ’\n’ Zeile2 . . .
(Bei ungerichteten Graphen ist genau genommen nur das obere Dreieck erforderlich.)
Vorteile:
Das heißt für L ∈ P existiert eine Turing-Maschine, die für alle x ∈ Σ∗ mit |x| = n in O(nk )
Schritten entscheidet, ob x ∈ L.
• eleganter
Der Nachweis von “L ∈ P ” erfolgt durch Angabe eines solchen polynomialen Algorithmus:
• verallgemeinerbar auf gerichtete und gewichtete Graphen
• leichter auszuwerten
1) Angabe der High-Level Schritte des Algorithmus und zeigen, dass die Anzahl dieser
Schritte O(nk ) ist.
“Vernünftige” Codierung: Stringlänge ist Polynom in Anzahl der Knoten m. Damit kann die
Laufzeitangabe in m erfolgen.
2) Zeigen, dass jeder der High-Level Schritte in O(nl ) Schritten einer (Mehrband TuringMaschine realisiert werden kann.
Beispiel für ein Problem in P
⇒ Gesamtlaufzeit O(nl ∗ nk ) = O(nn+l )
P AT H = {< G, s, t > |G ist ein Graph mit einem Pfad von s nach t}
Idee:
Notation für die Inputcodierung: < · >, z.B.
< n > = Binärcodierung von n (n ∈ N abstraktes Objekt (Zahl))
Viele Probleme beziehen sich auf Graphen. Wie kann ein Graph codiert werden?
Erinnerung: Graph = Knoten (nodes) und Kanten (edges)
• Pfad hat höchstens eine Länge m
• Markiere nacheinander alle Knoten, die von s aus in Pfaden der Länge 1, 2, . . . , m erreichbar sind
Algorithmus auf den Input < G, s, t >:
Codierung eines Graphen mit m Knoten:
1) Markiere s
2) Wiederhole bis nichts Neues mehr markiert wird:
3
1
Prüfe alle Knoten; wenn eine Kante (a, b) vom markierten a zum unmarkierten
b existiert, dann markiere b.
4
2
Lösung 1: Knoten + Kanten: 4, (1, 3)(2, 3)(3, 4)
P
maximale Anzahl der Kanten: m−1
k=1 k =
Lösung 2: Matrix m × m
19
3) Wenn t markiert ist: accept; sonst: reject
Analyse der “High-Level” Schritte:
m(m−1)
2
=
m
2
1), 3) werden jeweils nur einmal ausgeführt
2) wird höchstens m-mal ausgeführt, da jedesmal mindestens ein Knoten markiert
wird.
⇒ High-Level O(m)
20
Dalitz
THI
FH Niederrhein
Dalitz
THI
FH Niederrhein
Analyse der Einzelschritte:
1), 3) erfordern jeweils nur einmal lesen: O(m) (zu Position gehen)
2) Betrachte die Implementierung mit einem Matrix-Input:
1
Kante suchen: O(m2 ) m-mal durchführen ⇒ O(m3 )
Insgesamt ergibt sich eine Laufzeit von O(m · m3 ) = O(m4 ).
Die Gesamtlaufzeit ist also polynomial, d.h. P AT H ∈ P .
3.3.4
Die Klasse N P
5
2
4
Abbildung 5: Graph mit
einer 4er-Clique bestehend
aus den Knoten 1,3,4,5
1) Angabe eines Zertifikats c
Definition 3.4 (Verifier)
Ein Verifier einer Sprache L ⊆ Σ∗ ist ein Algorithmus V mit
L = {x ∈ Σ∗ | V akzeptiert < x, c > für irgendeinen String c ∈ Σ∗ }
Mit anderen Worten: Ein Verifier erkennt eine Sprache L, indem er zusätzlich ein Zertifikat c als
Beleg für die Mitgliedschaft von x in L als Input erhält.
Beispiel a) UHAMPATH
2) Angabe eines Verifiers
3) Nachweis, dass der Verifier bei gegebenem < x, c > in O(|x|k ) bestätigt, dass x ∈ L
Beispiel a) CLIQU E = {< G, k > | G ist Graph mit k-Clique}
Eine Clique sind Knoten, die alle paarweise miteinander verbunden sind. Eine kClique ist eine Clique mit k Knoten (siehe Abb. 5).
1) Zertifikat: Clique
siehe Folien Kap3c
2) Verifier: Prüfe, ob alle Paare in der Clique miteinander verbunden sind
Beispiel b) Nichtprimzahlen
COM P OSIT ES = {< z >
irgendwelche 1 < p, q, ∈ N}
3
| N 3 z ist keine Primzahl, d.h. z = p · q für
Zertifikat: ein Faktor p von z
Verifier: Test ob z durch p teilbar ist
Die Laufzeit eines Verifiers wollen wir nur in der Länge n = |x| (nicht in |c|) messen. Das heißt
ein polynomialer Verifier hat eine Laufzeit O(|x|k ).
Definition 3.5 (Klasse N P )
N P = {alle Sprachen, für die es einen Verifier mit polynomialer Laufzeit gibt}
Bemerkungen:
• Diese Definition ist die “moderne” Definition.
3) Laufzeit des Verifiers:
m Knoten =⇒ | < G, k > | = O(m2 ) mit | < G > | = O(m2 ) und
| < k > | = O(log m)
Anzahl der Knoten in der Clique: k ≤ m
= O(k 2 )
Anzahl der Kanten in der Clique: k2 = k(k−1)
2
Für jede Kante in der Clique muss der Input G gescannt werden, ob eine
Kante vorhanden ist.
⇒ O(m2 ∗ m2 ) = O(m4 )
⇒ CLIQU E ∈ N P
Beispiel b) Jedes Problem in P ist auch in NP.
L ∈ P ⇒ es gibt einen polynomialen Algorithmus A, der für x ∈ Σ∗ entscheidet,
ob x ∈ L. Wir können also wählen:
• Ältere Bücher verwenden meist die historische Definition über “nichtdeterministische”
Turingmaschinen, von der auch die Bezeichung “NP” stammt: “Nichtdeterministische
Polynomialzeit”.
Zertifikat = ε (Leerstring)
Verifier = A
• Moderne und historische Definition von N P sind äquivalent (Beweis siehe [3]).
Damit haben wir den folgenden Satz bewiesen.
⇒ L ∈ NP
Nachweis, dass eine Sprache L ∈ N P :
21
22
Dalitz
THI
FH Niederrhein
Dalitz
THI
NP−
vollständig
Satz 3.2
P ⊆ NP
NP
P
3.3.5
FH Niederrhein
P =
NP =
NP−
vollständig
Eigenschaften der Klasse N P
Frage: Ist das Erkennen einer Sprache L ∈ N P beliebig aufwändig?
Antwort: Nein!
Satz 3.3
k
Jedes L ∈ N P kann in höchstens exponentieller Laufzeit O(2αn ) erkannt werden.
P
NP
Σ∗ 3 x → Algorithmus
Wie viele Zertifikate sind aber durchzuprobieren? Weil der Verifier innerhalb seiner Laufzeit das Zertifikat c lesen muss (|c| Schritte) muss die Länge des Zertifikats durch α · nk
beschränkt sein. Die Anzahl aller möglichen Zertifikate ist also (beim Alphabet {0,1})
k
durch 2α·n beschränkt.
Als Gesamtlaufzeit des Brute-Force Algorithmus ergibt sich also
k
k
k
k
O nk · 2αn = O 2log(n ) · 2αn = O 2αn +k log(n)
αnk
was O(2
0
NP
Abbildung 6: Verhältnisse der Komplexitätsklassen zueinander
Intuitiv sollte P 6= N P sein. Betrachte nämlich die Komplementbildung L := Σ∗ \L. Für L ∈ P
gilt auch L ∈ P, denn:
Alternative Beweise:
a) Da es für jedes x ∈ L ein Zertifikat c für die Mitgliedschaft gibt, kann die Mitgliedschaft
mittels Durchprobieren aller Zertifikate geprüft werden (Brute-Force Verfahren). Die Überprüfung jedes einzelnen Zertifikats geht mit dem polynomialen Verifier in O(nk ) Schritten
(n = |x| sei die Länge des Inputstrings).
P
% 1 für x ∈ L
& 0 für x ∈ L
mit Laufzeit O(|x|k )
Damit aber z.B. U HAM P AT H ∈ P , müssten wir in polynomialer Zeit verifizieren können,
dass ein Graph keinen Hamiltonschen Pfad enthält. Die Überprüfung der Nichtexistenz sollte
schwieriger sein als die Überprüfung der Existenz. Die Sprachen, deren Komplement in N P
liegt, fasst man in einer eigenen Komplexitätsklasse coN P zusammen.
Frage: Gibt es Kandidaten L ∈ N P aber eventuell L ∈
/ P?
Antwort: Ja! NP-vollständige Probleme.
Abhängig von der Antwort auf die Frage, ob P 6= N P gibt es also die in Abb. 6 dargestellten
Alternativen.
3.3.6
NP-Vollständigkeit
0
) enspricht für ein geeignetes k > k.
b) Benutze die historsiche Defintion über polynomiale nichtdeterministische TuringMaschinen und zeige, dass eine nichtdeterministische Turing-Maschine mit O(nk ) Schritk
ten durch eine normale Turing-Maschine mit höchstens O(2cn ) Schritten simuliert werden
kann.
c) Benutze die Existenz NP-vollständiger Probleme (s.u.), für die exponentielle Entscheidungsalgorithmen bekannt sind.
Frage: Gibt es entscheidbare Sprachen, die nicht in NP sind?
Antwort: Ja!
Man kann nämlich zeigen, dass Turing-Maschinen echt mehr Sprachen erkennen können, wenn
man ihnen eine größere Laufzeitkomplexität zubilligt (Time-Hierarchie-Theorem, siehe [3]).
Frage: Gibt es Probleme in N P , die nicht in P liegen?
Antwort: Ungeklärt! (siehe [6] und [7])
23
Definition 3.6 (polynomiale Reduktion)
Die Sprache A ⊆ Σ∗ heißt polynomial reduzierbar auf die Sprache B ⊆ Σ∗ , symbolisch A ≤p
B, wenn es eine in polynomialer Zeit berechenbare Funktion f : Σ∗ → Σ∗ gibt mit x ∈ A ⇐⇒
f (x) ∈ B für alle x ∈ Σ∗ .
Wenn B einen Entscheidungsalgorithmus Decide hat, dann kann A wie folgt entschieden werden:
Σ∗ 3 x −→ Construct −→ f (x) −→ Decide
Satz 3.4
A ≤p B und B ∈ P =⇒ A ∈ P
Beweis:
24
% Ja:
& Nein:
f (x) ∈ B =⇒ x ∈ A
f (x) ∈
/ B =⇒ x ∈
/A
Dalitz
THI
FH Niederrhein
A wird entschieden durch Decide(Construct(x))
|
{z
}
f (x)
k
a) Construct hat eine polynomiale Laufzeit O(n ) mit n = |x|
b) Decide hat eine polynomiale Laufzeit O(nm ) mit n = |f (x)|
b)
m
a) ⇒ |f (x)| = O(|x|k ) ⇒ Decide(Construct(x)) hat die Laufzeit O((|x|k ) =
O(|x|m∗k ), also polynomial.
Dalitz
THI
a) Suche ein ähnliches Problem B 0 in einer Liste NP-vollständiger Probleme
b) Zeige, dass B 0 ≤p B
Einmal muss man aber für ein Problem die NP-Vollständigkeit direkt zeigen. Im Jahre 1971
erfolgte dies von C OOK und L EVIN für das Satisfiability Problem für Boolsche Ausdrücke.
Boolsche Variablen: x ∈ {true, f alse} ≡ {1, 0}
Boolsche Operatoren: ∨ (AND) ∧ (OR) · (NOT)
∧ 0 1
0 0 0
1 0 1
Beispiele:
∗
a) ∅ ≤p A für jede Sprache A 6= Σ (Beweis: Übung)
b) Sei L ∈ P . Dann gilt für jede Sprache A 6= ∅ und A 6= Σ∗ : L ≤p A (Beweis: Übung)
c) HAM P AT H ≤p U HAM P AT H siehe Folien Kap3d
Definition 3.7 (NP-Vollständigkeit)
Eine Sprache B heißt NP-vollständig, wenn
1) B ∈ N P
2) A ≤p B für alle A ∈ N P
⇒
⇒
L ≤p B
P = NP
Satz 3.4
⇒
0 = 1
1 = 0
φ = (x ∧ y) ∨ (x ∧ z)
Eine Boolsche Formel φ ist erfüllbar, wenn es Werte für ihre Variablen gibt, so dass φ = 1 sein
kann. Das obige Beispiel ist erfüllbar durch
Beweis: aus der Definition der NP-Vollständigkeit folgt
L ∈ NP
∨ 0 1
0 0 1
1 1 1
Eine Boolsche Formel φ ist ein Ausdruck bestehend aus Boolschen Variablen und Operatoren.
Beispiel:
oder
oder
Das heißt, die Komplexität aller Probleme in NP ist mit einem NP-vollständigen Problem verknüpft. Insbesondere gilt
Satz 3.5
B ist NP-vollständig und B ∈ P
FH Niederrhein
L∈P
Wie beweist man NP-Vollständigkeit für eine Sprache B ∈ NP? Wenn man schon ein NPvollständiges Referenzproblem R hat, dann reicht es zu zeigen R ≤p B. Es gilt nämlich
Satz 3.6
R ist NP-vollständig und R ≤p B ∈ NP ⇒ B ist NP-vollständig.
x = 0, y = 1, z = 0
x = 1, y = 0, z = 1
...
Definition 3.8 (Satisfiability Problem)
SAT = {< φ > | φ ist erfüllbare Boolsche Formel}
Satz 3.7 (Cook-Levin)
Das Satisfiability Problem ist NP-vollständig.
Beweisskizze: siehe Folien. Zwei alternative Beweise sind in [3] gegeben.
3.3.7
Weitere NP-vollständige Probleme
siehe Folien Kap3e
Bemerkung: Die Voraussetzung B ∈ NP ist notwendig wegen Bedingung 1) der NP-Vollständigkeit.
Beweis:
R sei NP-vollständig und R ≤p B
⇒ für alle A ∈ N P ist A ≤p R und R ≤p B
⇒ A ≤p B weil “≤p ” transitiv ist (Übung)
Praktisches Vorgehen bei einem Kandidaten B ∈ N P :
25
26
Dalitz
THI
FH Niederrhein
Referenzen
Index
[1] Asteroth, Baier: Theoretische Informatik. Pearson Studium 2002 (1. Auflage)
[2] Schöning: Theoretische Informatik - kurzgefasst. Spektrum 2000 (4. Auflage)
[3] Sipser: Introduction to the Theory of Computation. PSW Publishing 1997 (1. Auflage)
[4] Hopcroft, Motwani, Ullmann: Introduction to Automata Theory, Languages and Computation. Addison Wesley 2001 (2. Auflage)
[5] Wegener: Theoretische Informatik - eine algorithmenorientierte Einführung. Täubner 1999
(2. Auflage)
[6] Liste wichtiger offener mathematischer Probleme: http://www.claymath.org/prizeproblems/
[7] Reith, Vollmer: Wer wird Millionär? Komplexitätstheorie: Konzepte und Herausforderungen. c’t 2001/7 p. 240-251
[8] Matthes: Algebra, Kryptologie und Kodierungstheorie. Fachbuchverlag Leipzig 2003 (1.
Aufglage)
Alphabet, 7
Asymptotik, 17
average case, 16
polynomial reduzierbar, 25
polynomiale Laufzeit, 18
polynomiale Reduktion, 24
Primfaktorzerlegung, 18
Probleme, 7
Bandalphabet, 10
Boolsche Formel, 26
Brute-Force, 18, 23
Q (Zustandsmenge), 10
Cantorsches Diagonalverfahren, 9
charakteristische Funktion, 12
Churchsche These, 9
erweitert, 18
coNP (Komplexitätsklasse), 24
Cook-Levin Theorem, 26
recognizable, 12
rekursiv aufzählbar, 12
Satisfiability Problem, 26
semi-entscheidbar, 12
Σ, 7
Σ∗ , 7
Sprache, 7
entscheidbar, 12
String, 7
Länge, 7
leerer, 7
Suchproblem, 8
δ (Übergangsfunktion), 11
Entscheidungsproblem, 8
ε (Leerstring), 7
exponentielle Laufzeit, 18
Γ (Bandalphabet), 10
Gödelnummer, 13
Graph, 19
Θ (Landau-Symbol), 17
Turing Maschine, 10
Turing-berechenbar, 12
Halteproblem, 12
allgemeines, 14
spezielles, 13
Übergangsfunktion, 11
unendlich
überabzählbar, 9
abzählbar, 9
unentscheidbar, 12
Komplexitätsmaße, 16
Landau-Symbole, 17
Menge
der Primzahlen, 7
endlich, 4
Mächtigkeit, 2
Verifier, 21
worst case, 16
Zertifikat, 21
Zustandsmenge, 10
NP (Komplexitätsklasse), 21
NP-vollständig, 25
O (Landau-Symbol), 17
P (Komplexitätsklasse), 19
27
28
Herunterladen