Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Bernt Scholz Geändert vor über 9 Jahren
1
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
2
LS 2 / Informatik 2 Graphalgorithmen Idee des Algorithmus von Prim Verwende generischen Algorithmus Nimm immer eine Kante mit minimalem Gewicht, die einen Knoten in Baum A mit einem Knoten verbindet, der nicht in Baum A ist und füge diese zu A hinzu Die Kante ist eine leichte Kante, die Baum A mit einem weiteren Knoten verbindet Damit ist sie sicher für A
3
LS 2 / Informatik 3 Graphalgorithmen Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A 5 6 3 5 8 9 1 4 3 10 7
4
LS 2 / Informatik 4 Graphalgorithmen Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A 5 6 3 5 8 9 1 4 3 10 7
5
LS 2 / Informatik 5 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
6
LS 2 / Informatik 6 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
7
LS 2 / Informatik 7 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
8
LS 2 / Informatik 8 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
9
LS 2 / Informatik 9 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
10
LS 2 / Informatik 10 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
11
LS 2 / Informatik 11 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
12
LS 2 / Informatik 12 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
13
LS 2 / Informatik 13 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
14
LS 2 / Informatik 14 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
15
LS 2 / Informatik 15 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
16
LS 2 / Informatik 16 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
17
LS 2 / Informatik 17 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
18
LS 2 / Informatik 18 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
19
LS 2 / Informatik 19 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
20
LS 2 / Informatik 20 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
21
LS 2 / Informatik 21 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
22
LS 2 / Informatik 22 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
23
LS 2 / Informatik 23 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
24
LS 2 / Informatik 24 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
25
LS 2 / Informatik 25 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
26
LS 2 / Informatik 26 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
27
LS 2 / Informatik 27 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
28
LS 2 / Informatik 28 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
29
LS 2 / Informatik 29 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
30
LS 2 / Informatik 30 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
31
LS 2 / Informatik 31 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
32
LS 2 / Informatik 32 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
33
LS 2 / Informatik 33 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
34
LS 2 / Informatik 34 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
35
LS 2 / Informatik 35 Prim(G,r) 1. Q ←V –{r} 2. A ← ∅ 3. while Q ≠ ∅ 4. Finde Kante (u,v) mit minimalem Gewicht, die den Schnitt (Q,V-Q) kreuzt, wobei u ∈ Q 5. Q ←Q - {u} 6. A ←A ∪ {(u,v)} 7. return A Graphalgorithmen 5 6 3 5 8 9 1 4 3 10 7
36
LS 2 / Informatik 36 Graphalgorithmen Prioritätenschlange Alle Knoten, die noch nicht zum Baum gehören, werden in Prioritätenschlange Q abgespeichert key[v]: minimales Gewicht einer Kante, die v mit Baum verbindet parent[v]: Vorgänger von v im Baum Menge A implizit gegeben durch A = {(v,parent[v]) | v ∈ V –{r} –Q} 5 6 3 5 8 9 1 4 3 10 7 7 85 5
37
LS 2 / Informatik 37 Graphalgorithmen Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u
38
LS 2 / Informatik 38 Graphalgorithmen Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Zu Beginn ist jeder Knoten in der Schlange Q
39
LS 2 / Informatik 39 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen r bildet die Wurzel des Spannbaums
40
LS 2 / Informatik 40 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen u ist inzident zu leichter Kante, die Schnitt (Q,V-Q) kreuzt
41
LS 2 / Informatik 41 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen Gehört v noch nicht zum Baum und könnte über u billiger erreicht werden als bisher bekannt?
42
LS 2 / Informatik 42 Prim(G,r) 1. Q ←V 2. For each vertex u ∈ Q do key[u] ←∞ 3. key[r] ←0, parent[r] ←nil 4. While Q ≠ ∅ do 5. u ←Extract-Min(Q) 6. For each v ∈ Adj[u] do 7. If v ∈ Q and w(u,v)<key[v] then 8. key[v] ←w(u,v), parent[v] ←u Graphalgorithmen Wenn ja, dann ist u neuer Vorgänger von v und key[v] gibt die neuen Kosten für v an
43
LS 2 / Informatik 43 Graphalgorithmen Implementierung Q als binäre Halde Laufzeit Initialisierung von Q: O(|V|) Ausführung der while-Schleife: O(|V|)-mal Extract-Min: O(log |V|) Länge aller Adjazenzlisten: O(|E|) Test v ∈ Q: O(1) Änderung eines Schlüsselwertes: O(log |V|) Gesamtlaufzeit: O(|V| log |V| + |E| log |V|) = O(|E| log |V|)
44
LS 2 / Informatik 44 Graphalgorithmen Satz 76 Der Algorithmus von Prim berechnet einen minimalen Spannbaum eines gewichteten, zusammenhängenden, ungerichteten Graphen in O(|E| log |V|) Zeit. Beweis Die Laufzeit haben wir bereits analysiert. Die Korrektheit folgt aus der Tatsache, dass wir nur sichere Kanten verwenden und dass der Algorithmus einen Baum berechnet
45
LS 2 / Informatik 45 Graphalgorithmen Graphtraversierung Breitensuche, Tiefensuche Kürzeste Wege Breitensuche, Algorithmus von Dijkstra, Algorithmus von Floyd-Warshall Minimale Spannbäume Algorithmen von Kruskal und Prim
46
LS 2 / Informatik 46 Weiterführende Fragestellungen Grundlegende Fragestellungen Kann man zeigen, dass ein Problem nicht effizient(er) gelöst werden kann? Wie geht man mit Problemen um, die man nicht effizient lösen kann?
47
LS 2 / Informatik 47 Untere Schranken Vergleichsbasiertes Sortieren Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge berechnet, so dass a <… < a gilt und (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt 1 n (1) (n)
48
LS 2 / Informatik 48 Untere Schranken Vergleichsbasiertes Sortieren Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge berechnet, so dass a <… < a gilt und (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt Erste Beobachtung MergeSort und Heapsort sind vergleichsbasiert (die Algorithmen führen zwar ≤ Operationen durch, wenn die Eingabe jedoch aus unterschiedlichen Zahlen besteht, kann man diese durch ersetzen) 1 n (1) (n)
49
LS 2 / Informatik 49 Untere Schranken Vergleichsbasiertes Sortieren Ein Algorithmus ist ein vergleichsbasierter Sortierer, wenn er (1) für eine Eingabe von n unterschiedlichen Zahlen a,…, a eine Reihenfolge berechnet, so dass a <… < a gilt und (2) wenn sich die Reihenfolge bereits zwingend aus den vom Algorithmus durchgeführten Vergleichen ( ) zwischen Eingabeelementen ergibt Zweite Beobachtung Jeder Vergleich benötigt (1) Zeit. Benötigt ein Algorithmus f(n) Vergleiche, so ist seine Laufzeit (f(n)) Ziel: Zeige, dass jeder vergleichsbasierte Sortierer (n log n) Vergleiche benötigt 1 n (1) (n)
50
LS 2 / Informatik 50 Untere Schranken Baumdarstellung eines vergleichsbasierten Sortierers Wir geben Ablauf der Vergleiche an, die der Algorithmus bei Eingabe der Länge n ausführt Der Algorithmus führt einen eindeutigen ersten Vergleich aus, dieser wird Wurzel des Baum Je nach Ausgang des Vergleichs wird der Algorithmus auf unterschiedliche Weise fortgesetzt Das linke Kind eines Knotens entspricht dem Vergleichsausgang a a Jedes Blatt wird mit einer Reihenfolge bezeichnet a < a ? ij j i i j a < a i j a > a i j
51
LS 2 / Informatik 51 Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3) InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Untere Schranken
52
LS 2 / Informatik 52 Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3) InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Untere Schranken a > a 1,2,3 nein ja a > a ja nein 1,3,2 … 3,1,2 23 31 21
53
LS 2 / Informatik 53 Untere Schranken Beobachtungen Die Tiefe eines Sortierbaums ist eine untere Schranke für die Worst-Case Laufzeit bei Eingabegröße n Jeder Sortierbaum ist ein Binärbaum Der Sortierbaum hat für jede Ausgabereihenfolge mindestens ein Blatt Es gibt n! Ausgabereihenfolgen
54
LS 2 / Informatik 54 Untere Schranken Beobachtungen Die Tiefe eines Sortierbaums ist eine untere Schranke für die Worst-Case Laufzeit bei Eingabegröße n Jeder Sortierbaum ist ein Binärbaum Der Sortierbaum hat für jede Ausgabereihenfolge mindestens ein Blatt Es gibt n! Ausgabereihenfolgen Überlegung Wie tief ist ein Binärbaum mit n! Blättern mindestens? Ein Binärbaum der Tiefe k hat höchstens 2 Blätter (vollständiger Binärbaum) Umgekehrt: Ein Binärbaum mit n! Blättern hat mindestens Tiefe log (n!) k
55
LS 2 / Informatik 55 Untere Schranken Stirling Formel Für alle natürlichen Zahlen n gilt:
56
LS 2 / Informatik 56 Untere Schranken Stirling Formel Für alle natürlichen Zahlen n gilt: Satz 78 Ein Binärbaum mit n! Blättern hat Tiefe (n log n).
57
LS 2 / Informatik 57 Untere Schranken Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von (n log n). Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe (n log n).
58
LS 2 / Informatik 58 Untere Schranken Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von (n log n). Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe (n log n). Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt.
59
LS 2 / Informatik 59 Untere Schranken Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von (n log n). Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe (n log n). Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt. Somit folgt das Korollar.
60
LS 2 / Informatik 60 Untere Schranken Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von (n log n). Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei Eingabegröße n hat n! Blätter und somit Tiefe (n log n). Die Tiefe der Baumdarstellung gibt eine untere Schranke für die Worst-Case Laufzeit des Algorithmus, da der Algorithmus bei entsprechender Eingabe alle Vergleiche des längsten Astes durchführt und für jeden Vergleich O(1) Zeit benötigt. Somit folgt das Korollar.
61
LS 2 / Informatik 61 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen? Will zeigen, dass jeder Algorithmus für Problem A Laufzeit (f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit (f(n)) hat Generelle Beweisidee Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt
62
LS 2 / Informatik 62 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen? Will zeigen, dass jeder Algorithmus für Problem A Laufzeit (f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit (f(n)) hat Generelle Beweisidee Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A
63
LS 2 / Informatik 63 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen? Will zeigen, dass jeder Algorithmus für Problem A Laufzeit (f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit (f(n)) hat Generelle Beweisidee Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A Dann hat jeder Algorithmus für Problem A eine Laufzeit von (f(n))
64
LS 2 / Informatik 64 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen? Will zeigen, dass jeder Algorithmus für Problem A Laufzeit (f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit (f(n)) hat Generelle Beweisidee Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A Dann hat jeder Algorithmus für Problem A eine Laufzeit von (f(n)) (Wäre dies nicht so, dann gäbe es einen Algorithmus mit Laufzeit o(f(n)) für Problem A. Somit Kann ich Problem B mit Algorithmus C in o(f(n)) Zeit lösen. Widerspruch, da die Laufzeit für Problem B (f(n)) ist)
65
LS 2 / Informatik 65 Untere Schranken Wie kann man untere Schranken für andere Probleme zeigen? Will zeigen, dass jeder Algorithmus für Problem A Laufzeit (f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit (f(n)) hat Generelle Beweisidee Baue Algorithmus C der Problem B löst und dabei einen optimalen Algorithmus für Problem A als Unterprogramm benutzt Zeige: Die Laufzeit des Algorithmus ist o(f(n))+Laufzeit für Problem A Dann hat jeder Algorithmus für Problem A eine Laufzeit von (f(n)) (Wäre dies nicht so, dann gäbe es einen Algorithmus mit Laufzeit o(f(n)) für Problem A. Somit Kann ich Problem B mit Algorithmus C in o(f(n)) Zeit lösen. Widerspruch, da die Laufzeit für Problem B (f(n)) ist)
66
LS 2 / Informatik 66 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen
67
LS 2 / Informatik 67 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut
68
LS 2 / Informatik 68 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert
69
LS 2 / Informatik 69 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert Dies ist aufgrund unserer unteren Schranke nicht möglich (streng genommen gilt dies natürlich nur für vergleichsbasierte Algorithmen; wir schummeln also hier ein wenig)
70
LS 2 / Informatik 70 Untere Schranken Satz 80 Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der Ebene benötigt (n log n) Zeit. Beweis Annahme: Ich kann die konvexe Hülle von n Punkten in der Ebene in f(n)=o(n log n) Zeit berechnen Dann sei Algorithmus FastHull ein Algorithmus der dies tut Zeige: Man kann dann Algorithmus FastSort konstruieren, der in o(n log n) sortiert Dies ist aufgrund unserer unteren Schranke nicht möglich (streng genommen gilt dies natürlich nur für vergleichsbasierte Algorithmen; wir schummeln also hier ein wenig)
71
LS 2 / Informatik 71 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
72
LS 2 / Informatik 72 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
73
LS 2 / Informatik 73 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
74
LS 2 / Informatik 74 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
75
LS 2 / Informatik 75 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Alle Punkte liegen auf der konvexen Hülle!
76
LS 2 / Informatik 76 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n)
77
LS 2 / Informatik 77 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit
78
LS 2 / Informatik 78 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit Da wir wissen, dass jeder (vergleichsbasierte) Sortieralgorithmus Laufzeit (n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit (n log n).
79
LS 2 / Informatik 79 Untere Schranken Beweis FastSort(A) 1. Initialisiere Feld B für n Punkte 2. for i 1 to n do 3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B 4. Berechne konvexe Hülle mit FastHull(B) 5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten Die Laufzeit von FastSort ist O(n)+f(n) Hat also FastHull eine Laufzeit von o(n log n), so hat auch FastSort eine solche Laufzeit Da wir wissen, dass jeder (vergleichsbasierte) Sortieralgorithmus Laufzeit (n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit (n log n).
80
LS 2 / Informatik 80 Untere Schranken 3SUM Sei S eine Menge von n Integers. Gibt es 3 unterschiedliche Zahlen in S, die sich zu 0 aufsummieren? Vermutung 3SUM kann nicht in o(n²) Laufzeit gelöst werden Kommentar Die Laufzeit hängt immer auch vom genauen Rechenmodell ab In bestimmten Rechenmodellen gibt es Algorithmus, deren Laufzeit etwas besser ist als O(n²)
81
LS 2 / Informatik 81 Untere Schranken Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie liegen?
82
LS 2 / Informatik 82 Untere Schranken Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie liegen?
83
LS 2 / Informatik 83 Untere Schranken Wie testet man Kolinearität von 3 Punkten?
84
LS 2 / Informatik 84 Untere Schranken Wie testet man Kolinearität von 3 Punkten? Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren. Dann gibt die Fläche des von den beiden Vektoren aufgespannten Parallelograms an x y x+y 1 21 2
85
LS 2 / Informatik 85 Untere Schranken Wie testet man Kolinearität von 3 Punkten? Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren. Dann gibt die Fläche des von den beiden Vektoren aufgespannten Parallelograms an Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0 x y x+y 1 21 2
86
LS 2 / Informatik 86 Untere Schranken Wie testet man Kolinearität von 3 Punkten? Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren. Dann gibt die Fläche des von den beiden Vektoren aufgespannten Parallelograms an Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0 Hat man nun drei Punkte a,b,c, so kann man Kolinerität testen, indem man testet, ob b-a und c-a linear abhängig sind x y x+y 1 21 2
87
LS 2 / Informatik 87 Untere Schranken Wie testet man Kolinearität von 3 Punkten? Seien x=(x, x ) und y=(y, y ) zwei Punkte/Vektoren. Dann gibt die Fläche des von den beiden Vektoren aufgespannten Parallelograms an Sind die Vektoren x und y linear abhängig, so hat das Parallelogram Fläche 0 Hat man nun drei Punkte a,b,c, so kann man Kolinerität testen, indem man testet, ob b-a und c-a linear abhängig sind x y x+y 1 21 2
88
LS 2 / Informatik 88 Untere Schranken Satz 81 Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von (f(n)).
89
LS 2 / Informatik 89 Untere Schranken Satz 81 Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von (f(n)). Beweis Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n).
90
LS 2 / Informatik 90 Untere Schranken Satz 81 Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von (f(n)). Beweis Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n). Wir entwerfen zunächst einen Algorithmus 3SUM-Fast für 3SUM mit Laufzeit g(n)+O(n), der Algorithmus Kolinear benutzt.
91
LS 2 / Informatik 91 Untere Schranken Satz 81 Sei f(n) eine untere Schranke für die Worst-Case Laufzeit des besten Algorithmus für 3SUM. Dann hat auch das Kolinearitätsproblem eine Laufzeit von (f(n)). Beweis Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n). Wir entwerfen zunächst einen Algorithmus 3SUM-Fast für 3SUM mit Laufzeit g(n)+O(n), der Algorithmus Kolinear benutzt.
92
LS 2 / Informatik 92 3SUM-Fast(S) 1. P 2. Für jede Zahl x S füge Punkt (x,x³) zu Punktmenge P hinzu 3. return Kolinear(P) Untere Schranken a=-1 c=0.75 b=0.25 h(x)=x³
93
LS 2 / Informatik 93 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n).
94
LS 2 / Informatik 94 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird.
95
LS 2 / Informatik 95 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird. Wir müssen zeigen, dass die Punkte (a,a³), (b,b³) und (c,c³) genau dann kollinear sind, wenn a+b+c=0 ist (d.h. 3SUM erfüllt ist). Dabei sind a,b,c unterschiedliche Zahlen aus S
96
LS 2 / Informatik 96 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Die Laufzeit folgt sofort, da nur die n Zahlen aus S in n Punkte umgeformt werden müssen und dann Kolinear aufgerufen wird. Wir müssen zeigen, dass die Punkte (a,a³), (b,b³) und (c,c³) genau dann kollinear sind, wenn a+b+c=0 ist (d.h. 3SUM erfüllt ist). Dabei sind a,b,c unterschiedliche Zahlen aus S
97
LS 2 / Informatik 97 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus
98
LS 2 / Informatik 98 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus
99
LS 2 / Informatik 99 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus Da a,b und c unterschiedliche Zahlen sind, wird dieses Polynom genau dann 0, wenn a+b+c=0 ist.
100
LS 2 / Informatik 100 Untere Schranken Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n). Beweis Um zu überprüfen, ob die 3 Punkte kollinear sind, rechnen wir die Determinante von (a-c,a³-c³), (b-c,b³-c³) aus Da a,b und c unterschiedliche Zahlen sind, wird dieses Polynom genau dann 0, wenn a+b+c=0 ist.
101
LS 2 / Informatik 101 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss
102
LS 2 / Informatik 102 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n)
103
LS 2 / Informatik 103 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n))
104
LS 2 / Informatik 104 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n)) Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)).
105
LS 2 / Informatik 105 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n)) Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)). Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist.
106
LS 2 / Informatik 106 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n)) Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)). Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Also hat jeder Algorithmus für das Kolinearitätsproblem Laufzeit (f(n))
107
LS 2 / Informatik 107 Untere Schranken Beweis von Satz 81 (fortgesetzt) Wir nehmen nun an, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Ist f(n)= O(n), so müssen wir nichts zeigen, da man sich für das Lösen des Kolinearitätsproblems alle Eingabepunkte angucken muss Sei also f(n)= (n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit Laufzeit g(n)=o(f(n)) Dann hat Algorithmus 3SUM-Fast eine Laufzeit g(n)+O(n) = o(f(n)). Widerspruch zur Annahme, dass f(n) eine untere Schranke für die Laufzeit des besten 3SUM Algorithmus ist. Also hat jeder Algorithmus für das Kolinearitätsproblem Laufzeit (f(n))
108
LS 2 / Informatik 108 Untere Schranken Die 1.000.000$ Frage Zeigen Sie, dass es keine Konstante c gibt, so dass das Rucksackproblem in O(n ) Zeit gelöst werden kann Dabei dürfen die Eingabezahlen exponentiell in n groß sein! c
109
LS 2 / Informatik 109 Untere Schranken Zusammenfassung Für einige (sehr wenige) Probleme können wir untere Schranken beweisen Die Schranken können vom gewählten Modell abhängen Will man zeigen, dass ein Problem A schwer ist und hat man bereits eine untere Schranke für ein anderes Problem B, so kann man einen Algorithmus entwickeln, der Problem A mit Hilfe von Problem B löst und so die Schwierigkeit der Probleme zueinander in Relation setzen Es ist i.a. sehr schwer untere Schranken zu zeigen
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.