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!