Das Steinerbaumproblem Natalie Richert Fakultät für Elektrotechnik, Informatik und Mathematik, Universität Paderborn 4. Februar 008 / 3
Überblick Problembeschreibung Vorstellung von zwei Approimationsalgorithmen Distance-Network-Heuristik (Approimationsgüte ) Approimationsalgorithmus von Zelikovsk (Approimationsgüte /6) / 3
Das Steinerbaumproblem Gegeben: Zusammenhängender Graph G = (V, E) Terminale N V Gewichtsfunktion c : E R 0 Gesucht: Subgraph T = (V, E ) mit T ist ein Baum N V e E c(e) minimal Das Steinerbaumproblem ist damit eine Verallgemeinerung des Problems des minimalen Spannbaumes. 3 / 3
Beispiel Steinerbaum u z v w u z w (a) Eingabegraph (b) optimaler Steinerbaum Abbildung: Graph mit zugehörigem optimalen Steinerbaum 4 / 3
Kompleität In polnomieller Zeit lösbar für Spezialfälle N = Shortest Path Problem Lösung zum Beispiel mit Dijkstra Algorithmus N = V Minimum Spanning Tree Problem Lösung zum Beispiel mit Prim oder Kruskal Das allgemeine Steinerbaumproblem ist jedoch NP-vollständig Distance-Network-Heuristik mit Approimationsgüte Approimationsalgorithmus von Zelikovsk mit Approimationsgüte /6 5 / 3
Die Distance-Network-Heuristik Der Approimationsalgorithmus beruht auf der Bestimmung eines minimalen Spannbaumes des Distanzgraphen. Distanzgraph eines zusammenhängenden Graphen G = (V, E, c) ist Graph D G = (V, E D, c D ) mit E D = {{u, v} u, v V } cd : V V R 0 gibt die Länge eines kürzesten Pfades von u nach v in G angibt DG (N) ist ein durch N induzierter Subgraph von D G 6 / 3
Distance-Network-Heuristik: Algorithmus. Berechne den Distanzgraphen D G (N).. Berechne einen minimalen Spannbaum T D für D G (N). 3. Ersetze jede Kante in T D durch den entsprechenden kürzesten Pfad in G und erhalte einen Subgraphen G N von G. 4. Berechne einen minimalen Spannbaum T N für G N. 5. Entferne sukzessiv Blätter aus T N, die nicht in N sind. 7 / 3
Distance-Network-Heuristik: Beispiel v 0 0.5 0.5 v 8 v 9 v 7 v 4 v 4 v 8 v 6 v 5 4 4 4 9 v 3 v 4 4 v v 3 (a) Graph G (b) D G (N). Berechne den Distanzgraphen D G (N) 8 / 3
Distance-Network-Heuristik: Beispiel v 4 v 4 v 4 v 4 4 4 4 4 4 v v 3 (c) D G (N) 4 v v 3 (d) T D. Berechne einen minimalen Spannbaum T D für D G (N) 9 / 3
Distance-Network-Heuristik: Beispiel v 4 v 4 4 4 v v 3 v v 0.5 v 8 v 9 0.5 v 7 v 6 v 5 v 3 v 4 (e) T D (f) G N 3. Ersetze jede Kante in T D durch den entsprechenden kürzesten Pfad in G und erhalte einen Subgraphen G N von G 0 / 3
Distance-Network-Heuristik: Beispiel v v 0.5 0.5 v 8 v 9 0.5 0.5 v 8 v 9 v 7 v 7 v v 6 v 5 v v 6 v 5 v 3 v 4 (g) G N v 3 v 4 (h) T N 4. Berechne einen minimalen Spannbaum T N für G N / 3
Distance-Network-Heuristik: Beispiel v v 0.5 0.5 v 8 v 9 v 9 v 7 v v 6 v 5 v v 6 v 5 v 3 v 4 (i) T N v 3 v 4 (j) T KMB 5. Entferne sukzessiv Blätter aus T N, die nicht in N sind / 3
Approimationsgüte Beweis Sei T (N) ein minimaler Steinerbaum für N in G. Verdopple die Kanten von T (N). Erhalte ein Zklus Z, der alle Knoten aus N enthält. Also ist c(z) = c(t (N)). a b e d c Abbildung: Verdopplung der Kanten ergibt einen Zklus 3 / 3
Distance-Network-Heuristik: Beweis Z definiert einen Spannbaum T Z auf D G (N): Starte in einem Blatt v N von T (N) v, v,..., v N : Reihenfolge der Erstbesuche Kanten {v i, v i+ } bilden einen Spannbaum: a b e d c Also ist c(t D ) c(t Z ) c(z) = c(t (N)) Damit gilt c(t KMB ) c(t D ) c(t (N)). 4 / 3
Beispiel für schlechte Situation v v v k v 0 v 3 v k v 4...... 5 / 3
Approimationsalgorithmus von Zelikovsk Verbesserung der Approimationsgüte für das allgemeine Steinerbaumproblem von auf /6. Idee: Wähle optimale Steinerbäume für drei Terminale (Tripel), die das Gewicht des minimalen Spannbaumes des Distanzgraphen reduzieren Füge solchen optimalen Steinerbaum zum Spannbaum hinzu zwei Kreise werden im Spannbaum geschlossen Entferne die schwersten Kanten in diesen Kreisen 6 / 3
Begriffsdefinitionen T (N) optimaler Steinerbaum für die Terminalmenge N M i i Phase im Algorithmus der aus dem Urpsrungsspannbaum nach i Modifikationen hervorgegangene Spannbaum Bridge i (, ) schwerste Kante auf dem Pfad von nach in M i. Für tr = {,, z} N gilt: Bridge i (tr) = {Bridge i (, ), Bridge i (, z), Bridge i (, z)} gain i (tr) Einsparung durch den optimalen Steinerbaum für ein Tripel tr von Terminalen gain i (tr) = c(bridge i (tr)) c(t (tr)) 7 / 3
Eigenschaften von Bridge i (tr) Lemma Bridge i (tr) = Beweis. M tr : Subbaum von M i, durch Tripel tr = {,, z} aufspannt Es eistiert in M tr ein eindeutiger Knoten c: Pfade p, p, p z von c nach,, z sind in M tr paarweise kantendisjunkt Pfad p enthalte die schwerste Kante von M tr Dann gilt Bridge i (, ) = Bridge i (, z) Bridge i (, z) Im folgenden bestehe Bridge i (tr) ohne Einschränkung der Allgemeinheit aus den Kanten {, } und {, z}. 8 / 3
Der Zelikovsk-Algorithmus. Berechne minimalen Spannbaum M 0 von D G (N). Solange Tripel tr mit gain i (tr) > 0 eistiert (Phase i):. Wähle Tripel tr i = {,, z} mit ma. gain. M i+ = (M i \ Bridge i (tr i )) {{, }, {, z}} mit Gewichten c({, }) = c(bridge i (, )) gain i (tr i ) und c({, z}) = c(bridge i (, z)) gain i (tr i ) 3. Mit M f wird nun der endgültige Steinerbaum T Z erzeugt: 3. Füge in G Z kürzesten Pfad für jede Kante aus M f M 0 ein 3. Füge in G Z optimalen Steinerbaum T (tr i ) 3.3 Berechne den minimalen Spannbaum T Z von G Z M i+ hat reduziertes Gewicht c(m i+ ) = c(m i ) gain i (tr i ) c(m f ) = c(m 0 ) i gain i(tr i ) f ist die Phasenanzahl 9 / 3
Der Zelikovsk-Algorithmus: Beispiel Eingabegraph G Terminalmenge {w,,, z} Bsp. Gewicht c(t ({,, z})) = 3 u z v w Abbildung: G 0 / 3
Der Zelikovsk-Algorithmus: Beispiel u z v w Abbildung: G Der dazugehörige Distanzgraph D G (N) z 4 w Abbildung: D G (N) / 3
Der Zelikovsk-Algorithmus: Beispiel z 4 w Minimaler Spannbaum M 0 von D G (N) Bridge 0 (tr 0 ) = {{, }, {, w}}, tr 0 = {,, z} gain 0 (tr 0 ) = c(bridge 0 (tr 0 )) c(t (tr 0 )) = 4 3 = > 0 Abbildung: D G (N) z w Abbildung: M 0 / 3
Der Zelikovsk-Algorithmus: Beispiel z 4 w Minimaler Spannbaum M 0 von D G (N) Bridge 0 (tr 0 ) = {{, }, {, w}}, tr 0 = {,, z} gain 0 (tr 0 ) = c(bridge 0 (tr 0 )) c(t (tr 0 )) = 4 3 = > 0 Abbildung: D G (N) z w Abbildung: M 0 / 3
Der Zelikovsk-Algorithmus: Beispiel z 4 w Minimaler Spannbaum M 0 von D G (N) Bridge 0 (tr 0 ) = {{, }, {, w}}, tr 0 = {,, z} gain 0 (tr 0 ) = c(bridge 0 (tr 0 )) c(t (tr 0 )) = 4 3 = > 0 Abbildung: D G (N) z w Abbildung: M 0 / 3
Der Zelikovsk-Algorithmus: Beispiel z w Bridge 0 (, ) und Bridge 0 (, z) werden ersetzt durch {, } und {, z} c({, }) = c(bridge 0 (, )) gain 0 (tr 0 ) = c({, z}) = c(bridge 0 (, z)) gain 0 (tr 0 ) = Kein weiteres Tripel eistiert mit positivem gain Abbildung: M 0 z w Abbildung: M 3 / 3
Der Zelikovsk-Algorithmus: Beispiel z w Ersetze in M Kante aus M 0 M durch kürzesten Pfad Ersetze für Tripel tr 0 die Kanten {, } und {, z} durch optimalen Steinerbaum für tr 0 Berechne minimalen Spannbaum des resultierenden Graphen Abbildung: M z u v w Abbildung: T Z 4 / 3
Der Zelikovsk-Algorithmus: Approimationsgüte Lemma Für alle i {0,,..., f } enthält Bridge i (tr i ) nur Kanten aus M 0. Neu hinzugefügte Kanten werden nicht mehr ausgetauscht M f besteht aus Kanten aus M 0 und aus Kanten, die durch die Tripel tr 0, tr,..., tr f eingefügt wurden 5 / 3
Der Zelikovsk-Algorithmus: Approimationsgüte Lemma 3 c(t Z ) (c(m 0 ) + c(m f ))/ Beweis. T Z ist minimaler Spannbaum des Graphen G Z bestehend aus kürzesten Pfaden für jede Kante aus M f M 0 optimalen Steinerbäumen T (tr i ) c(t Z ) c(m f ) + i = c(m f ) + i (c(t (tr i )) (c(bridge i (tr i )) gain i (tr i ))) gain i (tr i ) = (c(m f ) + c(m f ) + i gain i (tr i ))/ = (c(m f ) + c(m 0 ))/ 6 / 3
Der Zelikovsk-Algorithmus: Approimationsgüte Definition 4 (Volle Komponente) Eine volle Komponente eines Graphen G = (V, E) und einer Terminalmenge N V ist ein Subgraph G von G der ein Baum ist und dessen Blätter genau die Terminale sind. a c b d e f i g h j k l Abbildung: Zerlegung eines Steinerbaums in seine volle Komponenten 7 / 3
Der Zelikovsk-Algorithmus: Approimationsgüte Definition 5 (3-Steinerbaum) In einem 3-Steinerbaum hat jede volle Komponente höchstens drei Terminale. Ein optimaler 3-Steinerbaum T 3 (N) ist ein 3-Steinerbaum minimalen Gewichts. Lemma 6 c(m f ) 5/3 c(t (N)) Beweisidee gliedert sich in zwei Schritte. c(m f ) c(t 3 (N)) 5 c(t (N)) 3 Lemma 7 (Güte der Distance-Network-Heuristik) c(m 0 ) c(t (N)) 8 / 3
Approimationsgüte Theorem 8 Der Algorithmus von Zelikovsk berechnet für einen zusammenhängenden und gewichteten Graphen G = (V, E, d) und eine Terminalmenge N V einen Steinerbaum T Z für N in G mit Approimationsgüte /6. Beweis. Aus den Lemmata 3, 6 und 7 erhält man c(t Z ) (c(m f ) + c(m 0 ))/ ( + 5/3) c(t (N))/ = /6 c(t (N)) 9 / 3
Zusammenfassung Problembeschreibung In polnomieller Zeit lösbar für Spezialfälle Allgemeines Steinerbaumproblem ist NP-vollständig Vorstellung von zwei Approimationsalgorithmen Distance-Network-Heuristik (Approimationsgüte ) Approimationsalgorithmus von Zelikovsk (Approimationsgüte /6) 30 / 3
Vielen Dank für die Aufmerksamkeit! Fragen? 3 / 3