Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide Dipl-Math. Wolfgang Kinzner 3.4.2012
Kapitel 3: Minimal aufspannende Bäume und Matroide Minimal aufspannende Bäume und MST-Problem Prim-Algorithmus Kruskal-Algorithmus Unabhängigkeitssysteme und Matroide Maximierungsproblem und Greedy-Algorithmus Rangquotient eines Unabhängigkeitssystems
Definition Minimal aufspannender Baum und MST-Problemstellung Sei G = (V, E, l) ein (ungerichteter) zusammenhängender Graph mit l : E R 0. Ein minimal aufspannender Baum (MST) von G ist ein Baum T = (V, F) G mit der Eigenschaft l(t) = min{l(t ) : T = (V, F ) G ist Baum}. MST-Problem: Input: Gewichteter zusammenhängender Graph G = (V, E, l). Output: MST in G.
Algorithmus von Prim Input: Graph G = (V, E), Längenfunktion l : E R 0 Output: Baum T = (V, F) Prim(G, l) (1) Wähle beliebigen Knoten s V (2) W := {s}, F :=, σ[s] := 0 (3) forall v N(s) do vor[v] := s, σ[v] := l(s, v) (4) forall v V \(N(s) {s}) do vor[v] :=NIL, σ[v] := (5) while W V (6) y := Knoten mit minimalem σ[.]-wert in V \ W (7) W := W {y}, F := F {vor[y], y} (8) forall z N(y) (V \ W) mit σ[z] > l(y, z) (9) σ(z) := l(y, z) (10) vor[z] := y
Funktionsweise des Prim-Algorithmus Beginnt mit beliebigem Knoten und baut sukzessive MST durch Hinzunahme der nächst größeren angrenzenden Kante zusammen. Laufzeit: O(n 2 ) (mit Fibonacci-Heaps: O(n log n+m))
Beispiel zum Prim-Algorithmus Folie 6
Algorithmus von Kruskal Input: Graph G = (V, E), Längenfunktion l : E R + Output: Baum T = (V, F) Kruskal(G, l) (1) Sortiere alle Kanten in E so, daß l(e 1 ) l(e m ) (2) F := (3) for i = 1 to m (4) if (V, F {e i }) kreisfrei then F := F {e i }
Funktionsweise des Kruskal-Algorithmus Sortiert zunächst die Kanten der Größe nach. Beginnt danach mit der kleinsten Kante und nimmt dann immer die nächst größere Kante hinzu, die keinen Kreis erzeugt. Laufzeit: O((m+n) log n)
Beispiel zum Kruskal-Algorithmus Folie 7
Übung 10 (MST-Algorithmen) (a) G und l können so gewählt sein, dass G einen Spannbaum T enthält, der vom Kruskal-Algorithmus nicht konstruiert werden kann, egal wie dieser eingestellt wird. (b) G und l können so gewählt sein, dass G einen Spannbaum T enthält, der bei entsprechdem Startknoten vom Prim-Algorithmus nicht konstruiert werden kann, egal wie dieser eingestellt wird. (c) Ist l injektiv, so liefern der Prim-Algorithmus und der Kruskal-Algorithmus dasselbe Ergebnis. (d) Ist l injektiv, dann wird der minimale Spannbaum auch immer vom (modifizierten) Dijkstra-Algorithmus korrekt erzeugt.
Übung 11 (Reverse Kruskal) Betrachten Sie den folgenden Algorithmus: Input: Zusammenhängender Graph G = (V, E, l), Längenfunktion l : E R 0 Output: Baum T = (V, F) ReverseKruskal(G, l) (1) Sortiere alle Kanten in E so, daß l(e 1 )... l(e m ) (2) for i = m to 1 do (3) if G e i zusammenhängend then G := G e i Zeigen Sie: (a) Reverse Kruskal erzeugt einen aufspannenden Baum von G. (b) Ist l injektiv, T R der von Reverse Kruskal erzeugte Baum und T der durch den klassischen Algorithmus von Kruskal erzeugte Baum dann gilt für die Kante e m mit dem größten Gewicht in E: e m ist Kante in T R e m ist Kante in T.
Beispiel zum Reverse-Kruskal-Algorithmus Folie 8
Definition Unabhängigkeitssystem, Matroid Ein Unabhängigkeitssystem ist ein Paar (E, I), wobei E eine endliche Menge ist und I (E) und die Bedingung erfüllt ist. B I, A B A I (1) E heißt Grundmenge, die Mengen A E mit A I heißen unabhängig, und die Mengen B E mit B I heißen abhängig. Wenn außerdem noch gilt, dass A, B I mit A < B : e B \ A mit (A {e}) I, (2) dann nennen wir (E, I) ein Matroid.
Basis, Kreis und Rang Sei U = (E, I) ein Unabhängigkeitssystem. Jede inklusionsmaximale unabhängige Menge von I heißt Basis. Jede inklusionsminimale abhängige Menge von I heißt Kreis. Oberen Rang von U := r + (U) := max{ B : B Basis von U}, Unteren Rang von U := r (U) := min{ B : B Basis von U}. Wenn r + (U) = r (U) =: r(u), dann heißt r(u) Rang von U. Es gilt: U ist genau dann ein Matroid, wenn F E und U F := (F, I F ) gilt, dass r + (U F ) = r (U F ).
Beispiele von Matroiden (1) Vektorraummatroid: Sei V ein Vektorraum, E eine Menge von Vektoren in V und I P(V) mit I := {F E : F ist linear unabhängige Familie von Vektoren in V } Dann ist (E, I) ein Matroid. Basen: Basen von I Rang: Dimension von I
Beispiele von Matroiden (2) Graphischer Matroid: Sei G = (V, E) ein Graph und sei I := {F E : (V, F) ist kreisfreier Graph }. Dann ist (E, I) ein Matroid. Unabhängige Mengen: Wälder Basen: Spannbäume Kreise: Kreise r(u) = V 1
Beispiel zum graphischen Matroid Folie 9
Übung 12 (Minimal aufspannende Bäume) Sei G = (V, E, l) ein gewichteter und zusammenhängender Graph. Beweisen Sie: Jeder MST ist ein spannender Baum mit kleinster größter Kante.
Übung 13 (Matroide) Sei G = (V, A, l) ein gerichteter, gewichteter Graph mit Gewichtsfunktion l : A R >0 und sei s V. Wir defnieren und P := {P : P ist gerichteter Weg in G mit Startknoten s} I := {A P : ( P 1, P 2 A mit P 1 P 2 : P 1 und P 2 haben verschiedene Endknoten g)} das Mengensystem, das eine Menge A von Wegen aus P genau dann als Element enthält, wenn alle Wege aus A verschiedene Endknoten haben. Zeigen Sie, dass M = (P, I) ein Matroid ist.
Maximierungsproblem und Greedy-Algorithmus Ein Maximierungsproblem über einem Unabhängigkeitssystem (E, I) ist gegeben durch eine Gewichtsfunktion l : E R 0. Für Mengen A I setze l(a) := e A l(e). Gesucht ist eine Menge A I mit l(a ) = max A I l(a). Greedy-Algorithmus: Input: Unabhängigkeitssystem (E, I), Gewichtsfunktion l : E R + Output: A g I Greedy-Max(E, I, l) (1) Sortiere E = {e 1,..., e m } so, daß l(e 1 ) l(e m ) (2) A g := (3) for i = 1 to m (4) if A g {e i } I then A g := A g {e i }
Rangquotient Sei U = (E, I) ein Unabhängigkeitssystem. Für F E setze wieder U F := (F, I F ) und 1 falls r + (U F ) = 0, κ(f) := r (U F ) r +(U F ) falls r (U F ) > 0. Dann heißt ρ(u) := min{κ(f) : F E} der Rangquotient von U. Es gilt: ρ(u) 1. U Matroid ρ(u) = 1.
Wichtige Resultate Hauptsatz: Sei (E, I, l) eine Maximierungsaufgabe über dem Unabhängigkeitssystem U = (E, I) mit Greedy-Lösung A g E und optimaler Lösung A E. Dann gilt 1 l(ag ) l(a ) ρ(u), und es gibt eine Gewichtsfunktion l : E R 0, für die die zweite Ungleichung mit Gleichheit gilt. Korollar von Edmonds-Rado: Sei U = (E, I) ein Unabhängigkeitssystem. Dann gilt: U ist genau dann Matroid, wenn der Greedy-Algorithmus für jede Funktion l : E R 0 eine optimale Lösung der Maximierungsaufgabe (E, I, l) findet.
Übung 14 (Unabhängigkeitssystem und Rangquotient) Sei G = (V, E) ein Graph mit E. Eine Teilmenge M E heißt Matching, falls für alle e, e M mit e e gilt, dass e e =. Wir definieren I := {M E : M Matching}. (a) Zeigen Sie, dass U := (E, I) ein Unabhängigkeitssystem, aber i.a. kein Matroid ist. (b) Zeigen Sie, dass ein inklusionsmaximales Matching M stets der folgenden Beziehung genügt: (c) Beweisen Sie ρ(u) 1 2. M 1 2 max M I M.