Upload
angelo
View
43
Download
3
Embed Size (px)
DESCRIPTION
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2). 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 - PowerPoint PPT Presentation
Citation preview
LS 2 / Informatik
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
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
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
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
58
9
1
4
3
10
7
7
8 5
5
LS 2 / Informatik
37
Graphalgorithmen
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. key[v] ←w(u,v), parent[v] ←u
LS 2 / Informatik
38
Graphalgorithmen
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. key[v] ←w(u,v), parent[v] ←u
Zu Beginn ist jeder Knoten in der Schlange Q
LS 2 / Informatik
39
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. key[v] ←w(u,v), parent[v] ←u
Graphalgorithmen
r bildet die Wurzel des Spannbaums
LS 2 / Informatik
40
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. key[v] ←w(u,v), parent[v] ←u
Graphalgorithmen
u ist inzident zu leichter Kante, die Schnitt (Q,V-Q)
kreuzt
LS 2 / Informatik
41
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. 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?
LS 2 / Informatik
42
Prim(G,r)1. Q ←V2. For each vertex u Q ∈ do key[u] ←∞3. key[r] ←0, parent[r] ←nil4. While Q ≠ ∅ do5. u ←Extract-Min(Q)6. For each v Adj[u] ∈ do7. If v Q ∈ and w(u,v)<key[v] then8. 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
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|)
LS 2 / Informatik
44
Graphalgorithmen
Satz 76Der 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
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
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?
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 p 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
p(1) p(n)
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 p 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 < bzw. > ersetzen)
1 n
p(1) p(n)
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 p 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 W(1) Zeit. Benötigt ein Algorithmus f(n) Vergleiche, so ist seine Laufzeit W(f(n)) Ziel: Zeige, dass jeder vergleichsbasierte Sortierer W(n log n) Vergleiche
benötigt
1 n
p(1) p(n)
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 , das rechte Kind dem Ausgang a > a
Jedes Blatt wird mit einer Reihenfolgep bezeichnet
a < a ?i j
jii j
a < ai ja > ai j
LS 2 / Informatik
51
Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3)
InsertionSort(Array A)1. for j 2 to length[A] do2. key A[j]3. i j-14. while i>0 and A[i]>key do5. A[i+1] A[i]6. i i-17. A[i+1] key
Untere Schranken
LS 2 / Informatik
52
Baumdarstellung eines vergleichsbasierten Sortierers (Beispiel InsertionSort, n=3)
InsertionSort(Array A)1. for j 2 to length[A] do2. key A[j]3. i j-14. while i>0 and A[i]>key do5. A[i+1] A[i]6. i i-17. A[i+1] key
Untere Schranken
a > a
a > a
1,2,3
nein
nein
ja
ja
a > a
ja nein
1,3,2
…
3,1,2
2 3
31
21
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
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
LS 2 / Informatik
55
Untere Schranken
Stirling Formel Für alle natürlichen Zahlen n gilt:
neennn
enn
nn121
2!2
pp
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 W(n log n).
neennn
enn
nn121
2!2
pp
)log()(log)2log(2log)!log( nnennn
ennn
n
W
pp
LS 2 / Informatik
57
Untere Schranken
Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von W(n log n).
Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei
Eingabegröße n hat n! Blätter und somit Tiefe W(n log n).
LS 2 / Informatik
58
Untere Schranken
Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von W(n log n).
Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei
Eingabegröße n hat n! Blätter und somit Tiefe W(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.
LS 2 / Informatik
59
Untere Schranken
Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von W(n log n).
Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei
Eingabegröße n hat n! Blätter und somit Tiefe W(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.
LS 2 / Informatik
60
Untere Schranken
Korollar 79 Jeder vergleichsbasierte Sortieralgorithmus hat eine Laufzeit von W(n log n).
Beweis Die Baumdarstellung eines vergleichsbasierten Sortieralgorithmus bei
Eingabegröße n hat n! Blätter und somit Tiefe W(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.
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 W(f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit W(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
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 W(f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit W(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
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 W(f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit W(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 W(f(n))
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 W(f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit W(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 W(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 W(f(n)) ist)
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 W(f(n)) hat Ich weiss, dass jeder Algorithmus für Problem B Laufzeit W(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 W(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 W(f(n)) ist)
LS 2 / Informatik
66
Untere Schranken
Satz 80Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der
Ebene benötigt W(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
LS 2 / Informatik
67
Untere Schranken
Satz 80Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der
Ebene benötigt W(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
LS 2 / Informatik
68
Untere Schranken
Satz 80Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der
Ebene benötigt W(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
LS 2 / Informatik
69
Untere Schranken
Satz 80Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der
Ebene benötigt W(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)
LS 2 / Informatik
70
Untere Schranken
Satz 80Die Berechnung der konvexen Hülle einer Punktmenge von n Punkten in der
Ebene benötigt W(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)
LS 2 / Informatik
71
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. Berechne konvexe Hülle mit FastHull(B)5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
LS 2 / Informatik
72
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. Berechne konvexe Hülle mit FastHull(B)5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
LS 2 / Informatik
73
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. Berechne konvexe Hülle mit FastHull(B)5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
LS 2 / Informatik
74
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. Berechne konvexe Hülle mit FastHull(B)5. Gib Punkte in der Reihenfolge aus, in der sie auf der Hülle auftreten
LS 2 / Informatik
75
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. 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!
LS 2 / Informatik
76
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. 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)
LS 2 / Informatik
77
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. 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
LS 2 / Informatik
78
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. 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
W(n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit W(n log n).
LS 2 / Informatik
79
Untere Schranken
BeweisFastSort(A)1. Initialisiere Feld B für n Punkte2. for i1 to n do3. Für Zahl x=A[i] Schreibe Punkt (x,x²) in Feld B4. 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
W(n log n) hat, kann dies nicht sein und FastHull (und jeder andere vergleichsbasierte Algorithmus zur Berechnung der konvexen Hülle) hat Laufzeit W(n log n).
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²)
LS 2 / Informatik
81
Untere Schranken
Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie
liegen?
LS 2 / Informatik
82
Untere Schranken
Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie
liegen?
LS 2 / Informatik
83
Untere Schranken
Wie testet man Kolinearität von 3 Punkten?
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
122121
21det yxyxyyxx
x
y
x+y1 2 1 2
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
122121
21det yxyxyyxx
x
y
x+y1 2 1 2
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
122121
21det yxyxyyxx
x
y
x+y1 2 1 2
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
122121
21det yxyxyyxx
x
y
x+y1 2 1 2
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 W(f(n)).
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 W(f(n)).
Beweis Sei Kolinear ein optimaler Algorithmus für das Kolinearitätsproblem mit Laufzeit
g(n).
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 W(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.
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 W(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.
LS 2 / Informatik
92
3SUM-Fast(S)1. P 2. Für jede Zahl xS füge Punkt (x,x³) zu Punktmenge P hinzu3. return Kolinear(P)
Untere Schranken
a=-1 c=0.75b=0.25
h(x)=x³
LS 2 / Informatik
93
Untere Schranken
Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n).
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.
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
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
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
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
))()()((
³)³)((³)³)((³³³³
det
cbacbcaba
abacacabacacabab
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.
))()()((
³)³)((³)³)((³³³³
det
cbacbcaba
abacacabacacabab
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.
))()()((
³)³)((³)³)((³³³³
det
cbacbcaba
abacacabacacabab
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
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)=w(n)
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)=w(n) Angenommen, es gibt einen Algorithmus für das Kolinearitätsproblem mit
Laufzeit g(n)=o(f(n))
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)=w(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)).
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)=w(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.
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)=w(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 W(f(n))
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)=w(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 W(f(n))
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
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