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