Algorithmische Graphentheorie Sommersemester 2016 6. Vorlesung Wurzelspannbäume Dr. Joachim Spoerhase Prof. Dr. Alexander Wolff Minimiere Wiederholung letzte Vorlesung unter den NB. X uv ∈E X cuv xuv xuv = 1 u ∈A∪B uv ∈E xuv ≥ 0 xuv ∈ {0, 1} uv ∈ E Kostenminimale perfekte Matchings in bipartiten Graphen. Wir stellen ein ganzzahliges lineares Programm (ILP) auf (mit einer Variable xe ∈ {0, 1} für jede Kante e ). Betrachte die Relaxierung (xe ≥ 0). Dies ist ein LP! Wir können es also (im Ggs. zum ILP) effizient lösen. F Pür LP-LösungPx und ILP-Lösung y gilt: e ∈ E c e xe ≤ e ∈E ce ye , d.h. x ist nicht teurer als y. Leider enthält x i.A. fraktionale Variable (e ∈ E mit 0 < xe < 1). Jeder Knoten ist zu 0 oder ≥ 2 fraktionalen Kanten inzident. ⇒ Falls x 6∈ {0, 1}|E | , so gibt es einen fraktionalen Kreis K . Da Graph bipartit, hat K gerade Länge, d.h. K = M1 ∪ M2 . ⇒ K lässt sich in zwei Matchings M1 und M2 zerlegen. Forts. Wiederholung P OBdA. c (M1 ) > c (M2 ) = e ∈M2 ce . Sei ε = mine ∈M1 xe . − + Für e ∈ M1 : setze xe0 = xe − ε. + − 0 Für e ∈ M2 : setze xe = xe + ε. K − + 0 Für e ∈ E \ K : setze xe = xe . + − ⇒ x0 ist zulässige LP-Lösung und nicht teurer als x. Mindestens eine Kante e in M1 hat xe = ε und xe0 = 0. D.h. x0 hat mehr ganzzahlige Variable als x. Wiederhole die Suche nach franktionalen Kreisen. Runde wie oben, bis alle Variable ganzzahlig sind. Die resultierende ganzzahlige Lösung x(k ) ist – nicht teurer als x0 , – also nicht teurer als x, – also nicht teurer als y, also optimal. Wurzelbäume Def. Ein gerichteter Graph T = (V , E ) mit Knoten s ∈ V heißt s -Wurzelbaum, wenn T enthält keinen T azyklisch, (gerichteten) Kreis. indeg(s ) = 0 und indeg(v ) = 1 für jeden Knoten v ∈ V \ {s }. a) s b) ? s c) ? s Wurzelspannbäume Def. Sei G = (V , E ) ein gerichteter (Multi-) Graph mit Knoten s ∈ V . Ein Teilgraph T von G mit Knotenmenge V heißt s -Wurzelspannbaum von G , wenn T ein s -Wurzelbaum ist. s Existenz von Wurzelspannbäumen Beob. Sei G ein gerichteter (Multi-) Graph mit Knoten s . G besitzt einen s -Wurzelspannbaum ⇔ jeder Knoten v ∈ V ist von s in G erreichbar. Es existiert ein s -v -Pfad in G . Beweis. Siehe Übungsblatt. Bemerkung. DFS(s ) liefert s -Wurzelspannbaum (sofern einer existiert). Minimale Wurzelspannbäume Gegeben: gerichteter (Multi-) Graph G = (V , E ) mit s ∈ V und Kantenkosten c : E → R≥0 . Def. Gesucht: s -Wurzelspannbaum T = (V , ET ) von G (sofern existent) mit minimalen Kosten P c (ET ) = e ∈ET c (e ). Motivation: s 1 2 2 2 3 3 Broadcast (Versenden von Information von s an alle Knoten) in einem Kommunikationsnetzwerk. 4 Übungsaufgabe: Kruskal und Jarnı́k-Prim schlagen i.A. fehl! Kostenmodifikation Für jedes v 6= s setze c0 (v ) := min{ c (u , v ) | (u , v ) ∈ E }. O.B.d.A. indeg(v ) ≥ 1 für jedes v 6= s . Für jede Kante (u , v ) setze c 0 (u , v ) := c (u , v ) − c0 (v ). ⇒ Jeder Knoten v 6= s hat eingehende 0-Kante. 2 3 4 v 2 0 1 v 1 c0 (v ) = 2 2 Validität der Kostenmodifikation Lem1 . Ein s -Wurzelspannbaum von G ist genau dann optimal bezüglich c , wenn er optimal bezüglich c 0 ist. Beweis. Für jeden s -Wurzelspannbaum T = (V , ET ) gilt X (c (u , v ) − c0 (v )) c 0 ( ET ) = indegT (v ) = 1 für alle v 6= s (u ,v )∈ET = X (u ,v )∈ET und indegT (s ) = 0 c (u , v ) − X v ∈ V −s c0 (v ) Ein Versuch Wähle für jedes v 6= s eine eingehende 0-Kante Teilgraph F = (V , EF ) von G Falls F azyklisch ⇒ F ist s -Wurzelspannbaum von G ! Beachte: F ist optimal bzgl. c 0 (und somit auch bzgl. c ), da c 0 (F ) = 0. Problem: Was tun, wenn F Kreis K enthält? s s F F K Kontraktion Betrachte gerichteten (Multi-) Graphen G = (V , E ) mit Kantenkosten c : E → R≥0 . Sei U ⊆ V . Kontraktion von U : Ersetze G [U ] durch neuen Knoten vU . Kantenkosten werden auf G /U vererbt. U vU G G /U ≡ vU G /U Expansion Lem2 . Sei K Kreis in F und T̃ s -Wurzelspannbaum von G /K . Dann gibt es einen s -Wurzelspannbaum T von G mit c 0 (T ) ≤ c 0 (T̃ ). s Beweis. Jede Kante in T̃ korrespondiert zu Kante in G . Teilgraph H von G mit Knotenmenge V . vK v Füge Kreis K zu H hinzu. u K H Expansion Lem2 . Sei K Kreis in F und T̃ s -Wurzelspannbaum von G /K . Dann gibt es einen s -Wurzelspannbaum T von G mit c 0 (T ) ≤ c 0 (T̃ ). s Beweis. Jede Kante in T̃ korrespondiert zu Kante in G . Teilgraph H von G mit Knotenmenge V . vK v Füge Kreis K zu H hinzu. ⇒ c 0 (H ) = c 0 (T̃ ). K Jeder Knoten in V ist in H von s erreichbar. Ermittle s -Wurzelspannbaum T (= H − uv ) u von H . T ist s -Wurzelspannbaum von G . H Algorithmus [Edmonds 1967] Berechne modifizierte Kantenkosten c 0 . Bestimme Teilgraph F . Falls F ein s -Wurzelbaum, gib F zurück. Ansonsten ermittle Kreis K in F . Kontrahiere G zu G /K . Wende Algorithmus rekursiv auf (G /K , c 0 ) an s -Wurzelspannbaum T̃ für G /K . Expandiere T̃ zu s -Wurzelspannbaum T von G gemäß Lem.2 Gib T zurück. Laufzeit Algorithmus terminiert spätestens, wenn |V | ≤ 2. In jeder Rekursionsstufe verringert sich Knotenanzahl um mindestens 1. ⇒ O (V ) rekursive Aufrufe. Kostenmodifikation, Kreisbestimmung, Kontraktion und Expansion dauern jeweils O (E ) Zeit. Satz. Edmonds’ Algorithmus terminiert in O (V E ) Zeit. Optimalität Lem3 . Sei K Kreis in F und T s -Wurzelspannbaum von G . Dann gibt es einen s -Wurzelspannbaum T̃ von G /K mit c 0 (T̃ ) ≤ c 0 (T ). s Beweis. Setze H := T /K . H H ist Teilgraph von G /K mit c 0 (H ) ≤ c 0 (T ). – Jeder s -v -Weg (v ∈ V \ K ) in T wird zu – (nicht notwendigerweise einfachem) s -v -Weg in H . vK – Jeder s -u -Weg (u ∈ K ) in T wird zu s -vK -Weg in H . v ⇒ Jeder Knoten in G /K ist in H von s erreichbar. Betrachte (beliebigen) s -Wurzelspannbaum T̃ von H . ⇒ T̃ ist auch s -Wurzelspannbaum von G /K und es gilt c 0 (T̃ ) ≤ c 0 (H ) ≤ c 0 (T ). Optimalität Satz. Edmonds’ Algorithmus berechnet einen minimalen s -Wurzelspannbaum. Beweis. Falls F azyklisch ist, so ist der Algorithmus korrekt. X Ansonsten: Vollständige Induktion über Knotenzahl n. Anfang (n = 1): V = {s }, G azyklisch. X Schritt (n > 1): Annahme: Algo. korrekt für alle Graphen mit k < n Knoten. Sei K Kreis in F und T ? min. s -Wurzelspannbaum von G . Lem.3 ⇒ exist. s -WSB T̃ von G /K mit c 0 (T̃ ) ≤ c 0 (T ? ) =: OPT0 IA ⇒ Algorithmus liefert optimalen s -WSB T̂ von G /K . ⇒ c 0 (T̂ ) ≤ c 0 (T̃ ). Lem.2 liefert s -WSB T von G mit c 0 (T ) ≤ c 0 (T̂ ) ≤ OPT0 . ⇒ T ist optimal bzgl. c 0 und somit bzgl. c . X