Komplexitätstheorie

Werbung
Komplexitätstheorie
• es gibt Probleme, die nicht berechenbar sind (z.B.
Menge aller Funktionen N → N und die Menge aller
Sprachen sind überabzählbar)
• andere Probleme sind im P r i n z i p berechenbar,
möglicherweise aber nicht in der Praxis, da sie zuviel
Rechenzeit und zuviel Speicherplatz brauchen
• Komplexitätstheorie macht Aussagen über die
Ressourcen, die für ein bestimmtes Problem und
bestimmte Eingabedaten benötigt werden
worst case analysis (Ressourcenbedarf im ungünstigen
Fall)
average case analysis (Ressourcenbedarf im Mittel bei
gegebener Verteilung der Eingabewerte)
lower bounds (untere Schranke für Ressourcenbedarf)
upper bounds (obere Schranke für Ressourcenbedarf)
1
Asymptotische Notationen
• mit asymptotischen Notationen wird das wesentliche
Wachstumsverhalten einer Funktion gekennzeichnet
• O-Notation
Eine Funktion g: N → R liegt in der Klasse O(f) einer
Funktion f: N → R, wenn es eine positive reelle Zahl c
und eine natürliche Zahl n0 gibt, sodass für alle n ≥ n0
die Ungleichung g(n) ≤ c*f(n) gilt, d.h. g wächst
asymptotisch höchstens so rasch wie f.
Beispiel: n*log n = O(n2)
(beachte Schreibweise)
• Ω-Notation
Eine Funktion g: N → R liegt in der Klasse Ω(f) einer
Funktion f: N → R, wenn es eine positive reelle Zahl c
und eine natürliche Zahl n0 gibt, sodass für alle n ≥ n0
die Ungleichung g(n) ≥ c*f(n) gilt, d.h. g wächst
asymptotisch mindestens so rasch wie f.
Beispiel: 2n = Ω(n4)
• Θ-Notation
Eine Funktion g: N → R liegt in der Klasse Θ(f) einer
Funktion f: N → R, wenn es zwei positive reelle Zahlen
c1 und c2 und eine natürliche Zahl n0 gibt, sodass für
alle n ≥ n0 die Ungleichung c1*f(n) ≤ g(n) ≤ c2*f(n) gilt,
d.h. g wächst asymptotisch genau wie f.
Beispiel: 3n4 +27n3 -5 = O(n4) aber auch
3n4 +27n3 -5 = Ω(n4) also
3n4 +27n3 -5 = Θ(n4)
2
Wachstumsklassen
• Äquivalenzrelation: asymptotische Äquivalenz
Funktionen f und g heissen asymptotisch äquivalent,
wenn f in der Klasse Θ(g) liegt
asymptotische Äquivalenz führt Wachstumsklassen
von Funktionen ein
• polynomiale Wachstumsklasse
Polynomiale Wachstumsklasse vom Grad p ist die
Funktionenmenge Θ(np).
Hat die Funktion f polynomiales Wachstum, d.h. liegt
sie in der Menge Θ(P(n)), wobei P ein Polynom vom
Grad p ist, dann liegt f in der polynomialen
Wachstumsklasse Θ(np ).
• wichtige
n=1
n=2
n=3
polynomiale Wachstumsklassen:
linear
quadratisch
kubisch
• exponentielle Wachstumsklasse
Exponentielle Wachstumsklasse ist die Menge der
Funktionen Θ(an) mit a>1.
"exponentielle Explosion"
3
Wachstumsklassen
• logarithmische Wachstumsklasse
Logarithmische Wachstumsklasse ist die Menge der
Funktionen Θ(log n).
sublineares Wachstum
• n*log n
Viele Algorithmen liegen in der Wachstumsklasse
Θ(n*log n).
4
Beispiele
• Insertionsort (Sortieren durch Einfügen)
average case
Θ(n2)
worst case
• Quicksort
average case
worst case
Θ(n2)
Θ(n*log n)
Θ(n2)
5
Komplexitätsklassen P und NP
• Wortproblem
Gehört ein Wort zu einer Sprache?
Wieviele Schritte braucht eine Turingmaschine, um
diese Frage zu beantworten?
• Komplexitätsklasse P
Die polynomiale Komplexitätsklasse P ist die Menge
aller semientscheidbaren Sprachen L über einem
endlichen Alphabet A, die von einer deterministischen
Turingmaschine in polynomialer Zeit erkannt werden.
D.h. es gibt eine deterministische Turingmaschine und
ein Polynom P. Schreibt man ein Wort w ∈ A* auf das
Eingabeband der Turingmaschine, dann hält diese
genau dann nach höchstens P(|w|) Schritten an, wenn
w ∈ L ⊆ A*.
• Komplexitätsklasse NP
Die nichtdeterministische polynomiale Komplexitätsklasse NP ist die Menge aller semientscheidbaren
Sprachen L über einem endlichen Alphabet A, die von
einer nichtdeterministischen Turingmaschine in
polynomialer Zeit erkannt werden.
D.h. es gibt eine nichtdeterministische Turingmaschine und ein Polynom P. Schreibt man ein Wort
w ∈ A* auf das Eingabeband der Turingmaschine,
dann hält diese genau dann nach höchstens P(|w|)
Schritten an, wenn w ∈ L ⊆ A*.
• P ⊆ NP
6
Simulationstheorem
• Simulationstheorem
Sei P ein Polynom und L eine Sprache, deren Wörter w
von einer nichtdeterministischen Turingmaschine in
höchstens P(|w|) Schritten erkannt werden.
Dann gibt es eine deterministische Turingmaschine,
die die Wörter w der Sprache in höchstens cP(|w|)
erkennt.
• Simulation von nichtdeterministischen Turingmaschinen
Nichtdeterministische Turingmaschinen müssen auf
deterministischen Computern simuliert werden, d.h.
alle verschiedenen Alternativen müssen nacheinander
ausprobiert werden.
Konsequenz: NP Probleme führen im allgemeinen zu
exponentiellen Laufzeiten
7
Polynomiale Reduktion
• polynomiale Reduktion
A1, A2 endliche Alphabete
L1 ⊆ A1*, L2 ⊆ A2* Sprachen vom Typ 0
L1 ≤ L2:
L 1 ist polynomial reduzierbar auf L2 , wenn es eine in
polynomialer Zeit berechenbare Funktion f: A1 → A 2
gibt, sodass w ∈ L1⇔ f(w) ∈ L2
• Falls L1 ≤ L 2 , dann kann man das Spracherkennungsproblem w ∈ L1 auf das Spracherkennungsproblem f(w)
∈ L2 zurückführen – plus die Transformation f.
8
NP-Vollständigkeit
• NP-Vollständigkeit
Eine semientscheidbare Sprache L heisst NPvollständig, wenn
L in NP liegt und
jede andere Sprache L' in NP auf L polynomial
reduziert werden kann.
• Rückführung
Spracherkennungsproblem für eine NP-vollständige
Sprache L ist so komplex, dass das Spracherkennungsproblem einer beliebigen NP Sprache auf das von L
zurückgeführt werden kann – plus den Aufwand für die
Transformation f.
9
NP-Vollständigkeit
• Codierung
Um festzustellen, ob irgendein Problem in die Klassen
P, NP oder NP-vollständig fällt, codiert man es als
Spracherkennungproblem.
• Folgende Probleme sind NP-vollständig
Erfüllbarkeit aussagenlogischer Formeln (Cook's
Theorem)
Travelling Salesman (Hamiltonscher Weg)
Rucksack (Knapsack) Problem
Scheduling Problem
Registerbelegung
Leiterplattenentwurf
minimaler Verschnitt
...
• Für alle diese Probleme gibt es jedoch praktikable
Lösungen, wenn
die Zahlen klein sind
Symmetrien oder andere Beschränkungen auftauchen
Näherungen genügen
10
P=NP?
• P ⊆ NP
• Frage P=NP oder P≠NP?
Ein nichtdeterministische Turingmaschine kann durch
eine deterministische simuliert werden und führt dann
zu exponentieller Laufzeit.
Gibt es bessere Simulationsmethoden, die nur
polynomiale Laufzeiten haben?
Vermutlich nicht, aber der Beweis fehlt bisher.
Quantencomputer?
11
Herunterladen