Theoretische Informatik 3 WS 2006/07 Organisatorisches

Werbung
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Organisatorisches
I
Theoretische Informatik 3
WS 2006/07
Vorlesungstermine
Montags und Donnerstag, 16:00–17:30 Uhr im H9
Volker Strehl
Informatik 8
19. Oktober 2006
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Organisatorisches
Organisatorisches
I
Vorlesungstermine
I
Montags und Donnerstag, 16:00–17:30 Uhr im H9
I
Übungen in 7 Gruppen, Termine und Eintragung → Webseite
Vorlesungstermine
Montags und Donnerstag, 16:00–17:30 Uhr im H9
I
Übungen in 7 Gruppen, Termine und Eintragung → Webseite
I
Webseite:
www8.informatik.uni-erlangen.de/IMMD8/Lectures/THINF/
enthält Materialien zur Vorlesung, Übungsaufgaben, aktuelle
Informationen etc. (NB: nicht alles ist von aussen zugänglich)
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Organisatorisches
Empfohlene Literatur
I
Vorlesungstermine
Montags und Donnerstag, 16:00–17:30 Uhr im H9
I
Übungen in 7 Gruppen, Termine und Eintragung → Webseite
I
Webseite:
www8.informatik.uni-erlangen.de/IMMD8/Lectures/THINF/
enthält Materialien zur Vorlesung, Übungsaufgaben, aktuelle
Informationen etc. (NB: nicht alles ist von aussen zugänglich)
Kontakt:
I
I
I
I
I
Adresse: Haberstrasse 2, 3. Stock
Telefon: 85-28712
email: [email protected]
Sprechstunde: Termin per email vereinbaren
I
M. Aigner, Diskrete Mathematik, Vieweg, 2005 (5. Aufl.).
I
T. Cormen, C. Leiserson, R. Rivest, Introduction to
Algorithms, MIT Press, 2001 (2. A.).
I
R. Graham, D. Knuth, O. Patashnik, Concrete
Mathematics, Addison-Wesley, 1994 (2. A.).
I
V. Heun, Grundlegende Algorithmen, Vieweg, 2003 (2. A.).
I
D. Knuth, The Art of Computer Programming (1–3),
Addison-Wesley, 1962–1997.
I
U. Schöning, Algorithmik, Spektrum-Verlag, 2001.
I
R. Sedgewick, P. Flajolet, An Introduction to the
Analysis of Algorithms, Addison-Wesley, 1996.
I
H. Wilf, Algorithms and Complexity, Prentice-Hall 1986.
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Übersicht
Übersicht
I
Einleitung – Begriffe und Beispiele
I
Einleitung – Begriffe und Beispiele
I
Mathematische Hilfsmittel
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Übersicht
Übersicht
I
Einleitung – Begriffe und Beispiele
I
Einleitung – Begriffe und Beispiele
I
Mathematische Hilfsmittel
I
Mathematische Hilfsmittel
I
Exemplarische Analysen
I
Exemplarische Analysen
I
Rekursion und Komplexität
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Übersicht
Übersicht
I
Einleitung – Begriffe und Beispiele
I
Einleitung – Begriffe und Beispiele
I
Mathematische Hilfsmittel
I
Mathematische Hilfsmittel
I
Exemplarische Analysen
I
Exemplarische Analysen
I
Rekursion und Komplexität
I
Rekursion und Komplexität
I
Information und Komplexität
I
Information und Komplexität
I
Arithmetik und Komplexität
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Teil I
Einleitung
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Was ist ein Problem?
Probleme
I
Theoretische Informatik 3 WS 2006/07
Was ist ein Problem?
Was ist ein Problem?
Probleme
I
Was ist ein Problem?
I
D = domain = Definitionsbereich = “Instanzen”
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Was ist ein Problem?
Probleme
I
Theoretische Informatik 3 WS 2006/07
Probleme
Was ist ein Problem?
I
I
Was ist ein Problem?
I
D = domain = Definitionsbereich = “Instanzen”
R = range = Wertebereich
Was ist ein Problem?
I
I
I
Theoretische Informatik 3 WS 2006/07
Szenario
Theoretische Informatik 3 WS 2006/07
Szenario
Was ist ein Problem?
Probleme
I
D = domain = Definitionsbereich = “Instanzen”
R = range = Wertebereich
f : D → R berechenbare Funktion
Probleme
Was ist ein Problem?
I
I
I
I
Was ist ein Problem?
D = domain = Definitionsbereich = “Instanzen”
R = range = Wertebereich
f : D → R berechenbare Funktion
falls R = {true, false} : Entscheidungsproblem
I
Was ist ein Problem?
I
I
I
I
I
D = domain = Definitionsbereich = “Instanzen”
R = range = Wertebereich
f : D → R berechenbare Funktion
falls R = {true, false} : Entscheidungsproblem
Grösse von Instanzen size : D → N
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Was ist ein Problem?
Algoritmen und Kosten
Probleme
Kosten
I
I
Was ist ein Problem?
I
I
I
I
I
I
D = domain = Definitionsbereich = “Instanzen”
R = range = Wertebereich
f : D → R berechenbare Funktion
falls R = {true, false} : Entscheidungsproblem
Grösse von Instanzen size : D → N
oft: Dn = {d ∈ D ; size(d) = n} ist endlich für n ≥ 0, dann
dn = ]Dn
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Algoritmen und Kosten
Algoritmen und Kosten
Kosten
I
Algorithmen und Kosten
Kosten
Algorithmen und Kosten
I
A : Algorithmus zur Berechnung von f : D → R
(auf TM oder RAM oder dergl.), d.h.
I
Algorithmen und Kosten
I
∀d ∈ D : A(d) = f (d)
A : Algorithmus zur Berechnung von f : D → R
(auf TM oder RAM oder dergl.), d.h.
∀d ∈ D : A(d) = f (d)
I
Kostenfunktion (modellabhängig)
costA : D → N : d 7→ costA (d)
soll Laufzeitverhalten (oder Speicherverbrauch) von A auf
einem Maschinenmodell (TM,RAM) anhand der bestimmenden
Einflussgrössen (z.B. Anzahl der elementaren Rechenschritte
einer TM, Anzahl der arithmetischen oder
Vergleichsoperationen einer RAM) widergeben
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
worst-case vs. average-case
I
worst-case vs. average-case
worst-case und average-case
I
worst-case und average-case
I
worst-case Komplexität
costA (n) = max costA (d)
d∈Dn
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
worst-case vs. average-case
I
worst-case vs. average-case
worst-case und average-case
I
I
worst-case Komplexität
worst-case und average-case
I
costA (n) = max costA (d)
costA (n) = max costA (d)
d∈Dn
I
average-case Komplexität
costA (n) =
worst-case Komplexität
d∈Dn
I
1 X
costA (d)
dn
average-case Komplexität
costA (n) =
d∈Dn
1 X
costA (d)
dn
d∈Dn
I
Hauptproblem:
Wie skaliert der Berechnungsaufwand mit der Problemgrösse?
Wie verhalten sich die Folgen (costA (n))n≥0 bzw.
(costA (n))n≥0 asymptotisch, d.h. für n → ∞?
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
worst-case vs. average-case
Zwei wichtige Bemerkungen
I
Theoretische Informatik 3 WS 2006/07
Eine exakte Bestimmung (“Formel”) von costA (n) bzw.
costA (n) ist meist nicht möglich. Man muss sich mit
“asymptotischen” Aussagen im Sinne der Landau-Notation
begnügen, z.B. :
worst-case vs. average-case
Zwei wichtige Bemerkungen
I
costA (n) ∈ O(n2 ), ∈ Ω(n3/2 ), ∈ Θ(n log n), ∼ 7nlog 3 , . . .
Eine exakte Bestimmung (“Formel”) von costA (n) bzw.
costA (n) ist meist nicht möglich. Man muss sich mit
“asymptotischen” Aussagen im Sinne der Landau-Notation
begnügen, z.B. :
costA (n) ∈ O(n2 ), ∈ Ω(n3/2 ), ∈ Θ(n log n), ∼ 7nlog 3 , . . .
I
Bei rekursiven Algorithmen genügen die Aufwandsfunktionen
“divide-and-conquer” Rekursionsgleichungen, z.B.
T (2n) = 7T (n) + Θ(n2 )
Wie kann man daraus Aussagen über das asymptotische
Verhalten von T (n) gewinnen?
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Komplexität von Algorithmen und von Problemen
Wichtige Unterscheidung
I
Theoretische Informatik 3 WS 2006/07
Komplexität von Algorithmen
Komplexität von Algorithmen und von Problemen
Wichtige Unterscheidung
I
Komplexität von Algorithmen
I
Jeder konkrete Algorithmus A für ein Problem f : D → R hat
eine einem Berechnungsmodell bezüglich einer Grössenfunktion
size und eines Komplexitätsmasses cost eine
Komplexitätsfunktion.
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Komplexität von Algorithmen und von Problemen
Wichtige Unterscheidung
I
Komplexität von Algorithmen
I
I
Theoretische Informatik 3 WS 2006/07
Komplexität von Algorithmen und von Problemen
Wichtige Unterscheidung
I
Jeder konkrete Algorithmus A für ein Problem f : D → R hat
eine einem Berechnungsmodell bezüglich einer Grössenfunktion
size und eines Komplexitätsmasses cost eine
Komplexitätsfunktion.
Komplexität von Problemen
Komplexität von Algorithmen
I
I
Komplexität von Problemen
I
Theoretische Informatik 3 WS 2006/07
Szenario
Welchen Aufwand benötigt jeder Algorithmus zur Lösung eines
Problems (in einem gegebenen Berechnungsmodell)? Das ist
eine inhärente Eigenschaft des Problems!
Theoretische Informatik 3 WS 2006/07
Szenario
Obere und untere Schranken
I
Jeder konkrete Algorithmus A für ein Problem f : D → R hat
eine einem Berechnungsmodell bezüglich einer Grössenfunktion
size und eines Komplexitätsmasses cost eine
Komplexitätsfunktion.
Konkrete Algorithmen liefern obere Schranken für die
Problemkomplexität — “je kleiner, desto besser”.
Obere und untere Schranken
I
Konkrete Algorithmen liefern obere Schranken für die
Problemkomplexität — “je kleiner, desto besser”.
I
Untere Schranken treffen auf alle Algorithmen für ein Problem
zu – “je grösser, desto besser” – sind aber meist sehr schwer
zu gewinnen!
Theoretische Informatik 3 WS 2006/07
Szenario
Theoretische Informatik 3 WS 2006/07
Szenario
Obere und untere Schranken
Obere und untere Schranken
I
Konkrete Algorithmen liefern obere Schranken für die
Problemkomplexität — “je kleiner, desto besser”.
I
Konkrete Algorithmen liefern obere Schranken für die
Problemkomplexität — “je kleiner, desto besser”.
I
Untere Schranken treffen auf alle Algorithmen für ein Problem
zu – “je grösser, desto besser” – sind aber meist sehr schwer
zu gewinnen!
I
Untere Schranken treffen auf alle Algorithmen für ein Problem
zu – “je grösser, desto besser” – sind aber meist sehr schwer
zu gewinnen!
I
Für optimale Algorithmen stimmt die
Algorithmen-Komplexität mit einer unteren Schranke für die
Problemkomplexität überein.
I
Für optimale Algorithmen stimmt die
Algorithmen-Komplexität mit einer unteren Schranke für die
Problemkomplexität überein.
I
Für die meisten Probleme sind gute untere Schranke nicht
bekannt – und damit keine optimalem Algorithmen!
Theoretische Informatik 3 WS 2006/07
Szenario
Szenario
Komplexitätsanalyse und Komplexitätstheorie
Begriffe
I
Theoretische Informatik 3 WS 2006/07
Komplexitätsanalyse beschäftigt sich mit dem Entwurf der
Analyse von möglichst effizienten Algorithmen für konkrete
Probleme
Komplexitätsanalyse und Komplexitätstheorie
Begriffe
I
Komplexitätsanalyse beschäftigt sich mit dem Entwurf der
Analyse von möglichst effizienten Algorithmen für konkrete
Probleme
I
Komplexitätstheorie untersucht die Komplexität von
Problemen und die Komplexitäts-Beziehungen zwischen
Problemen.Komplexitätsklassen (wie P, NP, EXPTIME, PSPACE)
fassen Probleme “gleicher Schwierigkeit” zu Klassen
zusammen und untersuchen Beziehungen zwischen diesen
Klassen.
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Zwei formale Sprachen
Zwei formale Sprachen
Zwei formale Sprachen
I
Zwei formale Sprachen
Reguläre Sprache F = (a + bb)∗ ⊆ {a, b}∗ .
Wieviele Wörter der Länge n enthält F ?
I
Reguläre Sprache F = (a + bb)∗ ⊆ {a, b}∗ .
Wieviele Wörter der Länge n enthält F ?
I
Kontextfreie Sprache der korrekten Klammerungen
D ⊆ {a, b}∗ , erzeugt durch
D → aDbD | λ.
Wieviele Wörter der Länge n enthält D?
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Zwei formale Sprachen
Zwei formale Sprachen
Zwei formale Sprachen
I
I
Beispiel: reguläre formale Sprache
bb)∗
{a, b}∗ .
Reguläre Sprache F = (a +
⊆
Wieviele Wörter der Länge n enthält F ?
Kontextfreie Sprache der korrekten Klammerungen
D ⊆ {a, b}∗ , erzeugt durch
D → aDbD | λ.
Wieviele Wörter der Länge n enthält D?
I
Allgemein:
Σ endliches Alphabet, L ⊆ Σ∗ formale Sprache
Wie verhält sich `n (L) := ](L ∩ Σn ) für n → ∞?
Welche Rolle spielt dabei der Chomsky-Typ von L?
I
Für F = (a + bb)∗ ⊆ {a, b}∗ gilt
`0 (F ) = `1 (F ) = 1
`n+2 (F ) = `n+1 (F ) + `n (F ) (n ≥ 0)
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Zwei formale Sprachen
Zwei formale Sprachen
Beispiel: reguläre formale Sprache
I
Für F = (a + bb)∗ ⊆ {a, b}∗ gilt
Beispiel: reguläre formale Sprache
I
Für F = (a + bb)∗ ⊆ {a, b}∗ gilt
`0 (F ) = `1 (F ) = 1
`0 (F ) = `1 (F ) = 1
`n+2 (F ) = `n+1 (F ) + `n (F ) (n ≥ 0)
`n+2 (F ) = `n+1 (F ) + `n (F ) (n ≥ 0)
und daher
und daher
`n (F ) = Fn+1 Fibonacci-Zahl
`n (F ) = Fn+1 Fibonacci-Zahl
Asymptotisch exponentielles Wachstum:
Fn =
φn − φbn
φn
√
∼√
5
5
√
mit φ = 1+2 5 = 1.61803 . . . (goldener Schnitt),
√
φb = 1− 5 = −0.61803 . . .
2
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Zwei formale Sprachen
Zwei formale Sprachen
Beispiel: kontextfreie formale Sprache
I
Für die durch
Beispiel: kontextfreie formale Sprache
I
D → aDbD | λ
erzeugte kontextfreie Sprache der korrekten Klammerungen
(äquivalent: Binärbäume) gilt
Für die durch
D → aDbD | λ
erzeugte kontextfreie Sprache der korrekten Klammerungen
(äquivalent: Binärbäume) gilt `2n+1 (D) = 0 für n ≥ 0 und für
dn := `2n (D)
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Zwei formale Sprachen
Zwei formale Sprachen
Beispiel: kontextfreie formale Sprache
I
Für die durch
Beispiel: kontextfreie formale Sprache
I
Für die durch
D → aDbD | λ
D → aDbD | λ
erzeugte kontextfreie Sprache der korrekten Klammerungen
(äquivalent: Binärbäume) gilt `2n+1 (D) = 0 für n ≥ 0 und für
dn := `2n (D)
erzeugte kontextfreie Sprache der korrekten Klammerungen
(äquivalent: Binärbäume) gilt `2n+1 (D) = 0 für n ≥ 0 und für
dn := `2n (D)
dn+1 = d0 · dn + d1 · dn−1 + d2 · dn−2 + · · · + dn · d0
dn+1 = d0 · dn + d1 · dn−1 + d2 · dn−2 + · · · + dn · d0
Wir werden später sehen:
1
2n
4n
dn = `2n (D) =
∼√
n+1 n
πn3
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Multiplikation von Polynomen und ganzen Zahlen
Polynome
Konventionen:
I
Theoretische Informatik 3 WS 2006/07
Polynom ' Folge der Koeffizienten
Multiplikation von Polynomen und ganzen Zahlen
Polynome
Konventionen:
I
a(X ) = a0 +a1 X +a2 X 2 +· · ·+am X m ↔ (a0 , a1 , a2 , . . . , am )
Polynom ' Folge der Koeffizienten
a(X ) = a0 +a1 X +a2 X 2 +· · ·+am X m ↔ (a0 , a1 , a2 , . . . , am )
I
“Grösse” eines Polynoms = Anzahl der Koeffizienten
(i.w. Grad)
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Multiplikation von Polynomen und ganzen Zahlen
Polynome
Konventionen:
I
I
I
Theoretische Informatik 3 WS 2006/07
Multiplikation von Polynomen und ganzen Zahlen
Multiplikation
a(X ) = a0 + a1 X + a2 X 2 + · · · + am X m ↔
(a0 , a1 , a2 , . . . , am )
b0 + b1 X + b2 X 2 + · · · + bn X n ↔
(b0 , b1 , b2 , . . . , bn )
Polynom ' Folge der Koeffizienten
b(X ) =
a(X ) = a0 +a1 X +a2 X 2 +· · ·+am X m ↔ (a0 , a1 , a2 , . . . , am )
c(X ) =
“Grösse” eines Polynoms = Anzahl der Koeffizienten
(i.w. Grad)
=
a(X ) · b(X )
c0 + c1 X + · · · + cm+n X m+n ↔ (c0 , c1 , c2 , . . . , cm+n )
mit
Aufwand für Polynomoperationen wird gemessen in Anzahl
der Operationen im Koeffizientenbereich (oft auch nur:
Multiplikationen im Koeffizientenbereich)
ck =
X
ai · bj (0 ≤ i ≤ m, 0 ≤ j ≤ n, 0 ≤ k ≤ m + n)
i+j=k
Berechnung mittels dieser Formel erfordert (m + 1)(n + 1)
Multiplikationen im Koeffizientenbereich ⇒ Aufwand wächst (für
m = n) quadratisch mit der Grösse der Instanzen
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Multiplikation von Polynomen und ganzen Zahlen
Komplexität der Multiplikation
I
Theoretische Informatik 3 WS 2006/07
“klassisch”: O(n2 )
Multiplikation von Polynomen und ganzen Zahlen
Komplexität der Multiplikation
I
“klassisch”: O(n2 )
I
das rekursive (divide-and-conquer) Verfahren von
Karatsuba leistet dies mit einem Aufwand Mkara (n), für den
gilt
Mkara (2n) = 3 · Mkara (n) + Θ(n)
und das ergibt Mkara (n) ∈ O(nlog2 3 ), wobei log2 3 ≈ 1.585.
Bemerkung: analoge Aussagen gelten für die Multiplikation von
ganzen Zahlen
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Multiplikation von Polynomen und ganzen Zahlen
Komplexität der Multiplikation
Multiplikation von Polynomen und ganzen Zahlen
Komplexität der Multiplikation
I
“klassisch”: O(n2 )
I
“klassisch”: O(n2 )
I
das rekursive (divide-and-conquer) Verfahren von
Karatsuba leistet dies mit einem Aufwand Mkara (n), für den
gilt
Mkara (2n) = 3 · Mkara (n) + Θ(n)
I
das rekursive (divide-and-conquer) Verfahren von
Karatsuba leistet dies mit einem Aufwand Mkara (n), für den
gilt
Mkara (2n) = 3 · Mkara (n) + Θ(n)
und das ergibt Mkara (n) ∈ O(nlog2 3 ), wobei log2 3 ≈ 1.585.
I
Man kann Polynome auch ganz anders multiplizieren:
Evaluation und Interpolation
Bemerkung: analoge Aussagen gelten für die Multiplikation von
ganzen Zahlen
Theoretische Informatik 3 WS 2006/07
Beispiele
I
Man kann Polynome auch ganz anders multiplizieren:
Evaluation und Interpolation
I
mittels schneller Fourier-Transformation (FFT=spezielles
rekursives Evaluations-Interpolationsschema) kann man einen
Aufwand O(n log n) erreichen
Bemerkung: analoge Aussagen gelten für die Multiplikation von
ganzen Zahlen
Theoretische Informatik 3 WS 2006/07
Beispiele
one-way Funktionen
one-way?
I
und das ergibt Mkara (n) ∈ O(nlog2 3 ), wobei log2 3 ≈ 1.585.
Multiplizieren ist effizient machbar, aber gilt das auch für das
Faktorisieren?
one-way Funktionen
one-way?
I
Multiplizieren ist effizient machbar, aber gilt das auch für das
Faktorisieren?
I
Exponentiation ist effizient machbar, aber gilt das auch für
das Logarithmieren?
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
one-way Funktionen
one-way?
one-way Funktionen
one-way?
I
Multiplizieren ist effizient machbar, aber gilt das auch für das
Faktorisieren?
I
Multiplizieren ist effizient machbar, aber gilt das auch für das
Faktorisieren?
I
Exponentiation ist effizient machbar, aber gilt das auch für
das Logarithmieren?
I
Exponentiation ist effizient machbar, aber gilt das auch für
das Logarithmieren?
I
Antworten auf diese Fragen wären essentiell für die Sicherheit
gängiger kryptographischer Verfahren!
I
Antworten auf diese Fragen wären essentiell für die Sicherheit
gängiger kryptographischer Verfahren!
I
Faktorisieren und Logarithmieren sind effizient durchführbar
mit einem Computer, den es noch nicht gibt:
Quantencomputing.
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Sortierkomplexität
Sortieren
I
Theoretische Informatik 3 WS 2006/07
Allgemein: (A, ≤) totalgeordnete Menge
Sortieren = Umordnen von Elementen einer A-Liste (oder
eines A-Feldes) auf- oder absteigend bezgl. ≤
Sortierkomplexität
Sortieren
I
Allgemein: (A, ≤) totalgeordnete Menge
Sortieren = Umordnen von Elementen einer A-Liste (oder
eines A-Feldes) auf- oder absteigend bezgl. ≤
I
Instanzengrösse = Listenlänge
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Sortierkomplexität
Sortieren
Sortierkomplexität
Sortieren
I
Allgemein: (A, ≤) totalgeordnete Menge
Sortieren = Umordnen von Elementen einer A-Liste (oder
eines A-Feldes) auf- oder absteigend bezgl. ≤
I
Allgemein: (A, ≤) totalgeordnete Menge
Sortieren = Umordnen von Elementen einer A-Liste (oder
eines A-Feldes) auf- oder absteigend bezgl. ≤
I
Instanzengrösse = Listenlänge
I
Instanzengrösse = Listenlänge
I
Aufwand = Anzahl der paarweisen Vergleiche von
Listenelementen
I
Aufwand = Anzahl der paarweisen Vergleiche von
Listenelementen
I
Vereinfachung (Permutationsmodell): Listenelemente sind
paarweise verschieden, es kommt nur auf die relativen
Ordnungsbeziehungen zwischen den Listenelementen an, nicht
auf absolute Werte
→ Instanzen der Grösse n = Permutationen von {1, 2, . . . , n}
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Sortierkomplexität
Sortieren
I
Allgemein: (A, ≤) totalgeordnete Menge
Sortieren = Umordnen von Elementen einer A-Liste (oder
eines A-Feldes) auf- oder absteigend bezgl. ≤
I
Instanzengrösse = Listenlänge
I
Aufwand = Anzahl der paarweisen Vergleiche von
Listenelementen
I
Vereinfachung (Permutationsmodell): Listenelemente sind
paarweise verschieden, es kommt nur auf die relativen
Ordnungsbeziehungen zwischen den Listenelementen an, nicht
auf absolute Werte
→ Instanzen der Grösse n = Permutationen von {1, 2, . . . , n}
√
NB: es gibt n! ∼ (n/e)n · 2πn Instanzen der Grösse n
I
Theoretische Informatik 3 WS 2006/07
Sortierkomplexität
Sortieralgorithmen
I
Es gibt viele verschiedene (experimentell und theoretisch gut
untersuchte) Sortieralgorithmen (→ Knuth, TAOCP 3).
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Sortierkomplexität
Sortieralgorithmen
Sortierkomplexität
Sortieralgorithmen
I
Es gibt viele verschiedene (experimentell und theoretisch gut
untersuchte) Sortieralgorithmen (→ Knuth, TAOCP 3).
I
Es gibt viele verschiedene (experimentell und theoretisch gut
untersuchte) Sortieralgorithmen (→ Knuth, TAOCP 3).
I
Bei einigen der “simplen” Algorithmen (Insertionsort,
Selectionsort, Bubblesort) wächst der Aufwand im
worst- und im average-case quadratisch in der Listenlänge
O(n2 ).
I
Bei einigen der “simplen” Algorithmen (Insertionsort,
Selectionsort, Bubblesort) wächst der Aufwand im
worst- und im average-case quadratisch in der Listenlänge
O(n2 ).
I
Bei “guten” Algorithmen (Heapsort, Mergesort) wächst
der Aufand im worst-case (und auch im average-case) wie
O(n log n).
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Sortierkomplexität
Sortieralgorithmen
Sortierkomplexität
Sortieralgorithmen
I
Es gibt viele verschiedene (experimentell und theoretisch gut
untersuchte) Sortieralgorithmen (→ Knuth, TAOCP 3).
I
Es gibt viele verschiedene (experimentell und theoretisch gut
untersuchte) Sortieralgorithmen (→ Knuth, TAOCP 3).
I
Bei einigen der “simplen” Algorithmen (Insertionsort,
Selectionsort, Bubblesort) wächst der Aufwand im
worst- und im average-case quadratisch in der Listenlänge
O(n2 ).
I
Bei einigen der “simplen” Algorithmen (Insertionsort,
Selectionsort, Bubblesort) wächst der Aufwand im
worst- und im average-case quadratisch in der Listenlänge
O(n2 ).
I
Bei “guten” Algorithmen (Heapsort, Mergesort) wächst
der Aufand im worst-case (und auch im average-case) wie
O(n log n).
I
Bei “guten” Algorithmen (Heapsort, Mergesort) wächst
der Aufand im worst-case (und auch im average-case) wie
O(n log n).
I
Bei Quicksort wächst der Aufwand im worst-case
quadratisch, im average-case aber wie O(n log n).
I
Bei Quicksort wächst der Aufwand im worst-case
quadratisch, im average-case aber wie O(n log n).
I
Bei Shellsort kann man einen Aufwand wie O(n1+ ) (für
beliebig kleines > 0) erreichen.
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Sortierkomplexität
Sortierkomplexität
Untere Schranke für die Sortierkomplexität
I
Jeder auf paarweisen Vergleichen basierende
Sortieralgorithmus benötigt auf Listen der Länge n im
worst-case und im average-case mindestens
Untere Schranke für die Sortierkomplexität
I
Jeder auf paarweisen Vergleichen basierende
Sortieralgorithmus benötigt auf Listen der Länge n im
worst-case und im average-case mindestens
log n! ∼ n log n − Θ(n)
log n! ∼ n log n − Θ(n)
Vergleichsoperationen (informationstheoretische Schranke)
Vergleichsoperationen (informationstheoretische Schranke)
I
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Erfüllbarkeit: ein NP-vollständiges Problem
Das Problem k-SAT
I
In die average-case-Aussage geht der Entropiebegriff der
Informationstheorie entscheidend ein.
X = {x1 , x2 , . . . , xn } Menge von a.l. Variablen,
X = {x1 , x2 , . . . , xn } negierte Variablen
L = X ∪ X : Menge der Literale
Erfüllbarkeit: ein NP-vollständiges Problem
Das Problem k-SAT
I
X = {x1 , x2 , . . . , xn } Menge von a.l. Variablen,
X = {x1 , x2 , . . . , xn } negierte Variablen
L = X ∪ X : Menge der Literale
I
Klausel: Disjunktion von Literalen
K = `1 ∨ `2 ∨ · · · ∨ `s
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Erfüllbarkeit: ein NP-vollständiges Problem
Das Problem k-SAT
Erfüllbarkeit: ein NP-vollständiges Problem
Das Problem k-SAT
I
X = {x1 , x2 , . . . , xn } Menge von a.l. Variablen,
X = {x1 , x2 , . . . , xn } negierte Variablen
L = X ∪ X : Menge der Literale
I
X = {x1 , x2 , . . . , xn } Menge von a.l. Variablen,
X = {x1 , x2 , . . . , xn } negierte Variablen
L = X ∪ X : Menge der Literale
I
Klausel: Disjunktion von Literalen
I
Klausel: Disjunktion von Literalen
K = `1 ∨ `2 ∨ · · · ∨ `s
I
AL-Formel in KNF: Konjunktion von Literalen
K = `1 ∨ `2 ∨ · · · ∨ `s
I
AL-Formel in KNF: Konjunktion von Literalen
F = K1 ∧ K2 ∧ · · · ∧ Kt
F = K1 ∧ K2 ∧ · · · ∧ Kt
I
Theoretische Informatik 3 WS 2006/07
Theoretische Informatik 3 WS 2006/07
Beispiele
Beispiele
Erfüllbarkeit: ein NP-vollständiges Problem
Das Problem k-SAT
I
I
Erfüllbarkeit: ein NP-vollständiges Problem
Algorithmen für k-SAT
X = {x1 , x2 , . . . , xn } Menge von a.l. Variablen,
X = {x1 , x2 , . . . , xn } negierte Variablen
L = X ∪ X : Menge der Literale
Klausel: Disjunktion von Literalen
K = `1 ∨ `2 ∨ · · · ∨ `s
I
k-SAT Formel: KNF-Formel mit s ≤ k Literalen pro Klausel
AL-Formel in KNF: Konjunktion von Literalen
F = K1 ∧ K2 ∧ · · · ∧ Kt
I
k-SAT Formel: KNF-Formel mit s ≤ k Literalen pro Klausel
I
Entscheidungsproblem: Erfüllbarkeit von KNF-Formeln testen!
I
Brute-force Methode:
alle 2n Bewertungen der n Variablen testen
→ exponentielle Komplexität
Theoretische Informatik 3 WS 2006/07
Beispiele
Theoretische Informatik 3 WS 2006/07
Beispiele
Erfüllbarkeit: ein NP-vollständiges Problem
Erfüllbarkeit: ein NP-vollständiges Problem
Algorithmen für k-SAT
Algorithmen für k-SAT
I
Brute-force Methode:
alle 2n Bewertungen der n Variablen testen
→ exponentielle Komplexität
I
Brute-force Methode:
alle 2n Bewertungen der n Variablen testen
→ exponentielle Komplexität
I
Bis heute kein effizientes Verfahren bekannt:
zwar ist 2-SAT effizient entscheidbar, aber bereits 3-SAT ist
NP-vollständig!
I
Bis heute kein effizientes Verfahren bekannt:
zwar ist 2-SAT effizient entscheidbar, aber bereits 3-SAT ist
NP-vollständig!
I
Es gibt wesentlich bessere (aber immer noch exponentielle)
Verfahren als die brute-force Methode!
Herunterladen