Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Post on 23-Feb-2016

43 views 3 download

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

Transcript of Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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