PB Praktische Grenzen der Berechenbarkeit Patrick Breuer 15.11.2007 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 2 PB Komplexitäten messbare oder berechenbare Merkmale von Algorithmen Laufzeit Speicherbedarf 15.11.2007 WBK Inf X - 6 3 PB Aufgabe: Aktienkursanalyse Die Situation: Gegeben ist der Kursverlauf einer Aktie über 30 Tage. Gesucht ist der maximale Gewinn bei optimaler Wahl des Kauf- und Verkaufstages Das Modell: Gegeben ist eine Zahlenfolge a1,...,an, die Folge der Tagesgewinne. Gesucht ist die maximale Teilsumme von a1,...,an. 15.11.2007 WBK Inf X - 6 4 PB Kursanalyse: Strategie (1) Für jeden möglichen Kauftag i und Verkaufstag j die Teilsumme ai+...+aj berechnen Aus allen Teilsummen das Maximum bestimmen 15.11.2007 WBK Inf X - 6 5 PB Kursanalyse: Algorithmus (1) begin max:=0 for i:=1 to n do for j:=i to n do s:=0 for k:=i to j do s:=s+a[k] if s>max then max:=s end 15.11.2007 WBK Inf X - 6 6 PB Kursanalyse: Aufwand (1.1) Aufwandsmaß: Anzahl der Additionen in der innersten Zählschleife begin max:=0 for i:=1 to n do for j:=i to n do s:=0 for k:=i to j do j− i+ 1 s:=s+a[k] if s>max then max:=s end 15.11.2007 WBK Inf X - 6 7 PB Kursanalyse: Aufwand (1.2) Aufwandsmaß: Anzahl der Additionen in der innersten Zählschleife begin max:=0 for i:=1 to n do for j:=i to n do s:=0 n− i+ 1 for k:=i to j do k s:=s+a[k] k=1 if s>max then max:=s end ∑ 15.11.2007 WBK Inf X - 6 8 PB Kursanalyse: Aufwand (1.3) Aufwandsmaß: Anzahl der Additionen in der innersten Zählschleife begin max:=0 for i:=1 to n do for j:=i to n do 1 2 n s:=0 k+ k + ... + k for k:=i to j do k=1 k=1 k=1 s:=s+a[k] if s>max then max:=s end ∑ 15.11.2007 WBK Inf X - 6 ∑ ∑ 9 PB Kursanalyse: Aufwand (1.4) Aufwandsmaß: Anzahl der Additionen in der innersten Zählschleife 1 ∑ k+ k=1 2 ∑ k + ... + k=1 n ∑ k k=1 = 1 ⋅ n + 2 ⋅ (n − 1) + 3 ⋅ (n − 2) + ... + (n − 1) ⋅ 2 + n ⋅ 1 = n ∑ i (n − i + 1) i= 1 1 3 1 2 1 = n + n + n 6 2 3 15.11.2007 WBK Inf X - 6 10 PB Kursanalyse: Strategie (2) Für jeden möglichen Kauftag i und Verkaufstag j die Teilsumme ai+...+aj berechnen Aus allen Teilsummen das Maximum bestimmen Nicht jede Teilsumme muss einzeln bestimmt werden. Es gilt für ai+...+aj: j ∑ k= i 15.11.2007 ak = j− 1 ∑ k= i ak + a j WBK Inf X - 6 11 PB Kursanalyse: Algorithmus (2) begin max:=0 for i:=1 to n do s:=0 for j:=i to n do s:=s+a[j] if s>max then max:=s end 15.11.2007 WBK Inf X - 6 12 PB Kursanalyse: Aufwand (2.1) begin max:=0 for i:=1 to n do s:=0 for j:=i to n do n− s:=s+a[j] if s>max then max:=s end 15.11.2007 WBK Inf X - 6 i+ 1 13 PB Kursanalyse: Aufwand (2.2) begin max:=0 for i:=1 to n do s:=0 for j:=i to n do s:=s+a[j] if s>max then max:=s end 15.11.2007 WBK Inf X - 6 n ∑ k k=1 14 PB Kursanalyse: Aufwand (2.3) Anzahl der Additionen: n ⋅ (n + 1) ∑k = 1 k = 2 1 2 1 = n + n 2 2 n 15.11.2007 WBK Inf X - 6 15 PB Kursanalyse: Strategie (3) Für jeden möglichen Kauftag i und Verkaufstag j die Teilsumme ai+...+aj berechnen Aus allen Teilsummen das Maximum bestimmen Nicht jede Teilsumme muss einzeln bestimmt werden. Eine Teilfolge mit negativer Summe kann nie zu einer Teilfolge mit maximaler Summe erweitert werden. 15.11.2007 WBK Inf X - 6 16 PB Kursanalyse: Algorithmus (3) begin max:=0 s:=0 for i:=1 to n do s:=s+a[i] if s>max then max:=s if s<0 then s:=0 end 15.11.2007 WBK Inf X - 6 17 PB Kursanalyse: Aufwand (3) begin max:=0 s:=0 for i:=1 to n do n s:=s+a[i] if s>max then max:=s if s<0 then s:=0 end 15.11.2007 WBK Inf X - 6 18 PB Kursanalyse: Aufwand im Vergleich Algorithmus 1 Anzahl der Additionen 1 3 1 2 1 n + n + n 6 2 3 2 1 2 1 n + n 2 2 3 n 15.11.2007 WBK Inf X - 6 19 PB Kursanalyse: Aufwand im Vergleich Anzahl der Alg. Additionen n 20 40 60 80 100 1 1 3 1 2 1 n + n + n 6 2 3 1540 11480 37820 2 1 2 1 n + n 2 2 210 820 1830 3240 5050 3 n 20 40 60 80 100 15.11.2007 WBK Inf X - 6 88560 171700 20 PB Sortierdemo 15.11.2007 WBK Inf X - 6 21 PB Delphi-Projekt Sortieralgorithmen Zeitmessung mittels Funktion „now“ Mehrere Durchläufe für unterschiedliche Eingabegrößen Speicherung der gemessenen Zeiten als csv-Datei Import der Daten in StarOffice, OpenOffice, Excel ... Darstellung als Diagramm 15.11.2007 WBK Inf X - 6 22 PB Sortierverfahren im Vergleich Zeitaufwand in Millisekunden n BubbleSort InsertSort QuickSort 10000 1221 411 10 20000 4376 1683 10 30000 9894 3785 20 40000 17526 6729 10 50000 27440 10495 20 60000 39607 15152 20 70000 53807 20620 30 80000 70341 26849 40 90000 88907 34029 40 100000 90000 80000 70000 60000 50000 BubbleSort InsertSort QuickSort 40000 30000 20000 10000 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 15.11.2007 WBK Inf X - 6 23 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 24 PB Drei Fälle Best-Case-Analyse: Die im günstigsten Fall erforderliche Laufzeit wird ermittelt. Average-Case-Analyse: Die im mittleren Fall (Mittelwert, Erwartungswert) erforderliche Laufzeit wird ermittelt Worst-Case-Analyse: Die im ungünstigsten Fall erforderliche Laufzeit wird ermittelt. 15.11.2007 WBK Inf X - 6 25 PB Beschreibung der Zeitkomplexität (1) Zeitmessungen: können von praktischer Relevanz in Einzelfällen sein gelten nur für einen Computertyp sind nur bis zu einer bestimmten zeitlichen Grenze möglich Berechnungen: sind maschinenunabhängig beschreiben die Komplexität durch einen Term in Abhängigkeit vom Umfang der Eingabedaten sind in der Praxis bei konkreten Rahmenbedingungen weniger aussagekräftig 15.11.2007 WBK Inf X - 6 26 PB Typische Komplexitäten n 10 100 1000 104 105 106 3 7 10 13 17 20 n 10 100 1000 104 105 106 n ⋅ log 2 n 30 700 104 105 2 ⋅ 106 2 ⋅ 107 1012 k(n) logarithmisch linear log-linear log 2 n quadratisch n2 100 104 105 108 1010 kubisch n3 1000 106 109 1012 1015 n 1000 1030 10300 103000 exponentiell 15.11.2007 2 WBK Inf X - 6 1018 1030000 10300000 27 PB Wachstum einiger Funktionen zur Charakterisierung der Komplexität in doppelt logarithmischer Darstellung 15.11.2007 WBK Inf X - 6 28 PB Zeitaufwand Annahme: Pro Millisekunde wird eine Grundoperation (Wertzuweisung, Addition, ...) bearbeitet. Eingabegröße n log 2 n ms n ms n 2 ms 2n ms 10 0, 003 s 0, 01 s 0,1 s 1s 100 0, 007 s 0,1 s 10 s 4 ⋅ 1019 Jahre 1000 0, 01 s 1s 16, 7 min ... 10000 0, 013 s 10 s 1 T 3,8 h ... 100000 0, 017 s 1, 7 min 116 T ... 15.11.2007 WBK Inf X - 6 29 PB Maximale Problemgröße in Abhängigkeit von Komplexität und Laufzeit Max. Problemgröße n bei einer Laufzeit von Komplexität log 2 n 1s 10 301 1 min 1h 6 ⋅ 10 101000000 18000 n 1000 60000 3600000 n2 31 244 1897 2n 9 15 21 15.11.2007 WBK Inf X - 6 30 PB Änderungsrate der maximalen Problemgröße Während sich die Laufzeiten um den Faktor 60 unterscheiden, errechnet sich die jeweils nächste maximale Problemgröße bei der Komplexität ... log 2 n durch Potenzieren mit n durch Multiplizieren mit n2 durch Multiplizieren mit 2n durch Addieren von 15.11.2007 60 60 60 log 2 60 WBK Inf X - 6 31 PB Aufgabe 1. Auf welchen Wert wächst die maximale Problemgröße bei der Komplexität 2 n , wenn der Computer 100-mal schneller arbeitet? 2. Um welchen Faktor muss der Computer schneller arbeiten, damit die maximale Problemgröße bei der Komplexität 2n auf 100 steigt? 15.11.2007 WBK Inf X - 6 32 PB Lösung 1. Die maximale Problemgröße wächst um log 2 100 ( ≈ 6, 64) auf 27. 2. Der Computer müsste um den Faktor 6 ⋅ 1023 schneller sein. 15.11.2007 WBK Inf X - 6 33 PB Asymptotische Ordnung (1) Klassifizierung von Algorithmen: Zeitbedarf bei großem Umfang der Eingabedaten Zusammenfassen von Komplexitätsklassen, die sich nur um einen konstanten Faktor unterscheiden Definition Die asymptotische Ordnung O(g(n)) einer Funktion g ist die Menge aller Funktionen f, die für hinreichend große Werte von n nach oben durch ein positives reelles Vielfaches von g beschränkt sind. 15.11.2007 WBK Inf X - 6 34 PB Asymptotische Ordnung (2) formal: O ( g (n)) = { f :N → R 0+ | ∃ r ∈ R + ∃ n0 ∈ N 0 ∀ n ≥ n0 : f (n) ≤ r ⋅ g (n)} Beispiel Die Funktionen f1 (n) = 3n 2 + 3n − 3 und f 2 (n) = 4,5n3 + 6n 2 sind Elemente der Ordnung O(n3) 15.11.2007 WBK Inf X - 6 35 PB Asymptotische Ordnung (3) Die asymptotische Ordnung gibt nur eine obere Schranke für das Laufzeitverhalten eines Algorithmus an. Aussagekräftig kann sie nur sein, wenn sie eine möglichst kleine obere Schranke angibt. 15.11.2007 WBK Inf X - 6 36 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 37 PB Beispiel: Sequentielle Suche Algorithmus Sequentielle Suche (Gegeben: Ein sortiertes n-dimensionales Feld a und ein Suchschlüssel s) begin gefunden:=false i:=1 repeat if a[i]=s then gefunden:=true i:=i+1 until gefunden or i>n end 15.11.2007 WBK Inf X - 6 38 PB Sequentielle Suche : Aufwand (1) Grundoperationen: Wertzuweisung, Vergleich Anzahl der Grundoperationen (worst case): Initialisierung: Repeat-Schleife, Rumpf: Repeat-Schleife, Abbruchbedingung: Anzahl der Schleifendurchläufe: 15.11.2007 WBK Inf X - 6 2 2 2 n 39 PB Sequentielle Suche : Aufwand (2) tseq (n) = 2 + n ⋅ (2 + 2) = 4n + 2 tseq ∈ O(n) 15.11.2007 WBK Inf X - 6 40 PB Beispiel: Binäre Suche Algorithmus Binäre Suche (Gegeben: Ein sortiertes n-dimensionales Feld a und ein Suchschlüssel s) begin gefunden:=false l:=1 r:=n repeat m:=(l+r) div 2 if a[m]=s then gefunden:=true if a[m]>s then r:=m-1 if a[m]<s then l:=m+1 until gefunden or l>r end 15.11.2007 WBK Inf X - 6 41 PB Binäre Suche: Aufwand (1) Grundoperationen: Wertzuweisung, Vergleich Anzahl der Grundoperationen (worst case): Initialisierung: 3 Repeat-Schleife, Rumpf: 5 Repeat-Schleife, Abbruchbedingung: 2 Anzahl der Schleifendurchläufe: [log 2 n] 15.11.2007 WBK Inf X - 6 42 PB Binäre Suche: Aufwand (2) t bin n=3[ log 2 n ]⋅32 =5⋅[ log 2 n ]3 t bin ∈O log 2 n 15.11.2007 WBK Inf X - 6 43 PB Beispiel: Türme von Hanoi Algorithmus Hanoi(n,von,nach,ueber) (von: Ausgangsstab, nach: Zielstab, ueber: Hilfsstab) begin if n=1 then Ausgabe: von -> nach else Hanoi(n-1,von,ueber,nach) Ausgabe: von -> nach Hanoi(n-1,ueber,nach,von) end 15.11.2007 WBK Inf X - 6 44 PB Türme von Hanoi: Aufwand (1) Grundoperationen: Vergleich, Ausgabe Anzahl der Grundoperationen: Ein Vergleich, eine Ausgabe 2 mal Grundoperationen der rekursiven Aufrufe 15.11.2007 WBK Inf X - 6 45 PB Türme von Hanoi: Aufwand (2) than 2 für n = 1 = 2 + 2 ⋅ than (n − 1) für n > 1 = 2 ⋅ (2n − 1) = 2n + 1 − 2 than ∈ O(2n ) 15.11.2007 WBK Inf X - 6 46 PB Türme von Hanoi: Simulation 15.11.2007 WBK Inf X - 6 47 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 48 PB Definition: Polynomiale Ordnung Ein Algorithmus heißt polynomial (von polynomialer Ordnung), wenn seine Zeitkomplexität durch eine Funktion f(n) beschrieben wird, für die ein k ∈ N existiert, so dass f ∈ O(n k ) gilt. Für Polynome f(n) ist k der Grad des Polynoms, also der größte Exponent. 15.11.2007 WBK Inf X - 6 49 PB Abgeschlossenheit Werden zwei polynomiale Algorithmen nacheinander ausgeführt, ist der resultierende Gesamtalgorithmus polynomial. Wird ein Teil eines polynomialen Algorithmus durch ein Modul ersetzt, das selbst einen polynomialen Algorithmus enthält, ist der resultierende Gesamtalgorithmus polynomial. 15.11.2007 WBK Inf X - 6 50 PB Definition: Anwendbarkeit Ein Algorithmus heißt (praktisch) anwendbar (durchführbar, handhabbar, engl. tractable), wenn er polynomial ist, andernfalls (praktisch) nicht anwendbar (nicht durchführbar, nicht handhabbar, engl. intractable). 15.11.2007 WBK Inf X - 6 51 PB Anwendbare Algorithmen Werden zwei anwendbare Algorithmen nacheinander ausgeführt, ist der resultierende Gesamtalgorithmus anwendbar. Wird ein Teil eines anwendbaren Algorithmus durch ein Modul ersetzt, das selbst einen anwendbaren Algorithmus enthält, ist der resultierende Gesamtalgorithmus anwendbar. Nicht anwendbare Algorithmen werden auch auf zukünftigen Computern nicht anwendbar sein. 15.11.2007 WBK Inf X - 6 52 PB These der sequentiellen Berechenbarkeit Alle sequentiellen Computer besitzen ähnliche polynomiale Berechnungszeiten. Die Transformation einer beliebigen Beschreibung eines Algorithmus (Maschinensprache, höhere Programmiersprache,...) in eine äquivalente Turingtafel ist stets mit polynomialem Aufwand durchführbar. Folgerung: Die Definition der Anwendbarkeit von Algorithmen ist maschinenunabhängig. 15.11.2007 WBK Inf X - 6 53 PB Ausnahmen Die Klassifizierung eines Algorithmus als „nicht anwendbar“ bezieht sich auf die asymptotische Komplexität. In der Praxis kann auch ein exponentieller Algorithmus brauchbar sein Beispiel: Ein exponentieller Algorithmus der Komplexität te(n)=0,001·20,001n ist für n=100000 noch schneller als ein polynomialer Algorithmus der Komplexität tp(n)=1000 ·n5. Für prinzipielle Betrachtungen gilt dennoch: Ein Algorithmus ist nicht anwendbar, wenn er nicht polynomial ist. 15.11.2007 WBK Inf X - 6 54 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 55 PB Definition: Praktische Unlösbarkeit Ein Problem heißt praktisch lösbar, wenn es einen polynomialen Lösungsalgorithmus für dieses Problem gibt, andernfalls praktisch unlösbar. Unterschied zur Definition der Anwendbarkeit von Algorithmen: Praktische Unlösbarkeit gilt im Allgemeinen nur für den aktuellen Stand der Forschung. Oft kann nicht ausgeschlossen werden, dass noch ein schnellerer Algorithmus gefunden wird. 15.11.2007 WBK Inf X - 6 56 PB Beispiel: Königsberger Brückenproblem Gibt es einen Rundweg, bei dem jede der sieben Brücken genau einmal benutzt wird? 15.11.2007 WBK Inf X - 6 57 PB Verallgemeinerung: Eulerkreis Gibt es in einem ungerichteten Graphen einen Rundweg, der jede Kante genau einmal enthält? Ein solcher Rundweg heißt Eulerkreis. 15.11.2007 WBK Inf X - 6 58 PB Eulerkreis: Lösung In einem ungerichteten Graphen heißt ein Knoten Nachbar eines Knotens v, wenn er mit v durch eine Kante verbunden ist. Die Anzahl der vom Knoten v ausgehenden Kanten bezeichnet man als dessen Grad. In einem Graphen ohne Mehrfachkanten zwischen zwei Knoten entspricht der Grad der Anzahl der Nachbarn. In einem ungerichteten Graphen existiert genau dann ein Eulerkreis, wenn der Grad jedes Knotens gerade ist. 15.11.2007 WBK Inf X - 6 59 PB Eulerkreis: Algorithmus Darstellung des Graphen durch eine Matrix G (n Zeilen, n Spalten) mit g ij = Anzahl der Kanten zwischen Knoten i und Knoten j Aufgabe: Entwerfen Sie einen Algorithmus, der für einen in Matrixform gegebenen Graphen G entscheidet, ob G einen Eulerkreis enthält oder nicht. 15.11.2007 WBK Inf X - 6 60 PB Eulerkreis: Algorithmus Algorithmus Eulerkreis (Eingabe: Ein Feld g der Dimension n x n, das die Kanten des Graphen festlegt Ausgabe: 'ja', falls der Graph einen Eulerkreis enthält, sonst 'nein') begin euler:=true for i:=1 to n do for j:=1 to n do grad[i]:=grad[i]+g[i,j] for i:=1 to n do if grad[i] mod 2 = 1 then euler:=false if euler=true then Ausgabe 'ja' else Ausgabe 'nein' end 15.11.2007 WBK Inf X - 6 61 PB Eulerkreis: Aufwand Wegen der geschachtelten Zählschleife liegt die Zeitkomplexität des Algorithmus in der Klasse O(n2). Das Problem „Eulerkreis“ ist also mit polynomialem Aufwand lösbar. 15.11.2007 WBK Inf X - 6 62 PB Beispiel: Hamilton-Zyklus (1) Unter einem Hamilton-Zyklus versteht man in einem ungerichteten Graphen einen Rundweg, der jeden Knoten genau einmal enthält. 15.11.2007 WBK Inf X - 6 63 PB Beispiel: Hamilton-Zyklus (2) Es gibt keinen polynomialen Algorithmus, der das Problem löst. Die einzige bekannte Möglichkeit, einen HamiltonZyklus zu finden, besteht in der vollständigen Überprüfung aller möglichen Knotenfolgen. Weil der „Startknoten“ bei einem Rundweg beliebig festgelegt werden kann, gibt es (n-1)! Permutationen der (übrigen) Knoten. Das Problem „Hamilton-Zyklus“ ist praktisch unlösbar. 15.11.2007 WBK Inf X - 6 64 PB Beispiel: Problem des Handlungsreisenden (travelling salesman problem) (1) Verallgemeinerung des Hamilton-Problems Jeder Kante des Graphen wird ein Kostenwert zugeordnet. Das Problem besteht darin zu entscheiden, ob es einen Hamilton-Zyklus gibt, bei dem die Summe der Kostenwerte der benutzten Kanten eine Kostengrenze k nicht übersteigt. Hamilton-Problem ist Sonderfall: Alle Kanten haben den Kostenwert 1, k=n. 15.11.2007 WBK Inf X - 6 65 PB Beispiel: Problem des Handlungsreisenden (2) Kostenwert: Fahrzeit zwischen zwei Orten (in Min.) Gibt es eine Lösung für k=450 min? 15.11.2007 WBK Inf X - 6 66 PB Problem des Handlungsreisenden: Lösung Es gibt keine Lösung für k=450 min. Der kleinste Kostenwert, für den eine Rundreise existiert, ist k=456 min. Die kostengünstigste Rundreise ist: MZ-DA-HD-AZ-KL-SB-TR-KO-WI-MZ 15.11.2007 WBK Inf X - 6 67 PB Problem des Handlungsreisenden: Problemvarianten (1) Entscheidungsvariante: Gibt es zu einem gegebenen Kostenwert k eine Rundreise, deren Kosten k nicht übersteigen? Zahlvariante: Was ist der kleinste Kostenwert k, für den eine Rundreise existiert? Optimierungsvariante: Welches ist die kostengünstigste Rundreise? 15.11.2007 WBK Inf X - 6 68 PB Problem des Handlungsreisenden: Problemvarianten (2) Bezüglich der Lösbarkeit sind alle drei Varianten äquivalent. Das Problem des Handlungsreisenden ist praktisch unlösbar. 15.11.2007 WBK Inf X - 6 69 PB Beispiel: Verpackungsproblem (bin-packing problem) Gegeben sind k Behälter einer festen Größe G und n Gegenstände mit den Größen g1,...,gn. Gesucht ist eine Verteilung der Gegenstände auf die Behälter, bei der die jeweilige Summe der Größen der Gegenstände die Größe G der Behälter nicht überschreitet. Anwendung: Verteilung von Paletten mit unterschiedlichem Gewicht auf Lastwagen mit identischer Nutzlast. 15.11.2007 WBK Inf X - 6 70 PB Verpackungsproblem: Problemvarianten (1) Entscheidungsvariante: Gibt es eine zulässige Verteilung der Gegenstände auf die Behälter? Zahlvariante: Was ist die kleinste Anzahl von Behältern, so dass alle Gegenstände verteilt werden können? Optimierungsvariante: Welche zulässige Verteilung benötigt am wenigsten Behälter? 15.11.2007 WBK Inf X - 6 71 PB Verpackungsproblem: Problemvarianten (2) Bezüglich der Lösbarkeit sind alle drei Varianten äquivalent. Das Verpackungsproblem ist praktisch unlösbar. 15.11.2007 WBK Inf X - 6 72 PB Beispiel: Stundenplanproblem (1) Eine Anwendung des Verpackungsproblems: Behälter: zur Verfügung stehende Raum-ZeitKombinationen Gegenstände: zu verteilende Fach-LerngruppeKombinationen (Unterrichtsstunden) Anzahl k der Behälter: Anzahl Räume · Anzahl Wochenstunden Anzahl n der Gegenstände: Gesamtzahl der wöchentlichen Unterrichtsstunden Größe G der Behälter: 1 (Pro Raum und Unterrichtsstunde kann nur eine Lerngruppe in einem Fach unterrichtet werden) 15.11.2007 WBK Inf X - 6 73 PB Beispiel: Stundenplanproblem (2) Randbedingungen: Raumgröße entsprechend der Größe der Lerngruppe Unterricht in Fachräumen Lehrpersonen nicht in zwei Räumen gleichzeitig Pro Lerngruppe nicht mehrere Fächer gleichzeitig ... Das Stundenplanproblem ist praktisch unlösbar. 15.11.2007 WBK Inf X - 6 74 PB Beispiel: Faktorisierung Gegeben ist eine n-stellige natürliche Zahl. Gesucht ist ihre Zerlegung in Primfaktoren. Alle bekannten Algorithmen erfordern exponentiellen Aufwand in Abhängigkeit von n. Das Faktorisierungsproblem ist praktisch unlösbar. Grundlage für die Sicherheit des RSA-Verfahrens 15.11.2007 WBK Inf X - 6 75 PB Faktorisierung mit Derive 15.11.2007 WBK Inf X - 6 76 PB Beispiel: Türme von Hanoi Es gibt keinen schnelleren Lösungsalgorithmus als den vorgestellten. Jeder Lösungsalgorithmus hat die Zeitkomplexität O(2n) (Beweis durch vollständige Induktion) Das Problem „Türme von Hanoi“ ist praktisch unlösbar. 15.11.2007 WBK Inf X - 6 77 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 78 PB Beispiel: Hamilton-Zyklus Lösungskandidaten sind alle Permutationen der Knoten. Der Startknoten kann frei gewählt werden. Darstellung aller Lösungskandidaten in einem Auswahlbaum 15.11.2007 WBK Inf X - 6 79 PB Hamilton-Zyklus: Auswahlbaum Jeder Ast stellt – ausgehend vom Knoten 1 – eine Permutation der übrigen Knoten dar. 15.11.2007 WBK Inf X - 6 80 PB Exkurs: Backtracking „Vorwärts, wenn möglich - rückwärts, wenn nötig“ Tiefensuche in einem Baum Der Algorithmus endet ... wenn eine Lösung gefunden wurde mit Ausgabe der Lösung wenn keine Lösung existiert nach Überprüfung aller Möglichkeiten. 15.11.2007 WBK Inf X - 6 81 PB Acht-Damen-Problem 15.11.2007 WBK Inf X - 6 82 PB Hamilton-Zyklus: „Lösungsalgorithmus“ Errate einen Pfad im Auswahlbaum. Überprüfe, ob es sich um einen Hamilton-Zyklus handelt. Beide Schritte lassen sich mit polynomialem Zeitaufwand lösen. 15.11.2007 WBK Inf X - 6 83 PB Nichtdeterministische Algorithmen (1) Ratephase, in der ein Lösungskandidat bestimmt wird Prüfphase (Verifikationsphase), in der getestet wird, ob es sich um eine Lösung handelt Theoretisch... ... erzeugt ein nichtdeterministischer Algorithmus in der Ratephase für jeden möglichen Lösungskandidaten eine Kopie von sich selbst. ... laufen beliebig viele Prozesse parallel. 15.11.2007 WBK Inf X - 6 84 PB Nichtdeterministische Algorithmen (2) In der Praxis... ... wird ein nichtdeterministischer Algorithmus durch einen deterministischen nachgeahmt. ... wird jeder Lösungsversuch, der nicht zum Ziel führt, bis zur letzten Verzweigung im Entscheidungsbaum zurückgezogen und ein anderer Weg von dort aus weiter verfolgt. Folge: Exponentieller Zeitbedarf im ungünstigsten Fall Zunächst keine praktische Relevanz 15.11.2007 WBK Inf X - 6 85 PB Nichtdeterministische Algorithmen (3) Von Bedeutung für theoretische Betrachtungen, wenn Ratephase und Prüfphase mit polynomialem Aufwand möglich sind Dienen zur Klassifizierung von prinzipiell lösbaren Problemen, für die möglicherweise ein polynomialer Algorithmus existiert 15.11.2007 WBK Inf X - 6 86 PB Definition: P und NP Die Klasse P enthält genau diejenigen Probleme, für die ein polynomialer Lösungsalgorithmus existiert. Die Klasse NP enthält genau diejenigen Probleme, für die folgende Eigenschaften erfüllt sind: Es existiert ein Algorithmus mit exponentiellem Zeitaufwand. Es ist möglich, durch ein nichtdeterministisches Verfahren mit polynomialem Zeitaufwand eine Lösung zu bestimmen. Es gibt einen polynomialen Verifikationsalgorithmus. 15.11.2007 WBK Inf X - 6 87 PB Problemklassen alle Probleme prinzipiell lösbare Probleme NP P Klar: P⊆NP Offen: P=NP? 15.11.2007 WBK Inf X - 6 88 PB Probleme der Klasse NP das Problem Hamilton-Zyklus das Problem des Handlungsreisenden das Verpackungsproblem das Stundenplanproblem das Faktorisierungsproblem Das Problem „Türme von Hanoi“ liegt nicht in NP, weil das Umlegen der Scheiben bzw. das Speichern oder Ausgeben einer Lösung 2n-1 Schritte erfordert. 15.11.2007 WBK Inf X - 6 89 PB P=NP-Problematik (1) Um die Frage klären zu können, ob P=NP gilt, muss einer der folgenden Sätze bewiesen werden: Es gibt ein Problem in NP, für das kein polynomialer Algorithmus existieren kann (Folgerung: P≠NP). Für jedes Problem in NP (auch jedes noch nicht formulierte) existiert ein polynomialer Algorithmus (Folgerung: P=NP). Ziel: Klassifizierung der schwersten Probleme in NP 15.11.2007 WBK Inf X - 6 90 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 91 PB P=NP-Problematik (2) Cook 1971: Es gibt Probleme, die man als die schwersten in NP beschreiben kann. Eigenschaft: Die Entdeckung eines deterministischen polynomialen Algorithmus hätte zur Folge, dass jedes Problem in NP deterministisch polynomial lösbar ist. 15.11.2007 WBK Inf X - 6 92 PB Definition: NP-Vollständigkeit Ein Problem heißt NP-vollständig (engl. NP-complete), wenn die folgenden Eigenschaften erfüllt sind: Das Problem gehört zur Klasse NP. Das Problem gehört genau dann zur Klasse P, wenn P=NP gilt. Die NP-vollständigen Probleme sind die schwersten in der Klasse NP. 15.11.2007 WBK Inf X - 6 93 PB Definition: Polynomiale Reduzierbarkeit Ein Problem Q1 heißt polynomial reduzierbar auf ein Problem Q2, falls es einen polynomialen Algorithmus gibt, der einen Lösungsalgorithmus für Q2 zu einem Lösungsalgorithmus für Q1 erweitert. Schreibweise: Q1 ≤p Q2 15.11.2007 WBK Inf X - 6 94 PB Nachweis der polynomialen Reduzierbarkeit Gegeben: Zwei Probleme Q1 und Q2, beide aus NP Zu zeigen: Q1 ≤p Q2 Konstruktion einer (berechenbaren und polynomial zeitbeschränkten) Funktion f mit folgenden Eigenschaften: Jeder Eingabe x für Q wird eine Eingabe f(x) für Q 1 2 zugeordnet Q ist für x genau dann mit „ja“ zu beantworten, 1 wenn Q2 für f(x) mit „ja“ zu beantworten ist. 15.11.2007 WBK Inf X - 6 95 PB NP-Vollständigkeit und polynomiale Reduzierbarkeit Ein Problem Q∈NP ist genau dann NP-vollständig, wenn jedes Problem Q‘∈NP polynomial auf Q reduzierbar ist. Zum Nachweis der NP-Vollständigkeit eines Problems Q muss also „nur“ gezeigt werden, dass sich jedes Problem Q‘∈NP polynomial auf Q reduzieren lässt. 15.11.2007 WBK Inf X - 6 96 PB Nachweis der NP-Vollständigkeit Polynomiale Reduzierbarkeit ist transitiv, d. h. aus Q1 ≤p Q2 und Q2 ≤p Q3 folgt Q1 ≤p Q3. Um nachzuweisen, dass ein Problem Q NP-vollständig ist, reicht es zu zeigen, dass ein Problem Q‘ polynomial auf Q reduzierbar ist, von dem man schon weiß, dass es NP-vollständig ist. Voraussetzung: Für ein Problem wurde die NPVollständigkeit schon nachgewiesen (ohne Ausnutzung der Transitivität) Cook 1971: Das Erfüllbarkeitsproblem der Aussagenlogik ist NP-vollständig. 15.11.2007 WBK Inf X - 6 97 PB Definition: Boolescher Ausdruck (1) Ein boolescher Ausdruck besteht aus Variablen, die durch Operatoren verknüpft sind. Die Variablen können nur die Werte wahr und falsch annehmen. Die erlaubten Operatoren sind ∧ (Konjunktion, logisches „und“) (Disjunktion, logisches „oder“) ∨ ¬ (Negation, logisches „nicht“) Zur Strukturierung eines Ausdrucks können Klammern gesetzt werden. 15.11.2007 WBK Inf X - 6 98 PB Definition: Boolescher Ausdruck (2) Eine Disjunktion von Variablen oder deren Komplementen heißt Klausel Ein boolescher Ausdruck hat konjunktive Normalform, wenn er aus Konjunktionen von Klauseln besteht. Ein boolescher Ausdruck heißt erfüllbar, wenn es eine Belegung der Variablen mit wahr oder falsch gibt, durch die der Ausdruck insgesamt wahr wird. 15.11.2007 WBK Inf X - 6 99 PB Erfüllbarkeitsproblem Das Erfüllbarkeitsproblem der Aussagenlogik (engl. satisfiability problem, kurz SAT) lautet: Gegeben ist ein boolescher Ausdruck B in konjunktiver Normalform. Ist B erfüllbar? Das Erfüllbarkeitsproblem ist NP-vollständig. Beweisskizze siehe Skript 15.11.2007 WBK Inf X - 6 100 PB Definition: Knotenüberdeckungsproblem Das Knotenüberdeckungsproblem (engl. vertex covering problem, kurz VCP) lautet: Gegeben ist ein ungerichteter Graph G und eine natürliche Zahl k. Gibt es eine Teilmenge von G mit k Knoten, so dass jede Kante mindestens einen Endpunkt aus dieser Teilmenge enthält? 15.11.2007 WBK Inf X - 6 101 PB GraphBench 15.11.2007 WBK Inf X - 6 102 PB Aufgabe: Knotenüberdeckungsproblem Gibt es eine Knotenüberdeckung mit vier Knoten? Gibt es eine Überdeckung mit drei Knoten? 15.11.2007 WBK Inf X - 6 103 PB VCP: Beweis (1) Das Knotenüberdeckungsproblem ist NP-vollständig. Beweis: Zu zeigen ist, dass sich das Erfüllbarkeitsproblem SAT polynomial auf VCP reduzieren lässt. Aus der Transitivität der Relation ≤p folgt dann, dass sich jedes Problem in NP polynomial auf VCP reduzieren lässt. Nach Cook gilt: für alle Q∈NP: Q ≤p SAT Wir zeigen: SAT ≤p VCP Aus der Transitivität folgt: für alle Q∈NP: Q ≤p VCP 15.11.2007 WBK Inf X - 6 104 PB VCP: Beweis (2) ● 1. Schritt: VCP liegt in NP siehe Skript ● 2. Schritt: Reduktion von SAT auf VCP ● Konstruktion eines Verfahrens, durch das jedem booleschen Ausdruck B eine Eingabe für VCP (ein Graph G und eine natürliche Zahl k) zugeordnet wird, für die gilt: ● B ist genau dann erfüllbar, wenn G eine Überdeckung mit k Knoten enthält. Beweis, dass die Konstruktion richtig ist 15.11.2007 WBK Inf X - 6 105 PB VCP: Beweis (3) B = (a ∨ b ∨ ¬ c) ∧ (a ∨ ¬ b ∨ c ∨ ¬ d ) Für jede Variable enthält G zwei Knoten, die später das Vorkommen der Variablen in den Klauseln (negiert oder nicht negiert) repräsentieren. 15.11.2007 WBK Inf X - 6 106 PB VCP: Beweis (4) Für jede Klausel enthält G einen vollständigen Teilgraphen, dessen Knotenanzahl durch die Anzahl der Literale in der jeweiligen Klausel bestimmt ist. B = (a ∨ b ∨ ¬ c) ∧ (a ∨ ¬ b ∨ c ∨ ¬ d ) 15.11.2007 WBK Inf X - 6 107 PB VCP: Beweis (5) Die Kanten werden so festgelegt, dass sie je ein Literal der entsprechenden Klausel repräsentieren. B = (a ∨ b ∨ ¬ c) ∧ (a ∨ ¬ b ∨ c ∨ ¬ d ) 15.11.2007 WBK Inf X - 6 108 PB VCP: Beweis (6) Bestimmung einer natürlichen Zahl k: Man addiert die Anzahl der Variablen zur Anzahl der Literale in B und subtrahiert die Anzahl der Klauseln. k=4+(3+4)-2 =9 15.11.2007 WBK Inf X - 6 109 PB VCP: Beweis (7) Zu zeigen: B ist genau dann erfüllbar, wenn G eine Überdeckung mit k Knoten enthält. ● 1. Schritt: Ist B erfüllbar, dann enthält G eine Überdeckung mit k Knoten. ● 2. Schritt: Enthält G eine Überdeckung mit k Knoten, dann ist B erfüllbar. 15.11.2007 WBK Inf X - 6 110 PB VCP: Beweis (8) 1. Schritt. Sei B erfüllbar. Auswahl der Knoten für die Überdeckung: ● Im oberen Teil diejenigen Knoten, die einer erfüllenden Belegung entsprechen ● Im unteren Teil alle Knoten bis auf einen je Teilgraph, der mit einem schon ausgewählten Knoten im oberen Teil verbunden ist. 15.11.2007 WBK Inf X - 6 111 PB VCP: Beweis (9) B = (a ∨ b ∨ ¬ c) ∧ (a ∨ ¬ b ∨ c ∨ ¬ d ) B wird erfüllt durch a=falsch, b=wahr, c=wahr, d=falsch 15.11.2007 WBK Inf X - 6 112 PB VCP: Beweis (10) Anzahl der oben ausgewählten Knoten = Anzahl der Variablen Anzahl der unten ausgewählten Knoten = Anzahl der Literale – Anzahl der Klauseln Es wurden k Knoten ausgewählt und die Überdeckung ist nach Konstruktion vollständig. 15.11.2007 WBK Inf X - 6 113 PB VCP: Beweis (11) 2. Schritt. G enthalte eine Überdeckung mit k Knoten. Zu zeigen: B ist erfüllbar. 15.11.2007 WBK Inf X - 6 114 PB VCP: Beweis (12) In jedem oberen Teilgraphen muss mindestens ein Knoten zur Überdeckung gehören. In jedem unteren Teilgraphen kann höchstens ein Knoten nicht zur Überdeckung gehören. Nach Konstruktion von k gehört deshalb in den unteren Teilgraphen jeweils genau ein Knoten nicht zur Überdeckung. 15.11.2007 WBK Inf X - 6 115 PB VCP: Beweis (13) Wahl der Variablenbelegungen für B entsprechend den oben ausgewählten Knoten Im Beispiel: a=wahr, b=falsch, c=falsch, d=wahr Noch zu zeigen: Die Belegung erfüllt B. 15.11.2007 WBK Inf X - 6 116 PB VCP: Beweis (14) Jeder untere Teilgraph enthält einen Knoten, der nicht zur Überdeckung gehört. Er ist mit einem Knoten im oberen Teilgraphen verbunden, der zur Überdeckung gehören muss. Nach Konstruktion der Belegung ist das zugehörige Literal wahr, so dass auch die Klausel wahr ist. 15.11.2007 WBK Inf X - 6 117 PB VCP: Beweis (15) Insgesamt: B ist genau dann erfüllbar, wenn G eine Überdeckung mit k Knoten enthält. ➾ SAT ≤p VCP ➾ für alle Probleme Q in NP: Q ≤p VCP ➾ Das Knotenüberdeckungsproblem ist NP-vollständig. 15.11.2007 WBK Inf X - 6 118 PB GraphBench 15.11.2007 WBK Inf X - 6 119 PB Weitere NP-vollständige Probleme (1) ● 3KNF-SAT: Erfüllbarkeitsproblem für boolesche Ausdrücke in konjunktiver Normalform mit höchstens drei Literalen ● Mengenüberdeckungsproblem: Gegeben: Teilmengen einer endlichen Menge M und eine natürliche Zahl k. Gibt es eine Auswahl von k Teilmengen, bei der bereits alle Elemente von M vorkommen? ● Rucksackproblem: Gegeben: k Gegenstände von unterschiedlichem Gewicht. Gibt es eine Auswahl von Gegenständen, die ein vorgegebenes Gesamtgewicht hat? 15.11.2007 WBK Inf X - 6 120 PB Weitere NP-vollständige Probleme (2) Erbteilungsproblem: Gegeben: k Münzen von unterschiedlichem Wert. Gibt es eine Aufteilung der Münzen, so dass jeder Teil denselben Wert hat? k-Färbbarkeitsproblem: Gegeben: Ein ungerichteter Graph G und eine natürliche Zahl k. Gibt es eine Färbung der Knoten von G mit k verschiedenen Farben, so dass keine benachbarten Knoten dieselbe Farbe haben? 15.11.2007 WBK Inf X - 6 121 PB GraphBench 15.11.2007 WBK Inf X - 6 122 PB Übersicht 1. 2. 3. 4. 5. 6. 7. 8. Der Komplexitätsbegriff Beschreibung der Zeitkomplexität Abschätzung der Zeitkomplexität Praktisch nicht anwendbare Algorithmen Praktisch unlösbare Probleme Nichtdeterministische Algorithmen, P und NP NP-Vollständigkeit Näherungslösungen 15.11.2007 WBK Inf X - 6 123 PB Praxisrelevanz praktisch unlösbarer Probleme Das Stundenplanproblem ist regelmäßig zu lösen, obwohl es praktisch unlösbar ist. Das Problem des Handlungsreisenden ist bei vielen Routenplanungen zu lösen (Müllabfuhr, Post,...) Reedereien haben eine Problemkombination zu lösen: Problem des Handlungsreisenden (Routenplanung) Verpackungsproblem (Beladen der Schiffe) 15.11.2007 WBK Inf X - 6 124 PB Lösungsansätze Verwendung eines exponentiellen Algorithmus, wenn die konkret auftretenden Eingabedaten meistens eine schnelle Bearbeitung zulassen. Abbruch nach vorgegebener Zeit Aufgeben der Forderung, dass das Ergebnis optimal ist. Beispiele: Stundenplan, Handlungsreisender → Genetischer Algorithmus zum Rucksackproblem Aufgeben der Forderung, dass das Ergebnis immer korrekt ist. → Probabilistischer Algorithmus zum Problem „Independent Set“ 15.11.2007 WBK Inf X - 6 125 PB Genetische Algorithmen: Begriffe Individuum: Lösungskandidat Population: Menge von Lösungskandidaten Selektion: Auswahl der besten Lösungskandidaten Kreuzung: Kombination von zwei Lösungskandidaten zu zwei neuen Mutation: Zufällige Veränderung eines Lösungskandidaten 15.11.2007 WBK Inf X - 6 126 PB Aufgabe: Rucksackproblem Gegeben: k Zahlen a1,...,ak, die das Gewicht der Gegenstände angeben, sowie eine Zahl b, das maximale Gesamtgewicht. Gesucht: Eine Auswahl von Gegenständen, deren Gesamtgewicht möglichst groß ist, jedoch ohne b zu überschreiten. Schreiben Sie eine Delphi-Anwendung, die das Problem durch einen genetischen Algorithmus löst. (Einzelheiten siehe Skript) 15.11.2007 WBK Inf X - 6 127 PB Probabilistischer Algorithmus zum Problem „Independent Set“ In einem ungerichteten Graphen G heißt eine Teilmenge I der Knotenmenge unabhängig, wenn G keine Kante enthält, die zwei Knoten aus I verbindet. Gesucht ist eine unabhängige Menge mit maximaler Kardinalität. Algorithmus: Bilde eine zufällige Teilmenge I der Knotenmenge von G. Überprüfe, ob es in I Knoten gibt, die in G durch eine Kante verbunden sind. Falls ja, entferne einen der betroffenen Knoten. Wiederhole den vorherigen Schritt, bis I eine unabhängige Menge ist. 15.11.2007 WBK Inf X - 6 128 PB Fazit (1) Zeitaufwand ist ein wichtiges Kriterium für die Qualität von Algorithmen. Zeitaufwand kann man maschinenunabhängig beschreiben. Für viele Probleme gibt es keine schnellen Algorithmen. Sie sind praktisch unlösbar. Es ist unbekannt, ob P=NP gilt. NP-vollständige Probleme sind die schwersten unter denjenigen, für die möglicherweise ein schneller Algorithmus existiert. 15.11.2007 WBK Inf X - 6 129 PB Fazit (2) Viele praktisch unlösbare Probleme besitzen praktische Relevanz. Manchmal gibt es Näherungslösungen. Aber: Für einige NP-vollständige Probleme kann bewiesen werden, dass es unmöglich ist, akzeptable Lösungen zu finden – es sei denn, es gilt P=NP. 15.11.2007 WBK Inf X - 6 130