1 Algorithmische Graphentheorie Sommersemester 2014 6. Vorlesung Wurzelspannbäume Dr. Joachim Spoerhase Prof. Dr. Alexander Wolff 2 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 3 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 4 Existenz von Wurzelspannbäumen Beob. Sei G ein gerichteter (Multi-) Graph mit Knoten s . G besitzt genau dann einen s -Wurzelspannbaum, wenn jeder Knoten v ∈ V von s in G erreichbar ist. es existiert ein s -v -Pfad in G Beweis. Siehe Übungsblatt. Bemerkung. DFS(s ) liefert s -Wurzelspannbaum (sofern einer existiert). 5 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! 6 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 1 0 2 v 1 c0 (v ) = 2 7 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 ) 8 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 9 Kontraktion Betrachte gerichteten (Multi-) Graphen G = (V , E ) und U ⊆ V mit Kantenkosten c : E → R≥0 . Kontraktion von U : Ersetze G [U ] durch neuen Knoten vU . Kantenkosten werden auf G /U vererbt. U vU G G /U ≡ vU G /U 10-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 . u vK Teilgraph H von G mit Knotenmenge V . Füge Kreis K zu H hinzu. v K H 10-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 . u vK Teilgraph H von G mit Knotenmenge V . 0 0 Füge Kreis K zu H hinzu. ⇒ c (H ) = c (T̃ ). v K Jeder Knoten in V ist in H von s erreichbar. Ermittle (bel.) s -Wurzelspannbaum T von H . T ist s -Wurzelspannbaum von G . H 11 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 Berechne Graph 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äß Lemma2 Gib T zurück 12 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. 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 ). 14 Optimalität Satz. Edmonds’ Algorithmus berechnet einen minimalen s -Wurzelspannbaum. Beweis. Per Induktion über Knotenzahl. Falls F azyklisch, ist Algorithmus korrekt. Sei T ? minimaler s -Wurzelspannbaum von G und K Kreis in F . Lemma3 ⇒ exist. s -WSB T̃ von G /K mit c 0 (T̃ ) ≤ c 0 (T ? ). =: OPT0 Induktionsannahme ⇒ Algorithmus liefert s -WSB T̂ von G /K mit c 0 (T̂ ) ≤ c 0 (T̃ ). Lemma2 liefert s -WSB T von G mit c 0 (T ) ≤ c 0 (T̂ ) ≤ c 0 (T ? ). 0 ⇒ T ist optimal bzgl. c und somit bzgl. c . = OPT0