Komplexitätstheorie Kap. 3: Berechnungstheorie - fbi.h

Werbung
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Gliederung der Vorlesung
1. Analyse von Algorithmen
1.1 Motivation
1.2 Laufzeit von Algorithmen
1.3 Asymptotische Notationen
2. Entwurf von Algorithmen
2.1 Divide & Conquer
2.2 Dynamisches Programmieren
2.3 Probabilistische Algorithmen
3. Berechnungstheorie
3.1 Turing-Maschinen (TM)
3.2 RAM
3.3 Churchsche These
3.4 Unentscheidbarkeit
4. Grundlegende Ergebnisse aus der
Komplexitätstheorie
4.1 Komplexitätsmaße/-klassen
4.2 Speed-up und Bandkompression
4.3 Hierarchiesätze
4.4 Nichtdeterministische TM
5. P = NP? Problem
5.1 Alternative Definition der Klasse NP
5.2 NP-vollständige Probleme
6. NP-vollständig – Was nun?
6.1 Heuristiken
6.2 Approximationsalgorithmen
1
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
zentrale Begriffe
•
Entscheidbarkeit einer Menge
•
Lösbarkeit eines Entscheidungsproblems
2
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
es sei E ⊆ N
Die Menge E heißt entscheidbar, falls es eine sprachentscheidende
Turing-Maschine M mit L(M) = E gibt.
mit anderen Worten:
•
•
•
für alle x ∈ N gilt: M stoppt bei Eingabe von x nach
endlichen vielen Rechenschritten
für alle x ∈ E gilt: M stoppt bei Eingabe von x im
akzeptierenden Zustand qa
für alle x ∉ E gilt: M stoppt bei Eingabe von x im
verwerfenden Zustand qr
3
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Beobachtung
Es gibt eine Menge E ⊆ N für die gilt: E ist nicht entscheidbar.
... Diagonalisierung
aber, eigentlich interessieren wir uns für Entscheidungsprobleme
und nicht irgendwelche Teilmengen von N
4
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
3-Färbbarkeit
•
Gegeben: eine ungerichteter Graph G = (V,E)
•
Frage: Gibt es eine Färbung der Knoten in V, so daß keine zwei
benachbarten Knoten in G dieselbe Farbe haben?
gesucht: ein Algorithmus der folgendes leistet
•
•
•
als Eingabe werden beliebige ungerichteter Graphen G = (V,E)
akzeptiert
als Ausgabe wird nach endlich vielen Rechenschritten
entweder eine „0“ oder eine „1“ produziert
falls die Ausgabe eine „1“ ist, so ist G 3-färbbar; falls die
Ausgabe eine „0“ ist, so ist G nicht 3-färbbar
5
... jeder Graph G = (V,E) bildet eine Instanz des 3-Färbarkeits-Problems
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Primzahl
•
Gegeben: eine natürliche Zahl k
•
Frage: Ist k eine Primzahl?
gesucht: ein Algorithmus der folgendes leistet
•
•
•
als Eingabe werden beliebige natürliche Zahlen k akzeptiert
als Ausgabe wird nach endlich vielen Rechenschritten
entweder eine „0“ oder eine „1“ produziert
falls die Ausgabe eine „1“ ist, so ist k eine Primzahl; falls die
Ausgabe eine „0“ ist, so ist G keine Primzahl
6
... jeder natürliche Zahl k bildet eine Instanz des Primzahl-Problems
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Äquivalenz von C++-Funktionen
•
Gegeben: Zwei Definitionen von Funktionen f1 und f2 in C++.
•
Frage: Leisten die Funktionen f1 und f2 dasselbe?
... das ist eine Aufgabe, die für Menschen nicht ganz ohne ist
7
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
eine Instanz des Äquivalenz-Problems für C++-Funktionen
Das Collatz-Problem
int f1(int n) {
while( n!= 1 ) {
if ( n%2 == 0 ) n = n/2;
else n = 3n+1;
}
return(n);
}
Frage:
int f2(int n) {
return(1);
}
Gilt für alle n ≥ 1: f1(n) = f2(n)?
... bisher ist unklar, wie diese Frage zu beantworten ist
8
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Äquivalenz von C++-Funktionen
•
Gegeben: zwei Definitionen von C++-Funktionen f1 und f2
•
Frage: Leisten die Funktionen f1 und f2 dasselbe?
gesucht: ein Algorithmus der folgendes leistet
•
•
•
als Eingabe werden beliebige C++-Funktionen f1 und f2
akzeptiert
als Ausgabe wird nach endlich vielen Rechenschritten
entweder eine „0“ oder eine „1“ produziert
falls die Ausgabe eine „1“ ist, so sind f1 und f2 äquivalent; falls
die Ausgabe eine „0“ ist, so sind f1 und f2 nicht äquivalent
... jedes Paar (f1,f2) von C++-Funktionen bildet eine Instanz des
Äquivalenz-Problems für C++-Funktionen
9
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
es sei ein Π Entscheidungsproblem
... ein Lösungsalgorithmus für Π ist ein Algorithmus, der folgendes
leistet:
•
•
•
als Eingabe werden beliebige Instanzen I von Π akzeptiert
als Ausgaben wird nach endlich vielen Rechenschritten eine
„0“ oder eine „1“ produziert
falls die Ausgabe eine „1“ ist, so ist für I die jeweilige Frage
mit „ja“ zu beantworten ist; falls die Ausgabe eine „0„ ist, so
ist für I die jeweilige Frage mit „nein“ zu beantworten
... das Entscheidungsproblem Π ist lösbar (unlösbar), falls es einen
(keinen) Lösungsalgorithmus für Π gibt
10
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
es sei ein Π Entscheidungsproblem
... ein geeignetes, berechenbares Codierungs-Schema vorausgesetzt,
kann jede Instanz I als natürliche Zahl codiert werden
... es sei E(Π), die Menge aller natürlichen Zahlen k, für die gilt:
•
k ist Codierung einer Instanz des Entscheidungsproblems Π,
für die die jeweilige Frage mit „ja“ zu beantworten ist
... dann gilt
Π ist lösbar gdw. E(Π) ist entscheidbar.
11
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Einschub: Codierungs-Schema
Instanzen von beliebigen Entscheidungsproblemen Π kann man als
natürliche Zahlen codieren
Randbedingungen
•
•
•
Berechenbarkeit
Eindeutigkeit
Umkehrbarkeit
12
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Einschub: Codierungs-Schema
Beispiel: ungerichtete Graphen
1) als endliche Folge von Zeichen:
B
A
C
[A;B;C;D],[A;B],[B;C],[B;D],[C;D]
D
2) als endliche Folge von natürlichen Zahlen:
c([),c(A), ..., c(;),c(D),c(]) = 0,0, ...,3,3,1
c(A) = 0
c(B) = 1
c(C) = 2
c(D) = 3
c([) = 0
c(]) = 1
c(,) = 2
c(;) = 3
13
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Einschub: Codierungs-Schema
x
y
cod(x,y)
0
0
0
0
1
1
1
0
2
0
2
3
1
1
4
2
0
5
0
3
6
1
2
7
2
1
8
...
...
...
Codierung
cp(x,y) = x + (x+y)*(x+y+1)/2
•
•
•
Berechenbarkeit
Eindeutigkeit
Umkehrbarkeit
Decodierung (/* z = cp(x,y) */)
d1(z) = z – u(z)*u(z+1)/2
d2(z) = u(z) – d1(z)
mit: u(z) = max { k | k*(k+1)/2 ≤ z }
14
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Einschub: Codierungs-Schema
Codierung beliebig langer Folgen natürlicher Zahlen
sei F = a1, a2,..., an-1, an die betrachtete Folge
Fall 1: n = 0
Æ cod (F) = 0
Fall 2: n > 0
Æ cod (F) = cp(n,cp(a1,cp(a2, ..., cp(an-1,an)...)
15
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Einschub: Codierungs-Schema
Beispiel: ungerichtete Graphen
1) als endliche Folge von Zeichen:
B
A
C
[A;B;C;D],[A;B],[B;C],[B;D],[C;D]
D
2) als endliche Folge von natürlichen Zahlen:
c([),c(A), ..., c(;),c(D),c(]) = 0,0, ...,3,3,1
c(A) = 0
c(B) = 1
c(C) = 2
c(D) = 3
c([) = 0
c(]) = 1
c(,) = 2
c(;) = 3
3) als natürliche Zahl:
cp(33,cp(0,cp(0,...,cp(3,cp(3,1)...)
16
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
es gibt interessante, unlösbare Entscheidungsprobleme
Vollständigkeit
•
Gegeben: eine Turing-Maschine M
•
Frage: Stoppt M auf jeder Eingabe? Mit anderen Worten:
Ist die von M berechnete einstellige Funktion fM: N Æ N
vollständig definiert?
Programm Äquivalenz
•
Gegeben: zwei Turing-Maschinen M und M‘
•
Frage: Berechnen M und M‘ dieselbe Funktion? Mit
anderen Worten: Gilt für alle x ∈ N: fM(x) = f M‘(x)?
...
17
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
UNLÖSBAR
Vollständigkeit
•
Gegeben: eine Turing-Maschine M
•
Frage: Stoppt M auf jeder Eingabe? Mit anderen Worten:
Ist die von M berechnete einstellige Funktion fM: N Æ N
vollständig definiert?
Beweismethode: Diagonalisierung
Bez: E = { e | e ist Gödelnummer einer TM, die eine vollständig definierte
einstellige Funktion berechnet }
Bez: zu jedem e sei fe die von der TM mit der Gödelnummer e
berechnete einstellige Funktion
18
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Annahme: die Menge E ist entscheidbar
Æ dann gibt es eine sprachakzeptierende TM M für E
Æ mit Hilfe von M kann man eine TM M‘ konstruieren, die folgende
vollständig definierte einstellige Funktion g: N Æ N berechnet:
•
•
g(x) = y + 1, falls x Gödelnummer einer TM mit x ∈ E und fx(x) = y
g(x) = 0, falls x Gödelnummer einer TM mit x ∉ E
Æ es sei z die Gödelnummer der TM M‘; dann gilt für die von M‘ berechnete
vollständig definierte einstellige Funktion fz an der Stelle z:
•
•
fz(z) = y für ein y ∈ N (/* da fz vollständig definiert */)
fz(z) = y + 1 (/* da z ∈ E und damit fz(z) = g(z) = y + 1 */)
a
19
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
UNLÖSBAR
Programm Äquivalenz
•
Gegeben: zwei Turing-Maschinen M und M‘
•
Frage: Berechnen M und M‘ dieselbe Funktion? Mit
anderen Worten: Gilt für alle x ∈ N: fM(x) = f M‘(x)?
Bez: E = { cp(i,j) | i und j sind Gödelnummer von TM, so daß für alle x N
gilt: fi(x) = fj(x) }
Bez: E‘ = { e | e ist Gödelnummer einer TM, die eine vollständig definierte
einstellige Funktion berechnet }
Beweismethode: Reduktion
Idee: wenn E entscheidbar, so ist auch E‘ entscheidbar
20
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Æ es seien M eine TM und e die Gödelnummer von M
Æ dann kann man mit Hilfe von M eine TM M‘ konstruieren, so daß für die
von M‘ berechnete einstellige Funktion fM‘ gilt:
•
•
fM‘(x) = 1, falls fM(x) definiert ist
fM‘(x) = undefiniert, sonst
falls fM vollständig definiert ist, so ist
auch fM‘ vollständig definiert und es
gilt fM‘(x) = 1 für alle x ∈ N
Æ wähle i und k, so daß i Gödelnummer von M‘ und k Gödelnummer
einer TM M‘‘ mit fM‘‘(x) = 1 für alle x ∈ N
Æ offenbar gilt: cp(i,k) ∈ E gdw. e ∈ E‘
21
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
sprachentscheidende TM für E‘
•
•
•
•
•
schreibe die Gödelnummer e aufs Band
starte eine TM M1, die aus e die Gödelnummer i von M‘
berechnet
schreibe hinter das i die Gödelnummer k aufs Band
starte eine TM M2, die cp(i,k) berechnet
starte die sprachentscheidende TM M3 für die Menge E
Hinweis: M1 und M2 kann man angeben; M3 existiert nur nach
Annahme (/* wir zeigen eine Implikation */)
22
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Allgemeines Halte-Problem
•
Gegeben: eine Turing-Maschine M und eine Zahl x
•
Frage: Stoppt M auf der Eingabe x? Mit anderen Worten: Ist
die von M berechnete einstellige Funktion an der Stelle x
definiert?
Diagonales Halte-Problem
•
Gegeben: eine Turing-Maschine M und ihre Gödelnummer e
•
Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die
von M berechnete einstellige Funktion an der Stelle e definiert?
... aus der Unlösbarkeit des diagonalen Halteproblems folgt sofort die
Unlösbarkeit des allgemeinen Halteproblems
23
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
UNLÖSBAR
Diagonales Halte-Problem
•
Gegeben: eine Turing-Maschine M und ihre Gödelnummer e
•
Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die
von M berechnete einstellige Funktion an der Stelle e definiert?
Beweismethode: Diagonalisierung
Bez: E = { e | e ist Gödelnummer einer TM, so daß für die berechnete
Funktion fe gilt: fe(e) ist definiert }
24
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Annahme: die Menge E ist entscheidbar
Æ dann gibt es eine sprachakzeptierende TM M für E
Æ mit Hilfe von M kann man eine TM M‘ konstruieren, die folgende
vollständig definierte einstellige Funktion g: N Æ N berechnet:
•
•
g(x) = undefiniert, falls x Gödelnummer einer TM mit x ∈ E
g(x) = 0, falls x Gödelnummer einer TM mit x ∉ E
Æ es sei z die Gödelnummer der TM M‘; dann gilt für die von M‘
berechnete einstellige Funktion fM‘ an der Stelle z:
Fall 1: fM‘(z) = 0
also gilt z ∈ E und damit g(z) = undefiniert
Fall 2: fM‘(z) = undefiniert
also z ∉ E und damit g(z) = 0
a (/* zu g(z) = f (z) */)
M‘
a (/* zu g(z) = f (z) */)
M‘
25
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
UNLÖSBAR
Allgemeines Halte-Problem
•
Gegeben: eine Turing-Maschine M und eine Zahl x
•
Frage: Stoppt M auf der Eingabe x? Mit anderen Worten: Ist
die von M berechnete einstellige Funktion an der Stelle x
definiert?
UNLÖSBAR
Diagonales Halte-Problem
•
Gegeben: eine Turing-Maschine M und ihre Gödelnummer e
•
Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die
von M berechnete einstellige Funktion an der Stelle e definiert?
26
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
... „Schwierigkeiten“ beim Nachweis der Unentscheidbarkeit/Unlösbarkeit
es gibt Mengen A ⊆ B ⊆ N mit folgenden Eigenschaften:
•
•
A ist entscheidbar, B ist unentscheidbar
A ist unentscheidbar, B ist entscheidbar
... trotzdem möchte man bereits vorhandenes Wissen über die
(Un)Entscheidbarkeit von Mengen natürlicher Zahlen bzw.
(Un)Lösbarkeit von Entscheidungsproblem
möglichst gewinnbringend einsetzen ...
27
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Es seien Mengen A,B ⊆ N gegeben. Die Menge A ist auf die Menge B
reduzierbar, falls eine TM M gibt, so daß für alle x ∈ N gilt:
•
fM(x) ist definiert
•
x ∈ A gdw. fM(x) ∈ B
Bezeichnung: A ≤T B
fM
N
A
B
fM
N
28
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Beispiele
•
•
•
A = { x | x gerade }; B = { y | y ungerade }
A = { x | letzte Ziffer von x ist eine 1}; B = { 1,2 }
A = { e | e ist Gödelnummer einer Turing-Maschine, für die gilt:
fe(e) ist definiert }
B = { e‘ | e‘ ist Gödelnummer einer Turing-Maschine,
so daß gilt: fe‘(0) = 100 };
•
...
29
Komplexitätstheorie
Kap. 3: Berechnungstheorie
Unentscheidbarkeit
Es seien A, B ⊆ Ngegeben. Dann gilt:
1. Wenn A ≤T B und B entscheidbar ist, so ist auch A entscheidbar.
2. Wenn A ≤T B und A unentscheidbar ist, so ist auch B unentscheidbar.
3. Wenn A und B entscheidbar (und nicht trivial), so gilt A ≤T B.
Nachweis von 1: Komposition
Nachweis von 2: folgt unmittelbar aus 1
Nachweis von 3: „many-to-one“ Reduktion
30
Herunterladen