Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts Prof.Dr.Th Ottmann 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 : 9 b d 4 -5 a f -3 15 8 6 c e 8 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. 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 2 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. 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 2 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. 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 2 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. WS 2006-07
Grüne Regel 3 11 13 1 5 8 9 7 2 10 4 14 15 6 WS 2006-07
Rote Regel 3 11 13 1 5 8 9 7 2 10 4 14 15 6 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 Die Färbungsmethode färbt alle Kanten eines zusammenhängenden Graphen rot oder grün. 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! T x u y v WS 2006-07
Enden in verschiedenen grünen Bäumen Dann gibt es einen Schnitt, auf den die grüne Regel anwendbar ist. T x u y v WS 2006-07
4. Algorithmus von Kruskal Sortiere die Kanten nach ihrem Gewicht in nicht absteigender Reihenfolge. 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. WS 2006-07
Algorithmus von Kruskal: Beispiel 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 2 WS 2006-07
Algorithmus von Kruskal 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 ) WS 2006-07
5. Algorithmus von Prim 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 Starte mit beliebigem Knoten als „grünen Baum“ 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. 8 7 b c d 9 4 2 14 e a 11 i 4 6 7 8 9 h g f 1 2 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. 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 ) 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. 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. WS 2006-07
Austauschschritt T x u e e´ y v 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! T x u e e´ y v 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 WS 2006-07
Austauschschritt T x u e e´ y v WS 2006-07