Upload
helmfrid-schlau
View
107
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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.
7 WS 2006-07
8
2
13
7
3
6
1514 4
5
9
11
10
1
Grüne Regel
8 WS 2006-07
8
2
13
7
3
6
1514 4
5
9
11
10
1
Rote Regel
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.
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
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
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.
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
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 )
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
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.
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 )
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.
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.
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´
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
22 WS 2006-07
Austauschschritt
TT
v y
xu
e e´