Berechenbarkeits- und Komplexitätstheorie

Werbung
Berechenbarkeits- und Komplexitätstheorie
Verschiedene Berechenbarkeitsbegriffe,
Entscheidbarkeit von Sprachen,
Wachstumsordnungen und Komplexitätsklassen
Inhaltsübersicht und Literatur
¾ Verschiedene Berechenbarkeitsbegriffe:
™
™
™
™
intuitive Berechenbarkeit
Turing-Berechenbarkeit
LOOP-, GOTO- und WHILE-Programme
primitiv rekursive und µ-rekursive Funktionen
¾ Entscheidbarkeit von Sprachen
¾ Das Halteproblem für Turingmaschinen
¾ Der Gödel'sche Unvollständigkeitssatz
¾ Wachstumsordnungen und Komplexitätsklassen
¾ Das P-NP-Problem, NP-Vollständigkeit
Literatur:
¾ Uwe Schöning: Theoretische Informatik - kurzgefaßt, 4. Auflage, Spektrum Akademischer
Verlag 2001
¾ Hopcroft / Motwani / Ullman: Introduction to Automata Theory, Languages, and
Computation, 2nd edition, Addison-Wesley 2001
Theoretische Informatik I
Berechenbarkeit und Komplexität 2
Nischwitz / Vogt
Intuitive Berechenbarkeit
Wir betrachten die Frage, ob Funktionen auf den natürlichen Zahlen berechenbar sind.
Eine (evtl. partielle) Funktion
f: Nk ----> N
heiße berechenbar, wenn es ein Rechenverfahren, also einen Algorithmus gibt (z.B. in Form
eines Java- oder C-Programms), das f berechnet, d.h. bei Eingabe von (n1, n2, ... , nk) soll der
Algorithmus
™ nach endlich vielen Schritten die Ausgabe f(n1, n2, ... , nk) liefern, falls f an dieser Stelle definiert ist,
™ nicht stoppen, falls f an der Stelle (n1, n2, ... , nk) nicht definiert ist.
Theoretische Informatik I
Berechenbarkeit und Komplexität 3
Nischwitz / Vogt
Beispiele
f1 (n) =
1 falls n ein Anfangsabschnitt der Dezimalbruchentwicklung von π ist
0 sonst
f2 (n) =
1 falls n irgendwo in der Dezimalbruchentwicklung von π vorkommt
0 sonst
f3 (n) =
1 falls in der Dezimalbruchentwicklung von π irgendwo
mindestens n-mal hintereinander eine 7 vorkommt
0 sonst
f4 (n) =
1 falls das LBA-Problem eine positive Lösung hat
0 sonst
Welche dieser Funktionen sind berechenbar?
Theoretische Informatik I
Berechenbarkeit und Komplexität 4
Nischwitz / Vogt
Turing-Berechenbarkeit
Definition:
Eine Funktion f: Nk ----> N heißt Turing-berechenbar, falls es eine (deterministische)
Turingmaschine M gibt, so daß für alle (n1, n2, ... , nk) gilt:
f (n1, n2, ... , nk) = m
genau dann wenn
die Turingmaschine M bei der anfänglichen Bandbeschriftung bin(n1)#bin(n2)# ... #bin(nk)
nach endlich vielen Schritten in einen Endzustand übergeht und auf dem Band dann bin(m)
steht.
Hierbei bezeichnet bin(n) die Binärdarstellung der Zahl n.
Theoretische Informatik I
Berechenbarkeit und Komplexität 5
Nischwitz / Vogt
LOOP-Programme (1)
Syntaktische Komponenten von LOOP-Programmen:
Variablen:
x0, x1, x2 , ...
Konstanten:
0, 1, 2, ...
Trennsymbole:
; :=
Operationszeichen:
+ Schlüsselwörter:
LOOP DO END
Induktive Definition der Syntax von LOOP-Programmen:
™ Jede Wertzuweisung der Form
xi := xk + c
bzw.
xi := xk - c
ist ein LOOP-Programm.
™ Sind P1 und P2 LOOP-Programme, so auch P1;P2.
™ Ist P ein LOOP-Programm und xi eine Variable, so ist auch
LOOP xi DO P END
ein LOOP-Programm.
Theoretische Informatik I
Berechenbarkeit und Komplexität 6
Nischwitz / Vogt
LOOP-Programme (2)
Die Semantik von LOOP-Programmen für Funktionen f: Nk ----> N ist wie folgt definiert:
¾ Die Startwerte n1, n2, ... , nk stehen in den Variablen x1, x2, ... , xk, alle anderen Variablen
haben den Wert 0.
¾ Die Wertzuweisung xi := xk + c wird wie üblich interpretiert, bei der Wertzuweisung
xi := xk - c wird die modifizierte Subtraktion verwendet, d.h. das Resultat wird auf 0
gesetzt, wenn c > xk ist.
¾ Das LOOP-Programm P1;P2 bedeutet, daß zunächst P1 und dann P2 ausgeführt wird.
¾ Das LOOP-Programm LOOP xi DO P END bedeutet, daß das Programm P so oft
ausgeführt wird, wie der Wert der Variablen xi zu Beginn angibt.
Das Ergebnis der Berechnung eines LOOP-Programms ist der Inhalt der Variablen x0.
Theoretische Informatik I
Berechenbarkeit und Komplexität 7
Nischwitz / Vogt
LOOP-Berechenbarkeit
Definition:
Eine Funktion f: Nk ----> N heißt LOOP-berechenbar, wenn es ein LOOP-Programm
P gibt, das f in dem Sinne berechnet, daß P, gestartet mit den Werten n1, n2, ... , nk in den
Variablen x1, x2, ... , xk (und 0 in den restlichen Variablen) stoppt mit dem Wert f(n1, n2, ... , nk)
in der Variablen x0.
Frage: Ist jede (intuitiv) berechenbare Funktion LOOP-berechenbar?
Theoretische Informatik I
Berechenbarkeit und Komplexität 8
Nischwitz / Vogt
WHILE-Berechenbarkeit
Definition:
Ein WHILE-Programm ist ein Programm, dessen Syntax alle Konzepte von LOOPProgrammen enthält sowie zusätzlich:
™ Ist P ein WHILE-Programm und xi eine Variable, so ist auch
WHILE xi ≠ 0 DO P END
ein WHILE-Programm.
Definition:
Eine Funktion f: Nk ----> N heißt WHILE-berechenbar, wenn es ein WHILE-Programm
P gibt, das f in dem Sinne berechnet, daß P, gestartet mit den Werten n1, n2, ... , nk in den
Variablen x1, x2, ... , xk (und 0 in den restlichen Variablen) stoppt mit dem Wert f(n1, n2, ... , nk)
in der Variablen x0, falls f(n1, n2, ... , nk) definiert ist, und ansonsten nicht stoppt.
Theoretische Informatik I
Berechenbarkeit und Komplexität 9
Nischwitz / Vogt
GOTO-Berechenbarkeit
Definition:
GOTO-Programme bestehen aus Sequenzen von Anweisungen Ai, die jeweils durch eine
Marke Mi eingeleitet werden:
M1 : A1; M2 : A2; ... ; Mk : Ak
Als mögliche Anweisungen sind zugelassen:
Wertzuweisungen:
xi := xk + c bzw. xi := xk - c
Unbedingter Sprung:
GOTO Mi
Bedingter Sprung:
IF xi = c THEN GOTO Mk
Stopanweisung:
HALT
Definition:
Eine Funktion f: Nk ----> N heißt GOTO-berechenbar, wenn es ein
GOTO-Programm P gibt, das f in dem bekannten Sinn berechnet.
Theoretische Informatik I
Berechenbarkeit und Komplexität 10
Nischwitz / Vogt
Äquivalenz von GOTO- und WHILE-Berechenbarkeit
Satz:
Eine Funktion ist genau dann WHILE-berechenbar, wenn sie GOTO-berechenbar ist.
Beweis:
=>: fast trivial
<=: nicht so offensichtlich, aber auch nicht schwierig
(Der Beweis wird in der Vorlesung geführt.)
Aus dem Beweis ergibt sich folgendes
Korollar (Kleene'sche Normalform für WHILE-Programme)
Jede WHILE-berechenbare Funktion kann durch ein WHILE-Programm mit nur einer
WHILE-Schleife berechnet werden.
Theoretische Informatik I
Berechenbarkeit und Komplexität 11
Nischwitz / Vogt
Äquivalente Berechenbarkeitsbegriffe
Satz:
Für eine Funktion f: Nk ----> N sind die folgenden Aussagen äquivalent:
™ f ist Turing-berechenbar
™ f ist GOTO-berechenbar
™ f ist WHILE-berechenbar
Beweis:
WHILE-berechenbar => Turing-berechenbar: man gibt für jedes Konstrukt eines WHILE-Programmes
eine geeignete Turing-Maschine explizit an.
Turing-berechenbar => GOTO-berechenbar: Auch dieser Beweis ist konstruktiv, aber etwas
aufwendiger. Siehe z.B. Schöning S. 102-104.
Theoretische Informatik I
Berechenbarkeit und Komplexität 12
Nischwitz / Vogt
Primitiv rekursive Funktionen (1)
Definition:
Die Klasse der primitiv rekursiven Funktionen (auf den natürlichen Zahlen) ist induktiv wie
folgt definiert:
1. Alle konstanten Funktionen sind primitiv rekursiv.
2. Alle Projektionen sind primitiv rekursiv.
3. Die Nachfolgerfunktion auf den natürlichen Zahlen ist primitiv rekursiv.
4. Die Komposition primitiv rekursiver Funktionen ist primitiv rekursiv.
5. Jede Funktion, die durch sog. primitive Rekursion aus primitiv rekursiven
Funktionen entsteht ist primitiv rekursiv.
Primitive Rekursion führt die Definition von f(n+1,...) zurück auf f(n, ...).
Genauer: f erfüllt ein Gleichungssystem
f(0, ...)
= g(...)
f(n+1, ...) = h (f(n, ...), ...)
mit primitiv rekursiven Funktionen g und h.
Theoretische Informatik I
Berechenbarkeit und Komplexität 13
Nischwitz / Vogt
Primitiv rekursive Funktionen (2)
Beispiel 1:
Die Additionsfunktion add: N2 ----> N ist primitiv rekursiv, denn sie kann folgendermaßen
dargestellt werden:
add (0,x) = x
(identische Abbildung)
add (n+1,x) = s (add (n,x))
(s = Nachfolgerfunktion)
Beispiel 2:
Die Multiplikationsfunktion mult: N2 ----> N ist primitiv rekursiv, denn sie kann
folgendermaßen dargestellt werden:
mult (0,x) = 0
(konstante Abbildung)
mult (n+1,x) = add (mult (n,x), x)
Satz (ohne Beweis):
Die Klasse der primitiv rekursiven Funktionen stimmt mit der Klasse der LOOPberechenbaren Funktionen überein.
Theoretische Informatik I
Berechenbarkeit und Komplexität 14
Nischwitz / Vogt
µ-rekursive Funktionen
Definition:
Sei f: Nk+1 ----> N eine k+1-stellige Funktion. Die durch Anwendung des µ-Operators
auf f entstehende Funktion ist g: Nk ----> N mit
g (x1, x2, ... , xk) = min { n; f(n, x1, x2, ... , xk) = 0 und für alle m<n ist
f(m, x1, x2, ... , xk) definiert}
(Ist das Minimum nicht definiert, so ist g an dieser Stelle undefiniert.)
Definition:
Die Klasse der µ-rekursiven Funktionen ist die kleinste Klasse von Funktionen, die
™ die Basisfunktionen (konstante Funktionen, Projektionen, Nachfolgerfunktion) enthält und
™ abgeschlossen ist unter Komposition, primitiver Rekursion und Anwendung des µ-Operators.
Satz (ohne Beweis):
Die Klasse der µ-rekursiven Funktionen stimmt mit der Klasse der WHILE- (GOTO-,
Turing-) berechenbaren Funktionen überein.
Theoretische Informatik I
Berechenbarkeit und Komplexität 15
Nischwitz / Vogt
Die Ackermannfunktion
Ackermann gab 1928 (!) eine Funktion an, die zwar (intuitiv) berechenbar ist, jedoch nicht
LOOP-berechenbar (bzw. primitiv rekursiv).
ack: N2 ----> N
ack (0,y) = y + 1
ack (x,0) = ack (x-1, 1)
ack (x,y) = ack (x-1, ack (x, y-1))
Folgerungen:
¾ Es gibt totale, WHILE- (GOTO-, Turing-) berechenbare Funktionen, die nicht
LOOP-berechenbar sind.
¾ Es gibt µ-rekursive Funktionen, die nicht primitiv rekursiv sind.
Theoretische Informatik I
Berechenbarkeit und Komplexität 16
Nischwitz / Vogt
(Semi-)Entscheidbarkeit von Sprachen
Für ein Alphabet X und eine Menge A ⊆ X* definieren wir die
charakteristische Funktion χA: X* ----> {0,1} von A durch:
χA (w) = 1
falls w ∈ A
0
falls w ∉ A
Die "halbe" charakteristische Funktion von A, χA': X* ----> {0,1} sei definiert durch
χA' (w) = 1
falls w ∈ A
undefiniert
falls w ∉ A
Definition:
Eine Sprache A ⊆ X* heißt entscheidbar, falls die charakteristische Funktion χA
von A berechenbar ist.
Eine Sprache A ⊆ X* heißt semi-entscheidbar, falls die "halbe" charakteristische
Funktion χA' von A berechenbar ist.
Theoretische Informatik I
Berechenbarkeit und Komplexität 17
Nischwitz / Vogt
Rekursive Aufzählbarkeit
Definition:
Eine Sprache A ⊆ X* heißt rekursiv aufzählbar, falls A = ∅ ist, oder falls es eine
totale und berechenbare Funktion f: N ----> X gibt, so dass
A = {f(0), f(1), f(2), ... }
Bemerkungen:
¾ Jede rekursiv aufzählbare Sprache ist abzählbar.
¾ Jede Teilmenge einer abzählbaren Menge ist abzählbar.
¾ Nicht jede Teilmenge einer rekursiv aufzählbaren Menge ist rekursiv aufzählbar.
Theoretische Informatik I
Berechenbarkeit und Komplexität 18
Nischwitz / Vogt
Ein Äquivalenzsatz für Sprachen
Satz (ohne Beweis):
Für eine Sprache A ⊆ X* sind die folgenden Aussagen äquivalent:
™
™
™
™
™
A ist rekursiv aufzählbar
A ist semi-entscheidbar
A ist vom Typ 0
A ist Sprache einer Turingmaschine
die Funktion χA' ist berechenbar
Theoretische Informatik I
Berechenbarkeit und Komplexität 19
Nischwitz / Vogt
Das Halteproblem für Turingmaschinen
Durch geeignete Codierung der Übergangsfunktion läßt sich jede Turingmaschine T als
Wort wT über {0,1} darstellen.
Das Halteproblem für Turingmaschinen ist dann die Sprache
H = { (wT ,x); T angesetzt auf x hält an } (o.B.d.A.: x ∈ {0,1}* )
Satz:
Das Halteproblem für Turingmaschinen ist nicht entscheidbar.
Beweis: Angenommen, M sei eine Turingmaschine, die χH berechnet. Wir betrachten die
Turingmaschine M':
stop
nein
(wT ,x)
---> M ---> Ergebnis 1?
ja
unendliche Schleife
M' angesetzt auf seine eigene Codierung (wM' ,wM') hält genau dann an, wenn sie
nicht anhält: Widerspruch.
Theoretische Informatik I
Berechenbarkeit und Komplexität 20
Nischwitz / Vogt
Weitere nicht entscheidbare Probleme (1)
¾ Das Halteproblem für Turingmaschinen auf leerem Band ist nicht entscheidbar.
¾ Satz von Rice:
Sei Tur die Klasse aller Turing-berechenbaren Funktionen und S ⊂ Tur eine
nicht-triviale Teilmenge. Dann ist die Sprache
{ wT ; die von T berechnete Funktion liegt in S }
nicht entscheidbar.
Beispiel: Es ist nicht möglich, einer Turingmaschine anzusehen, ob sie eine konstante
Funktion berechnet.
Theoretische Informatik I
Berechenbarkeit und Komplexität 21
Nischwitz / Vogt
Weitere nicht entscheidbare Probleme (2)
Unter dem Wortproblem für eine Grammatik G versteht man die Frage, ob ein Wort x
zu L(G) gehört oder nicht.
Das Leerheitsproblem für eine Grammatik G fragt ob L(G) = ∅ ist.
Unter dem Schnittproblem versteht man die Frage, ob für zwei Grammatiken G1 und G2
die Menge L(G1) ∩ L(G2) leer ist oder nicht.
Das Äquivalenzproblem fragt, ob L(G1) = L(G2) ist.
¾ Das Wortproblem für Typ-0 Sprachen ist nicht entscheidbar.
¾ Das Leerheitsproblem für kontextsensitive Sprachen ist nicht entscheidbar.
¾ Das Schnittproblem für deterministisch kontextfreie Sprachen ist nicht entscheidbar.
¾ Das Äquivalenzproblem für kontextfreie Sprachen ist nicht entscheidbar.
¾ Das Problem, für eine kontextfreie Grammatik festzustellen, ob sie mehrdeutig ist,
ist nicht entscheidbar.
Theoretische Informatik I
Berechenbarkeit und Komplexität 22
Nischwitz / Vogt
Eine Beweismethode für (Nicht-)Entscheidbarkeit
Definition:
Seien A ⊆ X* und B ⊆ Y* Sprachen. Dann heißt A auf B reduzierbar – geschrieben als A < B –
falls es eine totale, berechenbare Funktion f: X* Æ Y* gibt, so dass für alle x ∈ X* gilt:
x ∈ X Ù f(x) ∈ Y
Satz:
Ist A < B und ist B entscheidbar (bzw. semi-entscheidbar), so ist auch A entscheidbar
(bzw. semi-entscheidbar).
Für den Nachweis der Unentscheidbarkeit einer Sprache B genügt es also, für eine
Sprache A, deren Unentscheidbarkeit bekannt ist, A < B nachzuweisen.
Theoretische Informatik I
Berechenbarkeit und Komplexität 23
Nischwitz / Vogt
Arithmetische Formeln
Definition:
Ein arithmetischer Term ist induktiv wie folgt definiert:
™ Jede natürliche Zahl ist ein Term.
™ Jede Variable xi ist ein Term.
™ Sind t1 und t2 Terme, so auch (t1 + t2) und (t1 * t2).
Eine arithmetische Formel ist induktiv wie folgt definiert:
™ Sind t1 und t2 Terme, so ist (t1 = t2) eine Formel.
™ Sind F und G Formeln, dann sind auch ¬ F, (F ∧ G) und (F ∨ G) Formeln.
™ Sind x eine Variable und F eine Formel, dann sind auch
∃ x F und ∀ x F Formeln.
Eine arithmetische Formel heißt wahr, wenn sie für alle Belegungen der Variablen wahr
ist, bzw. für ∃ x F , wenn es eine natürliche Zahl x gibt, für die die Formel wahr ist.
Theoretische Informatik I
Berechenbarkeit und Komplexität 24
Nischwitz / Vogt
Gödel'scher Unvollständigkeitssatz
Satz:
Die Menge der wahren arithmetischen Formeln ist nicht rekursiv aufzählbar.
Egal, wie man den Begriff "Beweis" axiomatisiert, ist es sicher eine Minimalforderung zu
verlangen, daß die Menge aller zulässigen Beweise entscheidbar (und somit auch rekursiv
aufzählbar) ist. Aus dieser Forderung und obigem Satz folgt dann:
Gödel'scher Unvollständigkeitssatz:
Jedes Beweissystem für die Menge der wahren arithmetischen Formeln ist
notwendigerweise unvollständig.
(D.h. es bleiben immer wahre arithmetische Formeln übrig, die nicht beweisbar sind.)
Theoretische Informatik I
Berechenbarkeit und Komplexität 25
Nischwitz / Vogt
Wachstumsordnung von Funktionen
Die O-Notation (Bachmann 1892) beschreibt das Wachstumsverhalten von Funktionen
für n Æ ∞ .
¾ Eine Funktion f(n) heißt von der (Wachstums-)Ordnung g(n)
f(n) = O (g(n))
falls der Quotient |f(n) / g(n)| beschränkt ist, also
|f(n)| < K |g(n)| für alle n, mit einer Konstanten K.
¾ Beispiele:
Jedes Polynom P(n) vom Grad < k ist von der Ordnung nk.
Die Exponentialfunktion f(n) = en ist nicht von polynomialer Ordnung, d.h. für alle
natürlichen Zahlen k ist en/nk unbeschränkt.
Theoretische Informatik I
Berechenbarkeit und Komplexität 26
Nischwitz / Vogt
Größenordnungen einiger Funktionen
n
n log(n)
n2
10
100
1000
10000
100000
23
461
6.908
92.103
1.151.293
100
10.000
1.000.000
100.000.000
10.000.000.000
Theoretische Informatik I
Berechenbarkeit und Komplexität 27
en
22.026
2,69 · 1043
Nischwitz / Vogt
Die Komplexitätsklasse P
Definition:
Sei f: N Æ N eine Funktion. Die Klasse TIME (f (n)) besteht aus allen Sprachen A,
für die es eine deterministische (Mehrband-) Turingmaschine M gibt mit A = L(M)
und timeM (x) < f (|x|).
Hierbei bedeutet timeM : X * ---> N die Anzahl der Rechenschritte von M bei Eingabe x.
Definition:
Die Komplexitätsklasse P ist wie folgt definiert:
P = { A ; es gibt eine Turingmaschine M und ein Polynom p
mit A = L(M) und timeM (x) < p (|x|) }
=
∪
TIME (p (n))
p Polynom
Theoretische Informatik I
Berechenbarkeit und Komplexität 28
Nischwitz / Vogt
Die Komplexitätsklasse NP
Wir dehnen die obigen Definitionen nun auf nichtdeterministische Turingmaschinen M aus.
Für ein x ∈ L(M) verstehen wir unter einer akzeptierenden Rechnung von M für x einen
Arbeitsablauf der nichtdeterministischen Turingmaschine M bei Eingabe x, der zu einem
Endzustand führt.
Definition:
Für eine nichtdeterministische Turingmaschine M sei
min { Länge einer akzeptierenden Rechnung
ntimeM (x) =
von M für x }
falls x ∈ L(M)
0
sonst
Sei f: N ---> N eine Funktion. Die Klasse NTIME (f (n)) besteht aus allen Sprachen A,
für die es eine nichtdeterministische (Mehrband-) Turingmaschine M gibt mit A = L(M)
und ntimeM (x) < f (|x|).
Ferner definieren wir:
Theoretische Informatik I
NP
=
∪
p Polynom
NTIME (p (n))
Berechenbarkeit und Komplexität 29
Nischwitz / Vogt
Das P-NP-Problem
Das P-NP-Problem:
Es ist unbekannt, ob P = NP oder P ≠ NP ist.
Es gelten die folgenden Inklusionen:
semi-entscheidbar
entscheidbar
LOOP-berechenbar
NP
P
Theoretische Informatik I
Berechenbarkeit und Komplexität 30
Nischwitz / Vogt
NP-Vollständigkeit
Definition:
Seien A ⊂ X* und B ⊂ Y* Sprachen. Dann heißt A auf B polynomial reduzierbar,
geschrieben als A < p B, falls es eine totale, mit polynomialer Komplexität berechenbare Funktion f: X* ----> Y* gibt, so daß für alle x ∈ X* gilt:
x ∈ A ⇔ f(x) ∈ B .
Satz:
Ist A < p B und B ∈ P (bzw. B ∈ NP), so ist auch A ∈ P (bzw. A ∈ NP).
Definition:
Eine Sprache A heißt NP-hart, falls L < p A für alle L ∈ NP.
Eine Sprache A heißt NP-vollständig, falls A NP-hart ist und A ∈ NP.
Satz:
Sei A NP-vollständig. Dann gilt:
A ∈ P ⇔ P = NP
Theoretische Informatik I
Berechenbarkeit und Komplexität 31
Nischwitz / Vogt
NP-vollständige Probleme (1)
Es gibt eine ganze Reihe bekannter Probleme, von denen man weiß, daß sie NP-vollständig
sind. Im folgenden werden einige davon definiert ohne ihre NP-Vollständigkeit zu zeigen.
Erfüllbarkeitsproblem der Aussagenlogik:
gegeben:
eine Formel F der Aussagenlogik
gefragt:
ist F erfüllbar, d.h. gibt es eine Belegung der Variablen
mit Konstanten ∈ {0,1}, so daß F den Wert 1 erhält?
Traveling Salesman:
gegeben:
Eine n x n Matrix (Mi,k) von "Entfernungen" zwischen n "Städten"
und eine Zahl m ∈ N.
gefragt:
Gibt es eine Permutation p (eine "Rundreise"), so daß
n−1
?
∑ i = 1 M p (i),p (i + 1) + M p (n),p (1) ≤ m
Theoretische Informatik I
Berechenbarkeit und Komplexität 32
Nischwitz / Vogt
NP-vollständige Probleme (2)
Rucksack (oder SUBSET SUM):
gegeben:
Natürliche Zahlen a1, a2, ..., ak ∈ N und b ∈ N.
gefragt:
Gibt es eine Teilmenge I von {1, 2, ..., k} mit
Σ ai = b ?
i∈I
Partition:
gegeben:
gefragt:
Natürliche Zahlen a1, a2, ..., ak ∈ N.
Gibt es eine Teilmenge J von {1, 2, ..., k}, so daß
Σ a i = Σ ai ?
i∈J
Theoretische Informatik I
i∉J
Berechenbarkeit und Komplexität 33
Nischwitz / Vogt
NP-vollständige Probleme (3)
Clique:
gegeben:
gefragt:
ein (ungerichteter) Graph G = (V, E) und ein k ∈ N.
gibt es eine "Clique" der Größe k, d.h. eine Teilmenge V' ⊂ V mit
k Elementen, so daß für alle u,v ∈ V' mit u ≠ v gilt: (u,v) ∈ E?
Gerichteter Hamiltonkreis:
gegeben:
Ein gerichteter Graph (V, E).
gefragt:
Besitzt G einen Hamilton-Kreis? (Das heißt einen Weg durch den
Graphen, der jeden Knoten genau einmal passiert und schließlich
wieder am Ausgangsknoten ankommt.)
Ungerichteter Hamiltonkreis:
gegeben:
Ein ungerichteter Graph (V, E).
gefragt:
Besitzt G einen Hamilton-Kreis?
Theoretische Informatik I
Berechenbarkeit und Komplexität 34
Nischwitz / Vogt
NP-harte Probleme
Satz:
Das Wortproblem für Typ-1-Sprachen ist NP-hart.
Satz:
Das Äquivalenzproblem für reguläre Grammatiken ist NP-hart.
Theoretische Informatik I
Berechenbarkeit und Komplexität 35
Nischwitz / Vogt
Herunterladen