55
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer 2.6 Graphen 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von Graphen 2.6.3 Minimal spannende Bäume 2.6.4 Kürzeste Pfade 2.6.5 Maximaler Fluss 1

2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

2.6 Graphen

2.6.1 Definition und Darstellung 2.6.2 Ausspähen von Graphen 2.6.3 Minimal spannende Bäume 2.6.4 Kürzeste Pfade 2.6.5 Maximaler Fluss

1

Page 2: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

2.6.3 Minimal spannende Bäume

2.6.3.1 Generischer Algorithmus 2.6.3.2 Prims Algorithmus 2.6.3.3 Kruskals Algorithmus

2

Page 3: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Minimal Spannende Bäume

•  Gegeben sei ein zusammenhängender, ungerichteter, gewichteter Graph G=(V,E) mit Gewichtsfunktion w:E→R.

•  Gesucht ist ein Spannbaum S⊆E der minimiert, der sogenannte MST.

3

Page 4: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Minimal Spannende Bäume

4

5

1

7

3

Kein Baum!

5

1

7

3

Nicht spannend!

5

1

7

3

Nicht minimal!

5

1

7

3

MST

Page 5: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Greedy-Strategie: Füge nach und nach Kanten zu einer anfangs leeren Kantenmenge A hinzu, und zwar unter Beachtung der folgenden Invariante: •  A ist Teilmenge eines MST (∗)

5

Page 6: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Sei A eine Menge von Kanten, die die Invariante (∗) erfüllt. Eine Kante e heißt sicher für A, falls A∪{e} ebenfalls die Invariante (∗) erfüllt.

6

Page 7: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  GENERICMST( G, w ) A ← ∅ while A ist kein MST do suche eine sichere Kante e für A A ←A ∪{e} return A

7

Page 8: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Ein Schnitt eines ungerichteten Graphen G=(V,E) ist eine Menge S⊆V

•  Eine Kante (u,v) kreuzt den Schnitt S falls einer ihrer Endpunkte in S und der andere Endpunkt in V−S liegt.

8

Page 9: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

9

kreuzende Kanten

Page 10: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Ein Schnitt respektiert A, falls keine Kante aus A den Schnitt kreuzt.

•  Eine kreuzende Kante heißt leicht, falls ihr Gewicht minimal unter allen kreuzenden Kanten ist.

10

Page 11: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

11

leichte Kante

3 9

Page 12: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Satz: A erfülle die Invariante (∗). S sei ein Schnitt der A respektiert und (u,v) eine leichte Kante, die S kreuzt. Dann ist (u,v) sicher für A.

12

Page 13: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Sei T ein MST der A enthält, aber nicht (u,v)

13

u

x

y

v

A T

Würde er (u,v) enthalten, so wären wir schon fertig!

Page 14: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Sei T ein MST der A enthält, aber nicht (u,v) •  Auf dem Weg von u nach v durch T gibt es eine

Kante (x,y) die den Schnitt kreuzt

14

u

x

y

v

A T

Der Weg existiert, da T ein spannend ist. Er ist eindeutig, da T ein Baum ist.

Page 15: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Sei T ein MST der A enthält, aber nicht (u,v) •  Auf dem Weg von u nach v durch T gibt es eine

Kante (x,y) die den Schnitt kreuzt •  T’ = T − {(x,y)} ∪ {(u,v)} ist ein MST, denn

w(T’) = w(T) − w(x,y) + w(u,v) ≤ w(T)

15

u

x

y

v

A T’

Page 16: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Generischer Algorithmus

•  Sei T ein MST der A enthält, aber nicht (u,v) •  Auf dem Weg von u nach v durch T gibt es eine

Kante (x,y) die den Schnitt kreuzt •  T’ = T − {(x,y)} ∪ {(u,v)} ist ein MST •  Wegen A ⊆ T und (x,y) ∉ A folgt A ∪ {(u,v)} ⊆ T’,

also ist (u,v) sicher für A

16

u

x

y

v

A∪{(u,v)} T’

Page 17: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

2.6.3 Minimal spannende Bäume

2.6.3.1 Generischer Algorithmus 2.6.3.2 Prims Algorithmus 2.6.3.3 Kruskals Algorithmus

17

Page 18: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  Die Kanten in A bilden einen Baum. Jeder Knoten u erhält einen Zeiger p[u] auf seinen Vater im MST.

•  Der A respektierende Schnitt S ist gegeben durch S = { u : (u,v) ∈ A }

18

Page 19: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  Knoten u außerhalb von S erhalten einen Schlüssel, der das minimale Gewicht einer Kante angibt, die u mit S verbindet (∞∞ falls es solch eine Kante nicht gibt)

19

3

3

9 S

V−S

5

Page 20: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

20

0 ∞

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 21: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

21

4

0 ∞

8

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 22: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

22

4

0 ∞

8

8

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 23: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

23

4

0 2

8

8

7

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 24: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

24

4

0 2

7

8

7

6

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 25: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

25

4

0 2

7

8

7

2

10

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 26: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

26

4

0 2

1

8

7

2

10

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 27: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

27

4

0 2

1

8

7

2

10

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 28: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

28

4

0 2

1

8

7

2

9

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 29: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

29

4

0 2

1

8

7

2

9

4

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 30: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

30

Page 31: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

31

O(V)

Page 32: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

32

O(V) Heap Aufbau!

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 33: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

33

V Läufe

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 34: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

34

O(log V)

Entfernen eines Elements aus dem Heap

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 35: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

35

O(E)

Durchläufe insgesamt

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 36: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

36

O(log V)

Heap muss aktualisiert werden

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 37: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

37

O(V×log V + E×log V)

O(V)

•  PRIM(G,w,r) for each u ∈ V do key[u] ← ∞ p[u] ← NIL key[r] ← 0 Q ← V while Q not empty do u ← ExtractMinimum(Q) for each v ∈ Adj[u] do if v ∈ Q and w(u,v) < key[v] then p[v] ← u key[v] ← w(u,v)

Page 38: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  Nach der Ausführung von Prim(G,w,r) ist der MST gegeben durch A = { (u,p[u]) : u ∈ V − {r} }

•  Implementierung von Prims Algorithmus z.B. mit binärem Heap

38

Page 39: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Prims Algorithmus

•  Implementiert man Prims Algorithmus mittels eines binären Heaps, so ist der Aufwand

O(E×log V) •  Implementiert man Prims Algorithmus

mittels eines Fibonacci-Heaps, so ist der Aufwand

O(E+V×log V)

39

Page 40: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

2.6.3 Minimal spannende Bäume

2.6.3.1 Generischer Algorithmus 2.6.3.2 Prims Algorithmus 2.6.3.3 Kruskals Algorithmus

40

Page 41: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Die Kanten in A bilden einen Wald. Jeder Knoten u in A erhält einen Zeiger p[u] auf seinen Vater im MST.

•  Der A respektierende Schnitt S ist gegeben durch S = { u : (u,v) ∈ A }

•  In jedem Schritt wird die Kante mit kleinstem Gewicht gesucht, die zwei Bäume aus A verbindet. Diese Kante wird zu A hinzugefügt.

41

Page 42: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

42

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 43: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

43

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 44: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

44

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 45: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

45

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 46: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

46

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 47: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

47

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 48: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

48

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 49: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

49

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 50: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

50

4

8 7

9 14

10

2

7 6

1

2

8

11 4

Page 51: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Kruskal(G,w) A ← ∅ for all v ∈ V do MakeSet(v) sort E into non-decreasing order for each (u,v) ∈ E do if Find(u) ≠ Find(v) then A ← A ∪ {(u,v)} Union(u,v) return A

51

Page 52: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Kruskal(G,w) A ← ∅ for all v ∈ V do MakeSet(v) sort E into non-decreasing order for each (u,v) ∈ E do if Find(u) ≠ Find(v) then A ← A ∪ {(u,v)} Union(u,v) return A

52

O(E×log E)

V × MakeSet()

O(E) × Find(), Union()

Page 53: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Aufwand – Sortieren: O(E×log E) = O(E×log V) – Union-Find •  V × MakeSet() •  O(E) × FindSet(), Union() ➡ O((V+E)×a(V)) = O(E×logV)

➡ Gesamtaufwand: O(E×log V)

53

E < V2 → log E = O(log V)

Page 54: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Aufwand – Sortieren: O(E×log E) = O(E×log V) – Union-Find •  V × MakeSet() •  O(E) × FindSet(), Union() ➡ O((V+E)×a(V)) = O(E×logV)

➡ Gesamtaufwand: O(E×log V)

54

E > V−1 und a(V) = O(log V)

Aufwand für Union-Find

Page 55: 2.6.1 Definition und Darstellung 2.6.2 Ausspähen von ......• Auf dem Weg von u nach v durch T gibt es eine Kante (x,y) die den Schnitt kreuzt 14 u x y v A T Der Weg existiert,

Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Kruskals Algorithmus

•  Aufwand – Sortieren: O(E×log E) = O(E×log V) – Union-Find •  V × MakeSet() •  O(E) × FindSet(), Union() ➡ O((V+E)×a(V)) = O(E×logV)

➡ Gesamtaufwand: O(E×log V)

55