WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

22
WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann

Transcript of WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

Page 1: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

WS 2006-07

Algorithmentheorie

12 – Spannende Bäume minimalen Gewichts

Prof.Dr.Th Ottmann

Page 2: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

2 WS 2006-07

1. Minimale spannende Bäume

Ungerichteter Graph G = (V, E) Kostenfunktion c: E R

Sei T E ein Baum (zusammenhängender azyklischer Teilgraph)

Kosten von T :

Tvu

vucTc),(

),()(

4

8

-3

9

8

15

-5

6

a

ec

b d

f

Page 3: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

3 WS 2006-07

Minimale spannende Bäume

Ein minimaler spannender Baum ist ein Baum T E, der alle Knoten in V verbindet und minimale Kosten hat.

1

8

11

7

2

8 7

9

9

4

2

14

6

4

c

a

b

h

i

g f

e

d

Page 4: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

4 WS 2006-07

2. Schnitte

Ein Schnitt (S, V \ S) ist eine Partition von V.

Eine Kante (u,v) schneidet (kreuzt) (S, V \ S) , wenn ein Endpunkt in S und der andere in V \ S liegt.

i

1

8

11

7

2

8 7

9

9

4

2

14

6

4

f

a

h

b c d

e

g

Page 5: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

5 WS 2006-07

Schnitte und kreuzende Kanten

Ein Schnitt in einem Graphen G = (V, E) ist eine Partition (S, V \ S) der Knotenmenge V. Eine Kante (u, v) kreuzt den Schnitt (S, V \ S), falls u S und v V \ S ist

1

8

11

7

2

8 7

9

9

4

2

14

6

4

c

a

b

h

i

g f

e

d

Page 6: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

6 WS 2006-07

3. Färbungsmethode von Tarjan

Grüne Regel: Wähle einen Schnitt in G = (V, E), der von keiner grünen Kante gekreuzt wird. Unter allen Kanten, die diesen Schnitt kreuzen, wähle eine Kante minimalen Gewichts und färbe sie grün.

Rote Regel: Wähle einen Kreis, der keine rote Kante enthält. Unter allen ungefärbten Kanten, die auf diesem Kreis liegen, wähle eine Kante maximalen Gewichts und färbe sie rot.

Färbungsmethode:

Solange noch eine der beiden Regeln anwendbar ist,

wende die grüne oder die rote Regel an.

Page 7: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

7 WS 2006-07

8

2

13

7

3

6

1514 4

5

9

11

10

1

Grüne Regel

Page 8: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

8 WS 2006-07

8

2

13

7

3

6

1514 4

5

9

11

10

1

Rote Regel

Page 9: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

9 WS 2006-07

Färbungsinvariante

Färbungsinvariante: Es gibt einen MST, der alle grünen Kanten und keine roten Kanten enthält.

Satz:

Die Färbungsmethode angewendet auf einen zusammenhängenden Graphen erhält die Färbungsinvariante.

Bew. Später

Satz:

Die Färbungsmethode färbt alle Kanten eines zusammenhängenden Graphen rot oder grün.

Page 10: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

10 WS 2006-07

Ungefärbte Kante mit beiden Enden in grünem Baum

Durch Hinzufügen von (u,v) zu T erhalten wir einen Zyklus.

Auf diesen ist die rote Regel anwendbar!

TT

v y

xu

Page 11: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

11 WS 2006-07

Enden in verschiedenen grünen Bäumen

Dann gibt es einen Schnitt, auf den die grüne Regel anwendbar ist.

TT

v y

xu

Page 12: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

12 WS 2006-07

4. Algorithmus von Kruskal

1. Sortiere die Kanten nach ihrem Gewicht in nicht absteigender Reihenfolge.

2. Durchlaufe die sortierten Kanten der Reihe nach und wende folgenden Färbungsschritte an: Wenn beide Endknoten in demselben grünen Baum liegen, so färbe sie rot, sonst färbe sie grün.

Implementation: Sortieren der Kanten in Zeit O(|E| log |E|) = O(|E| log |V|) Kollektion grüner Bäume als Union-Find-Struktur mit:

FIND: Finde die grünen Bäume, in denen die beiden Endknoten der zu färbenden Kante liegen.UNION: Vereinige die beiden grünen Bäume, in denen die beiden Endknoten einer Kante liegen, die grün gefärbt wird.

Page 13: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

13 WS 2006-07

Algorithmus von Kruskal: Beispiel

1

8

11

7

2

8 7

9

9

4

2

14

6

4

b

a

h

i

c d

e

fg

Page 14: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

14 WS 2006-07

Algorithmus von Kruskal

1. A 2.for all v V do Bv { v }; endfor;3. Erzeuge eine Liste L der Kanten in E, welche gemäß nicht-fallenden Kantenkosten sortiert ist;4. for all (u,v) in L do

5. B1 FIND(u); B2 FIND(v);

6. if B1 B2 then

7. A A {(u,v)}; UNION (B1, B2, B1);8. endif;9. endfor;

Laufzeit: O( m (m,n) + m + n log n )

Page 15: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

15 WS 2006-07

5. Algorithmus von Prim

1. Starte mit beliebigem Knoten als „grünen Baum“

2. Wiederhole |V| - 1 mal den Färbungsschritt:

Wähle ungefärbte Kante minimalen Gewichts, die genau einen Endknoten im grünen Baum hat, und färbe sie grün.

1

8

11

7

2

8 7

9

9

4

2

14

6

4

b

a

h

i

c

g f

d

e

Page 16: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

16 WS 2006-07

Implementierung

Q : Prioritätswarteschlange, die alle Knoten v V \ A enthält.

Schlüssel von v: min. Kosten einer Kante, die v mit einem Knoten

aus A verbindet.

Für einen Knoten v ist p[v] der Elter-Knoten von v in dem Baum.

Page 17: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

17 WS 2006-07

Algorithmus von Prim

1. for all v V do Insert(Q, , v); endfor; 2.Wähle einen Knoten w V als Wurzel; 3. DecreaseKey(Q, 0, w); p[w] nil; 4. while Empty(Q) do 5. (d, u) DeleteMin(Q); 6. for all (u,v) E do

7. if v Q und c(u,v) < Schlüssel von v then 8. DecreaseKey(Q, c(u,v), v); p[v] u; 9. endif;10. endfor;11. endwhile;

Laufzeit: O( n log n + m )

Page 18: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

18 WS 2006-07

6. Nachweis der Färbungsinvariante

Induktion über die Anzahl m der Färbungsschritte:

m = 0:

m => m + 1:

e sei Kante, auf die m+1-ter Färbungsschritt angewandt wird.

Fall Grün: Grüne Regel wurde auf e = (u, v) angewandt.

Sei T grüner Baum, der nach dem m-ten Färbungsschritt vorlag, d.h. T ist MST und enthält alle in den ersten m Färbungsschritten grün gefärbten Kanten und keine roten.

Page 19: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

19 WS 2006-07

Fall Grün

1. Fall: (u,v) T : ok

2. Fall: (u,v) T

Betrachte den Schnitt, auf den die grüne Regel im m+1-ten Färbungsschritt angewendet wurde.

Page 20: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

20 WS 2006-07

Austauschschritt

Durch Hinzufügen von (u,v) zu T erhalten wir einen Zyklus.

Auf diesem gibt es (mindestens) eine Kante (x,y), die ebenfalls den

Schnitt schneidet. Wegen c(e) <= c(e´) kann e´durch e ersetzt werden!

TT

v y

xu

e e´

Page 21: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

21 WS 2006-07

Fall Rot

Rote Regel wurde auf e = (u, v) angewandt.

Sei T grüner Baum, der nach dem m-ten Färbungsschritt vorlag, d.h. T ist MST und enthält alle in den ersten m Färbungsschritten grün gefärbten Kanten und keine roten.

1. Fall: (u,v) T : ok

2. Fall: (u,v) T

Page 22: WS 2006-07 Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann.

22 WS 2006-07

Austauschschritt

TT

v y

xu

e e´