Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

109
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 1: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Page 2: 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

Page 3: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 4: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 5: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 6: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 7: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 8: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 9: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 10: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 11: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 12: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 13: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 14: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 15: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 16: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 17: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 18: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 19: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 20: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 21: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 22: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 23: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 24: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 25: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 26: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 27: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 28: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 29: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 30: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 31: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 32: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 33: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 34: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 35: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 36: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 37: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 38: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 39: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 40: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 41: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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?

Page 42: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 43: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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|)

Page 44: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 45: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 46: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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?

Page 47: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 48: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 49: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 50: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 51: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 52: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 53: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 54: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 55: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

55

Untere Schranken

Stirling Formel Für alle natürlichen Zahlen n gilt:

neennn

enn

nn121

2!2

pp

Page 56: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 57: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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).

Page 58: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 59: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 60: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 61: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 62: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 63: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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))

Page 64: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 65: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 66: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 67: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 68: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 69: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 70: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 71: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 72: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 73: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 74: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 75: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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!

Page 76: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 77: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 78: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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).

Page 79: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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).

Page 80: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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²)

Page 81: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

81

Untere Schranken

Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie

liegen?

Page 82: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

82

Untere Schranken

Kolinearitätsproblem Seien n Punkte in der Ebene gegeben. Gibt es 3 Punkte, die auf einer Linie

liegen?

Page 83: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

83

Untere Schranken

Wie testet man Kolinearität von 3 Punkten?

Page 84: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 85: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 86: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 87: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 88: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)).

Page 89: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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).

Page 90: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 91: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 92: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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³

Page 93: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik

93

Untere Schranken

Behauptung 3SUM-Fast löst das 3SUM Problem in Laufzeit g(n)+O(n).

Page 94: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 95: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 96: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 97: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 98: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 99: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 100: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 101: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 102: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)

Page 103: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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))

Page 104: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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)).

Page 105: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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.

Page 106: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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))

Page 107: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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))

Page 108: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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

Page 109: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

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