Sie sind auf Seite 1von 12

7.

Zeit-Komplexität

2. Juli 2018

7. Zeit-Komplexität 2. Juli 2018 1 / 12


Contents

1 7.1 Messen von Zeit


2 7.2 Die Klasse P
3 7.3 Die Klasse N P
4 7.4 N P-Vollständigkeit
5 7.5 N P-Vollständige Probleme

7. Zeit-Komplexität 2. Juli 2018 2 / 12


Komplexität

Frage: warum kennen wir für manche Probleme Polynomzeitalgorithmen


und für andere nicht?
PRIME (testen ob eine Zahl eine Primzahl ist) ist in P (wurde 2002
gezeigt).
Kein Polynomzeitalgorithmus bekannt:

HamPath = {〈G , s, t〉 | G ist ger. Graph mit HP von s nach t}.

Einfach:

EULER = {〈G 〉 | G ist Graph mit Eulertour}.

7. Zeit-Komplexität 2. Juli 2018 3 / 12


Verifizierbarkeit

HamPath kann in polynomieller Zeit verifiziert werden:


Wir können nicht einfach testen, ob es einen Weg zwischen s und t
gibt, der jeden Knoten genau einmal besucht.
Falls ich aber so einen Weg angebe, kann ich einfach entscheiden, ob
es ein Hamilton Path ist oder nicht.

Ein anderes Problem mit der Eigenschaft:

COMPOSITES = {x | x = pq, für ganze Zahlen p, q > 0}

7. Zeit-Komplexität 2. Juli 2018 4 / 12


Verifikation

Definition
Ein Verifizierer für die Sprache A ist eine Algorithmus V mit

A = {w | V akzeptiert 〈w , c〉 für einen String c}.

Ein Polynomialzeitverifizierer arbeitet in polynomieler Zeit (in der Länge


von w ). Eine Sprache heißt polynomialzeitverifizierbar falls sie sie einen
Polynomialzeitverifizierer hat.

c wir auch Zertifikat oder Beweis genannt.


Falls eine Sprache polynomialzeitverifizierbar ist hat c eine Länge
polynomial in w .

7. Zeit-Komplexität 2. Juli 2018 5 / 12


Die Klasse N P

Definition
N P ist die Menge der Sprachen die in polynomieller Zeit verifiziert werden
kann.

Die Klasse N P enthält viele wichtige Probleme.


HamPath und COMPOSITES sind in N P.
Da PRIME in P ist, ist COMPOSITES auch in P.

7. Zeit-Komplexität 2. Juli 2018 6 / 12


Nichtdet TM für HamPath

N1 arbeitet wie folgt auf Eingabe 〈G , s, t〉:


1 Berechne eine zufällige Permutation p1 , . . . pn der Knoten.
2 Überprüfe ob p1 = s und pn = t. Falls nicht gebe reject aus.
3 Überprüfe für alle 1 ≤ i ≤ n − 1 ob es eine Kante zwischen pi und
pi+1 gibt. Falls nein, gebe reject aus, sonst gebe accept aus.

Klar: Die Laufzeit ist polynomiel in der Eingabe 〈G , s, t〉.

7. Zeit-Komplexität 2. Juli 2018 7 / 12


Eine andere Definition

Theorem
Eine Sprache A ist in N P, genau dann wenn es eine nichtdeterministische
TM gibt, die A in polynomieler Zeit entscheidet.

Beweis: Richtung 1: Sei A ∈ N P. Dann gibt es einen Polynomzeit-


verifizierer V für A. Nehmen wir an V hat eine Laufzeit von nk . Dann
können wir wie folgt eine nichtdet. TM N für A konstruieren. Sei w die
Eingabe für N der Länge n.

1 Rate einen String c der Länge nk .


2 Lasse V auf der Eingabe 〈w , c〉 laufen.
3 Akzeptiere genau dann wenn V akzeptiert, ansonsten gebe reject
aus.

7. Zeit-Komplexität 2. Juli 2018 8 / 12


Eine andere Definition II

Richtung 2: Wir nehmen an, daß A von einer nichtdet TM N in


polynomieller Laufzeit entschieden werden kann. Dann gibt kann man einen
Polynomzeitverifizierer V für A konstruieren. Sei 〈w , c〉 die Eingabe für V .

1 Simuliere N auf der Eingabe w :


1 Benutze c als Aufzähler von Nummern für die Entscheidungen, die N
machen muss.
2 Akzeptiere genau dann wenn N akzeptiert, ansonsten gebe reject
aus.

7. Zeit-Komplexität 2. Juli 2018 9 / 12


NTIME (t(n))

Definition
Sei t : N → R+ eine Funktion. Die Komplexitätsklasse NTime(t(n))
enthält alle Probleme, die in Zeit O(t(n)) von einer nichtdet. TM
entschieden werden können.

󰁞
NP = NTime(nk ).
k

Es ist auch nicht wichtig welches nichtdet. Maschinenmodel man benutzt.

7. Zeit-Komplexität 2. Juli 2018 10 / 12


Probleme in N P

k-Clique = {〈G , k〉 | G ist ein ungerichteter Graph mit einer k-Clique}

SubsetSum = {〈S, t〉 | S = {x1 , . . . xk } und es gibt {y1 , . . . yℓ }


󰁛
⊆ {x1 , . . . xk } so daß yi = t}

Interessant: Es ist nicht klar ob k − Clique und SubsetSum auch in N P


sind.
Es ist einfacher zu zeigen, daß etwas existiert, als zu zeigen daß es
nicht existiert.

Definition
CO − N P ist die Klasse der Sprachen deren Komplement in N P ist.

7. Zeit-Komplexität 2. Juli 2018 11 / 12


P versus N P

P ist die Klasse der Probleme die in polynomieller Zeit gelößt werden
können.
N P ist die Klasse der Probleme die in polynomieller Zeit verifiziert
werden können.

Die Frage P = N P ist eine der wichtigsten ungelößten Fragen in der


Informatik.

Was wir wissen:


󰁞 k
P ⊆ N P ⊆ EX PT IME = Time(2n ).
k

7. Zeit-Komplexität 2. Juli 2018 12 / 12

Das könnte Ihnen auch gefallen