Minimale Spannbäume / 1 Gewichteter Graph: S

Werbung
Minimale Spannbäume / 1
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Gewichteter Graph: S = (V,E, w), w:E→Ζ
Spannbaum (ST) von G: Baum, der alle Knoten und
nur Kanten von E enthält
Minimaler Spannbaum (MST) von G:
ST mit minimalem Gewicht
• Jeder zusammenhängende Graph hat MST (siehe DFS)
Universität Paderborn
Minimale Spannbäume/2
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Lemma: G=(V,E,w) sei gewichteter Graph.
T= {T1 = (S1, E1) , .... , Tk = (Sk , Ek)} sei ein Wald in G,
der in einem MST enthalten ist. Kante e von G habe
einen der beiden folgenden Eigenschaften:
a) e verbinde zwei unterschiedliche Ti und Tj und
habe minimales Gewicht unter allen solchen Kanten,
b) e verbinde T1 mit irgendeinem anderen Tj und
habe minimales Gewicht unter allen solchen
Kanten.
Dann ist auch der durch Hinzufügen von e zu T
entstehende Wald in einem MST enthalten.
Minimale Spannbäume / 3
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Algorithmus von Kruskal
• Sortiere E so, dass w (e1) ≤... ≤ w (en) gilt.
T←∅
Für i = 1,...,n:
Füge ei zu T hinzu, falls
dadurch in T kein Kreis geschlossen wird.
Korrektheit: 9
Minimale Spannbäume / 4
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Algorithmus von Prím
T: Kantenmenge des bereits erzeugten Baums
S: Knotenmenge von T
T ← ∅ ; S ← {1};
Solange T keinen ST bildet :
Füge minimale Kante {i, j}, die S mit V-S verbindet,
zu T hinzu; S ← S ∪ { j }.
Korrektheit: 9
Minimale Spannbäume / 5
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Effiziente Implementierung des Algorithmus von Kruskal
T sei der vor Inspektion von ei erzeugte Wald.
• T besteht aus Bäumen T1,..., Tk auf
Knotenmengen S1,..., Sk.
• S1,...,Sk bilden disjunkte Zerlegung von V.
• Algo testet, ob ei keinen Kreis schliesst, d. h.
ob ei ein Sj und ein Sj‘ für j ≠ j‘ verbindet.
Falls ja: Tj bekommt Kanten von Tj´und ei
dazu, Sj ← Sj ∪ Sj‘
→ Wir
benötigen UNION-FIND Datenstruktur.
UNION - FIND / 1
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
ADT UNION - FIND
verwaltet disjunkte Zerlegung S1,..., Sk von V = { 1 ,...,n }
Operationen:
Make-Set (v) :
Union (x,y)
:
Find-Set (x) :
Erzeugt Menge { v } mit Namen v
x sei in Si , y sei in Sj
→ erzeuge Si ∪ Sj , gebe der Menge
beliebigen Namen aus Si ∪ Sj ,
“zerstöre“ Si, Sj
Finde namengebendes Element
der Menge, in der x liegt.
Universität Paderborn
Theoretische Informatik
Prof. Dr. rer. nat. Burkhard Monien
Kruskals Algorithmus benötigt
- n mal Make-Set
- n-1 mal Union
- 2m mal Find-Set
Herunterladen