1 Algorithmische Graphentheorie Sommersemester 2017 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 2 - 12 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. 3 - 11 Forts. Wiederholung • OBdA. c (M1 ) > c (M2 ) = e ∈M ce . Sei ε = mine ∈M1 xe . 2 − + 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. P • Die resultierende ganzzahlige Lösung x(k ) ist – nicht teurer als x0 , – also nicht teurer als x, – also nicht teurer als y, also optimal. 4-3 Wurzelbäume Def. a) 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 }. s b) ? s c) ? s 5-2 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 6-4 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). 7-7 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! 8-4 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 9-8 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 und indegT (s ) = 0 c (u , v ) − c0 (v ) v ∈ V −s (u ,v )∈ET = c ( ET ) − X X c0 (v ) v ∈ V −s unabhängig von T ! 10 - 5 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 11 - 5 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 12 - 4 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 12 - 9 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 13 - 12 Algorithmus [Edmonds 1967] • Berechne modifizierte Kantenkosten c 0 . • Bestimme Teilgraph F . • Falls F azyklisch, gib F zurück. • Ansonsten ermittle Kreis K in F . • Kontrahiere G zu G /K . 0 2 0 0 • Wende Algorithmus rekursiv auf (G /K , c ) an s -Wurzelspannbaum T̃ für G /K . 0 s 0 3 1 2 4 0 0 • Expandiere T̃ zu s -Wurzelspannbaum T von G [gemäß Lem2 ]. kontrahiere K • Gib T zurück. 2 1 Jack R. Edmonds *1934 expandiere T̃ 0 0 0 0 0 0 s 1 0 K 0 G F 0 T 0 2 3 10 3 2 4 0 vK 0 0 G/K FG/K T̃ 1 0 0 14 - 5 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. 15 - 13 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 ). 16 - 16 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