Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Seminararbeit Das Steinerbaumproblem Natalia Richert Matrikelnr.: 6135085 [email protected] Paderborn, 4. Februar 2008 Inhaltsverzeichnis 1 Motivation und Zielsetzung 2 2 Komplexität 3 3 Das Verfahren von Kou, Markowsky und Berman 4 4 Der 11/6-Approximationsalgorithmus von Zelikovsky 7 1 1 Motivation und Zielsetzung Es soll ein veraltetes Strassenverkehrsnetz erneuert werden. Allerdings fehlen die finanziellen Mittel zur Erneuerung des gesamten Strassenverkehrsnetzes. Die Erneuerung soll sich deshalb nur auf die Strassen beschränken, die Großstädte miteinander verbinden. Diese Strassen dürfen dabei natürlich auch durch Kleinstädte führen. Zusätzlich sollen die Gesamtkosten für die Renovierung, die abhänging von der Gesamtlänge der renovierten Strassen ist, möglichst gering gehalten werden. Probleme dieser Art können als Steinerbaumproblem aufgefasst werden. Dies ist eine Verallgemeinerung des Problems des minimalen Spannbaums: Sei G = (V, E) ein ungerichteter und durch eine Funktion c : E → R≥0 kantengewichteter Graph. Weiterhin sei N ⊆ V die Menge der sogenannten Terminale. Dann ist ein Steinerbaum für N in G ein Subgraph von G, der ein Baum ist und der Knoten aus N enthält. Das Steinerbaumproblem fragt P nun nach einem Steinerbaum T (N ) mit minimalem Gewicht c(T (N )) := e∈T (N ) c(e). Dabei können, falls nötig, auch Knoten aus V \ N verwendet werden. Diese Knoten werden Steinerknoten genannt. Wenn wir das Strassenverkehrsnetz als Graphen auffassen, so repräsentieren die Knoten die Städte und die Kanten die vorhandenen Straßen, wobei das Gewicht jeder Kante der Streckenlänge entspricht und die zu verbindenden Großstädte als Terminalknoten aufgefasst werden. Die Aufgabe besteht nun darin eine gewichtsminimale Teilmenge der Kanten zu finden, sodass alle Großstädte miteinander verbunden sind. Die Suche nach dieser Teilmenge entspricht der Suche nach einem minimalen Steinerbaum. Ein Beispiel für einen optimalen Steinerbaum ist in der Abb. 1 dargestellt. Dabei sind die ausgefüllten Knoten die Terminalknoten. x z 1 1 u 2 v 1 u 1 2 2 z 1 2 1 y x y w (a) Graph G 2 w (b) Opt. Steinerbaum T (N ) Abbildung 1: Beispiel für einen optimalen Steinerbaum Während die Spezialfälle N = V und |N | = 2, die mit der Suche nach einem minimalen Spannbaum bzw. nach einem kürzesten Pfad identisch sind, polynomiell lösbar sind, ist das allgemeine Problem NP-vollständig [2]. Aus diesem Grund ist es sinnvoll, Approximationsalgorithmen zu betrachten, welche vielleicht nicht eine optimale, aber noch “gute” Lösung für ein gegebenes Steinerbaumproblem liefern. Nachdem in Abschnitt 2 die Komplexität des Steinerbaumproblems erörtert worden ist, werden in dieser Seminararbeit zwei Approximationsalgorithmen für das Steinerbaumproblem vorgestellt. Dabei erreicht das Verfahren von Kou et 2 al. eine Approximationsgüte von 2 (Abschnitt 3) und der darauf aufbauende Algorithmus von Zelikovsky eine verbesserte Güte von 11/6 (Abschnitt 4). 2 Komplexität Die Entscheidungsproblemversion des Steinerbaumproblems fragt zu einem gegebenen maximalen Gewicht B nach einem Steinerbaum T mit c(T ) ≤ B. Das NP-vollständige Entscheidungsproblem Vertex Cover kann auf dieses Entscheidungsproblem reduziert werden. Bei dem Vertex Cover Problem wird nach einer kleinstmöglichen Knotenmenge U gesucht, sodass für jede Kante {u, v} gilt: u ∈ U ∨ v ∈ U. Theorem 2.1 Das Steinerbaumproblem ist N P -vollständig. Beweis 2.2 Sei der Graph G = (V, E) eine Instanz von Vertex Cover. Die Instanz G0 für das Steinerbaumproblem gehe aus G hervor, indem ein weiterer Knoten z mit allen Knoten v ∈ V verbunden wird. Zusätzlich wird auf jeder ursprünglichen Kante e ∈ E ein neuer Knoten ve eingefügt. Damit hat G0 die folgende Form: • G0 = (V ∪ Ve ∪ {z}, F ∪ Ez ) • Ve = {ve | e ∈ E} • F = {{ve , a}, {ve , b} | e = {a, b} ∈ E} • Ez = {{v, z} | v ∈ V } • N = Ve ∪ {z} • c(e) = 1 für alle e ∈ F ∪ Ez Die Konstruktion kann in der Abb. 2 nachfolzogen werden. z a b c v1 a b v2 c (b) Graph G0 (a) Graph G Abbildung 2: Konstruktion der Instanz für das Steinerbaumproblem Bezeichne m = |V |, OP T das minimale Gewicht eines Steinerbaumes in G0 für die Terminalmenge N und τ (G) die Größe des Vertex Cover in G. Dann gilt: OP T = τ (G) + m . 3 ≤ : Sei C eine minimale Knotenüberdeckung von G. Dann ist jeder Knoten ve mit e ∈ E in G0 zu einem Knoten v ∈ C benachbart. Die Knoten v ∈ C sind in G0 wiederrum zu z benachbart. Damit ist der durch N ∪ C induzierte Subgraph G0 (N ∪C) von G0 zusammenhängend. Ein Spannbaum von G0 (N ∪ C), der auch ein Steinerbaum für N in G0 ist, hat höchstens das Gewicht |N ∪ C| − 1 = τ (G) + m. Es gilt also OP T ≤ τ (G) + m. ≥ : Sei T (N ) ein Steinerbaum für N in G0 mit Gewicht OP T . Weiterhin sei C = V (T )\N die Menge der Steinerknoten in T (N ). Jeder Knoten ve mit e ∈ E in T (N ) ist zu mindestens einem Steinerknoten v ∈ C benachbart. Damit ist C ein Vertex Cover für G. Da T (N ) ein Baum ist, gilt V (T ) = OP T +1. Daraus folgt dann τ (G) ≤ |C| = (OP T +1)−(m+1) = OP T −m. 3 Das Verfahren von Kou, Markowsky und Berman Die Distance-Network-Heuristik von Kou et al. [3] galt lange als bester Approximationsalgorithmus für das Steinerbaumproblem. Dieser erreicht eine Approximationsgüte von 2 bei einer Laufzeit von O(|N |(|E| + |V |log|V |)). Der Approximationsalgorithmus beruht auf der Bestimmung eines minimalen Spannbaumes des Distanzgraphen. Die in diesem Abschnitt vorgestellte Herangehensweise ist angelehnt an den Ansatz von Vazirani [5]. Definition 3.1 (Distanzgraph) Der Distanzgraph eines zusammenhängenden Graphen G = (V, E, c) ist der vollständige Graph DG = (V, ED , cD ) mit ED = {{u, v} | u, v ∈ V } und cD : V × V → R≥0 , wobei cD (u, v) die Länge eines kürzesten Pfades von u nach v in G angibt. Ist N ⊆ V so ist DG (N ) ein durch N induzierten Subgraph von DG . Die Distance-Network-Heuristik berechnet zunächst einen Distanzgraphen bezüglich der Terminalmenge N und bestimmt den zugehörigen minimalen Spannbaum. Anschließend werden die Kanten im minimalen Spannbaum durch die entsprechenden kürzesten Pfade ersetzt, sodass ein Subgraph des Eingabegraphen entsteht. Der minimale Spannbaum des Subgraphen ist dann ein Steinerbaum. Der gesamte Algorithmus ist in Alg. 1 zusammengefasst. Algorithm 1 Distance-Network-Heuristik Eingabe: Ein ungerichteter, kantengewichteter Graph G = (V, E, c) und eine Menge von Terminalen N ⊆ V Ausgabe: Ein Steinerbaum TKM B für N in G 1: Berechne den Distanzgraphen DG (N ). 2: Berechne einen minimalen Spannbaum TD für DG (N ). 3: Ersetze jede Kante in TD durch den entsprechenden kürzesten Pfad in G und erhalte einen Subgraphen GN von G. 4: Berechne einen minimalen Spannbaum TN für GN . 5: Entferne sukzessiv Blätter aus TN , die nicht in N sind. Der Algorithmus soll nun an einem Beispiel in Abb. 3 demonstriert werden. Die Terminalmenge des Graphen 3(a) ist gegeben durch N = {v1 , v2 , v3 , v4 }. 4 3(b) ist der Distanzgraph DG (N ) von G bzgl. N . 3(c) zeigt den minimalen Spannbaum TD von DG (N ). Der Subgraph GN von G, der aus TD durch Ersetzung der Kanten durch die entsprechenden kürzesten Pfade in G entsteht, ist in 3(d) abgebildet. 3(e) ist der minimale Spannbaum TN für GN . Durch das sukzessive Entfernen der Blätter aus TN , die nicht in N sind, entsteht dann der Steinerbaum TKM B in 3(f). v1 1 v8 10 0.5 v9 0.5 1 v7 v1 4 v4 v1 4 4 4 4 v2 4 v3 v2 4 v4 4 v3 1 1 v2 1 v6 v5 2 8 2 9 v3 v4 (a) G (b) DG (N ) v1 v1 1 v8 (c) TD 0.5 v1 1 v9 v8 0.5 0.5 1 v9 v9 1 1 0.5 1 v7 v7 1 v2 1 v6 1 2 v3 v5 v2 1 v6 1 v5 2 2 v4 v3 (d) GN v2 1 v6 1 2 2 v4 v3 (e) TN v5 2 v4 (f) TKM B Abbildung 3: Beispiel für die Distance-Network-Heuristik Theorem 3.2 Die Distance-Network-Heuristik berechnet für einen zusammenhängenden und gewichteten Graphen G = (V, E, c) und eine Terminalmenge N ⊆ V einen Steinerbaum TKM B für N in G mit Approximationsgüte 2. Beweis 3.3 Sei T (N ) ein minimaler Steinerbaum für N in G. Verdoppelt man die Kanten von T (N ) so erhält man ein Zyklus Z, der alle Knoten aus N enthält. Da jede Kante von T (N ) in Z genau zweimal auftritt, ist c(Z) = 2c(T (N )). In der Abb. 4 repräsentieren die gestrichelten Kanten den Zyklus Z. Dabei stellen die ausgefüllten Knoten die Terminale und die leeren Knoten die Steinerknoten dar. Seien v1 , v2 , . . . , v|N | die Terminale in der Reihenfolge, in der man ihnen beim Entlanglaufen des Zyklus Z beginnend in einem Blatt v1 ∈ N von T (N ) zum ersten Mal begegnet (s. Abb. 5). a b y x e c d Abbildung 4: Verdopplung der Kanten ergibt einen Zyklus 5 a b y x e c d Abbildung 5: Ein Spannbaum für DG (N ) Dann wird durch die Kantenmenge {{vi , vi+1 } | i = 1, . . . , |N | − 1} ein Spannbaum TZ für DG (N ) definiert, und es gilt c(TD ) ≤ c(TZ ). Da jede Kante {vi , vi+1 } des Spannbaumes TZ nur höchstens so schwer ist wie der zugehörige Abschnitt zwischen vi und vi+1 auf Z, folgt c(TZ ) ≤ c(Z) = 2c(T (N )) . Damit gilt insgesamt für die Qualität des Steinerbaumes TKM B : c(TKM B ) ≤ c(TD ) ≤ c(TZ ) ≤ 2c(T (N )) . v1 2 2 v2 vk 1 1 2 1 v0 1 2 1 vk−1 v3 1 2 v4 . . . . . . Abbildung 6: Beispiel für eine schlechte Situation Das Beispiel in der Abb. 6 zeigt, dass die Abschätzung bestmöglich ist. Der gewichtete Graph G = (V, E, c) ist definiert durch V = {v0 , v1 , . . . , vk } E = c({vi , vj }) = {{vi , vi+1 } | 1 ≤ i ≤ k} ∪ {{vk , v1 }} ∪ {{v0 , vi } | 1 ≤ i ≤ k} 2 falls vi 6= v0 und vj 6= v0 1 sonst Die Terminalmenge ist gegeben durch N = {v1 , v2 , . . . , vk }. Im schlechtesten Fall besteht die Ausgabe der Distance-Network-Heuristik aus den Kanten {v1 , v2 }, {v2 , v3 }, . . . , {vk−1 , vk }. Der minimale Steinerbaum T (N ) besteht 6 dagegen aus den Kanten {v1 , v0 }, {v2 , v0 }, . . . , {vk , v0 }. Damit ist c(TKM B ) = 2c(T (N )). Lemma 3.4 Die Distance-Network-Heuristik hat eine Laufzeit von O(|N |(|E|+ |V |log|V |)). Beweis 3.5 Für die Berechnung eines Distanzgraphen muss für jeden Terminalknoten aus N der Dijkstra-Algorithmus zur Berechnung eines kürzesten Pfades zwischen einem Startknoten und einem beliebigen Knoten in einem kantengewichteten Graphen ausgeführt werden. Der Dijkstra-Algorithmus hat eine Laufzeit von O(|E| + |V |log|V |). Für die Berechnung eines minimalen Spannbaums kann der Algorithmus von Prim verwendet werden. Dieser besitzt die Worst-Case-Laufzeit O(|E|+|V |log|V |). was zu einer Gesamtlaufzeit von O(|N |(|E|+ |V |log|V |)) führt. 4 Der 11/6-Approximationsalgorithmus von Zelikovsky Zelikovsky [6] verbesserte die Approximationsgüte von 2 für das allgemeine Steinerbaumproblem auf 11/6. Seine Idee besteht im wesentlichen darin, optimale Steinerbäume für drei Terminale zu wählen, welche das Gewicht des minimalen Spannbaumes des Distanzgraphen reduzieren. Das Hinzufügen eines solchen optimalen Steinerbaumes schließt im Spannbaum zwei Kreise. Die beiden schwersten Kanten in diesen Kreisen werden dann entfernt. Die in dieser Arbeit vorgestellte Variante des Algorithmus und Beweises sind dabei an die Vorlesung von Ravi angelehnt [4]. Der Algorithmus von Zelikovsky beginnt mit der Berechnung des Distanzgraphen DG (N ) für die Terminalknoten N und bestimmt den zugehörigen minimalen Spannbaum M0 . In jeder Phase ersetzt der Algorithmus zwei Kanten des Spannbaums durch jeweils eine neue Kante mit kleinerem Gewicht. Dabei bezeichne Mi den Spannbaum vor der i-ten Phase. Für die weitere Beschreibung des Algorithmus werden einige Definitionen benötigt. Definition 4.1 Für Terminale x, y ∈ N bezeichne Bridgei (x, y) die schwerste Kante auf dem Pfad von x nach y in Mi . Für ein Tripel tr = {x, y, z} ⊆ N sei dann Bridgei (tr) = {Bridgei (x, y), Bridgei (x, z), Bridgei (y, z)} . Für ein Tripel tr = {x, y, z} ⊆ N gilt, dass die Menge Bridgei (tr) genau zwei Kanten enthält. Lemma 4.2 |Bridgei (tr)| = 2 Beweis 4.3 Sei Mtr ein Subbaum von Mi , welches von dem Tripel tr aufspannt wird . Dann existiert in Mtr ein eindeutiger Knoten c, sodass die Pfade px , py , pz von c nach x, y bzw. z in Mtr paarweise kantendisjunkt sind. Der Knoten c kann dabei mit einem der Knoten x, y, z übereinstimmen. Der entsprechende Pfad zwischen diesen beiden Knoten hat dann die Länge 0. Sei ohne Einschränkung der Allgemeinheit die schwerste Kante von Mtr auf dem Pfad px . Dann gilt Bridgei (x, y) = Bridgei (x, z) 6= Bridgei (y, z). 7 Im folgenden bestehe Bridgei (tr) ohne Einschränkung der Allgemeinheit aus den Kanten {x, y} und {x, z}. Definition 4.4 Für ein Tripel tr = {x, y, z} ⊆ N sei gaini (tr) = c(Bridgei (tr)) − c(T (tr)) . Dabei ist c(Bridgei (tr)) = c(Bridgei (x, y)) + c(Bridgei (x, z)) und T (tr) ein optimaler Steinerbaum für die Terminalmenge tr in G. Der positive gaini (tr) eines Tripels tr ist also die Einsparung des Gewichts, wenn anstatt der Kanten aus Bridgei (tr) der optimale Steinerbaum für tr im Spannbaum Mi verwendet wird. Der Algorithmus von Zelikovsky terminiert, wenn kein Tripel mehr mit positivem gain existiert. Sei in der i-ten Phase das Tripel tri = {x, y, z} mit maximalem positivem gain. Dann lässt sich Mi+1 aus Mi konstruieren, indem die Kanten Bridgei (x, y) und Bridgei (x, z) durch die Kanten {x, y} bzw. {x, z} ersetzt werden. Diese haben die reduzierten Gewichte c({x, y}) = c(Bridgei (x, y)) − gaini (tri ) und c({x, z}) = c(Bridgei (x, z)) − gaini (tri ). Der Spannbaum Mi+1 hat dann das Gewicht c(Mi+1 ) = c(Mi ) − 2 · gaini (tri ). Daraus folgt X c(Mf ) = c(M0 ) − 2 gaini (tri ) , i wobei f die Anzahl der Phasen ist, die der Algorithmus durchführt. In Mf werden nun die Kanten, die auch in M0 enthalten sind, durch die entsprechenden kürzesten Pfade im Eingabegraphen G ersetzt. Für alle Tripel, die genutzt wurden um das Gewicht von einigen Kanten zu reduzieren, werden die zugehörigen optimalen Steinerbäume eingefügt. Abschließend wird der minimale Spannbaum des resultierenden Graphen berechnet. Der gesamte Algorithmus ist in Alg. 2 zusammengefasst. Dabei bezeichne M ST (G) den minimalen Spannbaum von G. Der Algorithmus soll nun an einem Beispiel in Abb. 7 demonstriert werden. Die Terminalmenge des Graphen 7(a) ist gegeben durch N = {w, x, y, z}. 7(b) ist der Distanzgraph DG (N ) von G bzgl. N . 7(c) zeigt den minimalen Spannbaum M0 von DG (N ). Das Tripel tr0 = {x, y, z} hat in M0 maximalen gain mit gain0 (tr0 ) = c(Bridge0 (tr0 )) − c(T (tr0 )) = 4 − 3 = 1 > 0. Der Spannbaum M1 in 7(d), der aus M0 durch Ersetzung der Kanten Bridge0 (x, y) = {x, y} und Bridge0 (x, z) = {x, w} durch {x, y} und {x, z} entsteht. Diese neuen Kanten haben die Gewichte c({x, y}) = c(Bridge0 (x, y)) − gain0 (tr0 ) = 1 und c({x, z}) = c(Bridge0 (x, z)) − gain0 (tr0 ) = 1. In M1 gibt es kein weiteres Tripel mit positivem gain. Durch Ersetzen der Kante {z, w} ∈ M0 ∩ M1 durch den entsprechenden kürzesten Pfad und das Einfügen des optimalen Steinerbaumes für tr0 erhält man den Steinerbaum TZ in Abb. 7(e). Im folgenden wird die Approximationsgüte des vorgestellten Algorithmus bewiesen, wozu einige Vorbereitungen nötig sind. Lemma 4.5 Für Terminale x, y ∈ N und für alle i ∈ {0, 1, . . . , f − 1} gilt c(Bridgei (x, y)) ≥ c(Bridgei+1 (x, y)) . 8 Algorithm 2 11/6 Approximationsalgorithmus von Zelikovsky Eingabe: Ein ungerichteter, kantengewichteter Graph G = (V, E, c) und eine Menge von Terminalen N ⊆ V Ausgabe: Ein Steinerbaum TZ für N in G 1: M0 = M ST (DG (N )) 2: T r = {tr ⊆ N | |tr| = 3} 3: i = 0 4: Bridge = ∅, T ripel = ∅ 5: for Tripel tr ∈ T r do P 6: Finde v ∈ V , das opt = u∈tr cD (v, u) minimiert 7: c(T (tr)) = opt 8: end for 9: while ∃ tr ∈ T r : gaini (tr) > 0 do 10: Finde ein Tripel tri ∈ T r, das gaini (tri ) maximiert 11: Mi+1 = (Mi \ Bridgei (tri )) ∪ {{x, y}, {x, z}} mit c({x, y}) = c(Bridgei (x, y)) − gaini (tri ) und c({x, z}) = c(Bridgei (x, z)) − gaini (tri ) 12: 13: 14: 15: 16: 17: i=i+1 Bridge = Bridge ∪ {{x, y}, {x, z}} T ripel = T ripel ∪ tri end while Ersetzte in Mi jede Kante e ∈ M0 ∩ Mi durch den entsprechenden kürzesten Pfad in G und jedes Paar von Kanten br ∈ Bridge durch den optimalen Steinerbaum in G für das entsprechende Tripel tr ∈ T ripel. Berechne den minimalen Spannbaum TZ des resultierenden Graphen. Beweis 4.6 Mi+1 entsteht aus Mi , indem zwei Kanten ersetzt werden. Dabei wird die Kante Bridgei (a, b) durch die Kante {a, b} ausgetauscht. Bridgei (x, y) bleibt unverändert, wenn die Kante {a, b} nicht auf dem Pfad von x nach y in Mi+1 liegt. Ansonsten schließt die Kante {a, b} einen Kreis p ◦ q in Mi und die Pfade px und py verbinden x und y mit den gemeinsamen Endpunkten von p und q. Dann geht der Pfad von x nach y in Mi über px ◦ q ◦ py und in Mi+1 über px ◦ p ◦ py . Und da die Kante Bridgei (a, b) die schwerste Kante auf dem Kreis p ◦ q ist, folgt die Behauptung. Lemma 4.7 Für alle i ∈ {0, 1, . . . , f − 1} enthält Bridgei (tri ) nur Kanten aus M0 . Beweis 4.8 Siehe [1]. Lemma 4.9 Der Algorithmus von Zelikovsky berechnet einen Steinerbaum TZ mit c(TZ ) ≤ (c(M0 ) + c(Mf ))/2 Beweis 4.10 Nach Lemma 4.7 wird eine Kante die im Verlauf des Algorithmus zu einem Spannbaum Mi neu hinzugefügt wurde nicht mehr ausgetauscht. Damit besteht Mf aus einigen Kanten die auch in M0 enthalten sind und aus Kanten, die durch die Tripel tr0 , tr1 , . . . , trf −1 eingefügt wurden. Sei nun GZ ein Subgraph von G bestehend aus den optimalen Steinerbäumen T (tr0 ), . . . , T (trf −1 ) und den kürzesten Pfaden, die den Kanten aus Mf ∩ M0 entsprechen. Für das 9 x z 1 1 v 1 y 2 2 y w w (b) DG (N ) 1 z 2 y w z 1 1 u 2 v 1 1 y w 2 (c) M0 x 1 y 2 2 1 2 1 z x 4 2 (a) Graph G x z 1 u 2 2 x w (d) M1 (e) TZ Abbildung 7: Beispiel für den 11/6-Approximationsalgorithmus Gewicht des minimalen Spannbaumes TZ von GZ gilt: X c(TZ ) ≤ c(Mf ) + (c(T (tri )) − (c(Bridgei (tri )) − 2 · gaini (tri ))) i = c(Mf ) + X gaini (tri ) i da in GZ für jedes Tripel tri ein optimaler Steinerbaum mit Gewicht c(T (tri )) anstatt der beiden Kanten aus Bridgei (tri ) mit c(Bridgei (tri )) − 2 · gaini (tri ) aus Mf verwendet wird. Insgesamt folgt X c(TZ ) ≤ c(Mf ) + gaini (tri ) i = (c(Mf ) + c(Mf ) + 2 · X gaini (tri ))/2 i = (c(Mf ) + c(M0 ))/2 wegen c(Mf ) = c(M0 ) − 2 · P i gaini (tri ). Aus dem Beweis für die Distance-Network-Heuristik im vorigen Abschnitt folgte bereits: Lemma 4.11 c(M0 ) ≤ 2 · c(T (N )) Definition 4.12 Eine volle Komponente eines Graphen G = (V, E, c) und einer Terminalmenge N ⊆ V ist ein Subgraph G0 von G der ein Baum ist und dessen Blätter genau die Terminale sind. 10 a c b e g d f i k l h j Abbildung 8: Zerlegung eines Steinerbaums in seine volle Komponenten Jeder Steinerbaum von G läßt sich als Vereinigung von vollen Komponenten darstellen. Ein Beispiel für eine Zerlegung eines Steinerbaumes in seine volle Komponenten ist in der Abb. 8 dargestellt. Definition 4.13 In einem 3-Steinerbaum hat jede volle Komponente höchstens drei Terminale. Ein optimaler 3-Steinerbaum T 3 (N ) für eine Terminalmenge N ist ein 3-Steinerbaum minimalen Gewichts. Lemma 4.14 c(Mf ) ≤ c(T 3 (N )) Beweis 4.15 Sei T 3 (N ) ein optimaler 3-Steinerbaum von G. Jede volle Komponente von T 3 (N ) hat entweder zwei oder drei Blätter. Seien nun T r die Tripel von Terminalen, die die vollen Komponenten mit drei Blättern aufspannen und P r die Paare von Terminalen, die die vollen Komponenten mit zwei Blättern aufspannen. Dann gilt X X c(T 3 (N )) = c(T (tr)) + c(T (pr)) tr∈T r pr∈P r Aus den vollen Komponenten von T 3 (N ) wird der Graph Ma auf folgende Weise konstruiert: Für jedes Paar pr = {x, y} ∈ P r wird die Kante {x, y} mit dem Gewicht c(T (pr)) in Ma eingefügt. Zusätzlich werden für jedes Tripel tr = {x, y, z} die Kanten {x, y} und {x, z} mit den Gewichten c(Bridgef (x, y)) und c(Bridgef (x, z)) dazugenommen. Der Graph Ma ist wegen der Konstruktion zusammenhängend und ein Baum mit |P r| + 2|T r| = |N | − 1 Kanten. Da in Mf kein Tripel mehr mit positivem gain existiert, ist c(Bridgef (tr)) ≤ c(T (tr)) mit tr ∈ T r. Damit gilt c(Ma ) ≤ c(T 3 (N )). Wird zu Mf eine Kante aus Ma , die nicht in Mf enthalten ist, hinzugefügt, so wird in Mf ein Kreis geschlossen. Sei nun {x, y} eine solche Kante. Ist {x, y} wegen eines Paares pr ∈ P r zu Ma hizugefügt worden, dann hat sie das Gewicht c(T (pr)). Dieses Gewicht ist identisch mit dem Gewicht der Kante {x, y} in DG (N ). Damit war die Kante {x, y} entweder nicht in M0 enthalten oder wurde im Verlauf des Algorithmus durch eine leichtere Kante ausgetauscht. Somit ist {x, y} die schwerste Kante in dem Kreis, den sie in Mf schließt. Ist {x, y} wegen eines Tripel tr ∈ T r zu Ma hizugefügt worden, dann ist diese offensichtlich die schwerste Kante in dem Kreis, den sie in Mf schließt. 11 Damit ist Mf ein minimaler Spannbaum von Mf ∪ Ma und es gilt c(Mf ) ≤ c(Ma ) ≤ c(T 3 (N )) . Lemma 4.16 c(T 3 (N )) ≤ 5/3 · c(T (N )) Beweis 4.17 Sei ohne Einschränkung der Allgemeinheit T (N ) vollständig binär und die Blätter genau die Terminale N. Genügt T (N ) nicht diesen Kriterien, kann durch Einfügen von Knoten und Kanten mit Gewicht 0 in G ein Graph erzeugt werden, dessen optimaler Steinerbaum das gleiche Gewicht wie T (N ) hat und den Kriterien genügt. Jedes innere Terminal wird durch einen zusätzlichen Knoten ersetzt, der über eine Nullkante mit dem ursprünglichen Terminal verbunden wird. Der zusätzliche Knoten wird zum Teminalknoten und der ursprüngliche Knoten ist dann kein Terminal mehr. Jeder innere Knoten, dessen Grad größer 3 ist, wird durch eine Folge von Knoten mit Grad 3 ersetzt. Dabei hat jede neu hinzugefügte Kante das Gewicht 0. Der Binärbaum ist dann 3-färbbar. Im folgenden wird für jede Farbe ein 3-Steinerbaum definiert und gezeigt, dass das Gewicht der drei 3-Steinerbäume insgesamt höchstens 5 · c(T (N )) ist. Somit hat dann einer der drei 3-Steinerbäume ein Gewicht von höchstens 5/3 · c(T (N )). Sei T (N ) so angeordnet, dass für jeden Knoten v der Pfad zu einem Blatt α(v) ganz rechts der kürzeste Pfad zu irgendeinem Blatt in seinem Subbaum ist. Die drei 3-Steinerbäume sollen nun nach folgenden Kriterien konstruiert werden. Sei {u, parent(u)} eine Kante mit einer der drei Farben gefärbt. • Falls u Nachfolger a, b und einen Nachbarn c hat, dann füge den optimalen Steinerbaum für das Tripel {α(a), α(b), α(c)} in den Steinerbaum mit der entsprechenden Farbe ein und bezeichne mit {a, b, c} den Kern des Tripels. • Falls u Nachfolger a, b und keinen Nachbar hat, u ist also die Wurzel, dann füge die Kante {α(a), α(b)} in den Steinerbaum mit der entsprechenden Farbe ein und bezeichne mit {a, b} den Kern des Paares. • Falls u einen Nachbarn c und keine Nachfolger hat, u ist also ein Terminalknoten, dann füge die Kante {u, c} in den Steinerbaum mit der entsprechenden Farbe ein und bezeichne mit {u, c} den Kern des Paares. Wegen der Konstruktionsart erhält man auf diese Weise für jede Farbe einen 3Steinerbaum. Das Gewicht dieser 3-Steinerbäume ergibt sich aus der Summe der Gewichte der optimalen Steinerbäume der Paare und Tripel, aus denen der 3Steinerbaum konstruiert wurde. Das Gewicht der optimalen Steinerbäume dieser Paare und Tripel kann durch das Gewicht des Subbaumes von T (N ), der von dem Paar bzw. Tripel aufgespannt wird, abgeschätzt werden. Im Folgenden wird das Gewicht des von dem Paar bzw. Tripel aufgespannten Subbaumes von T (N ) in zwei Komponenten aufgeteilt: • Das Gewicht des Subbaumes, welches von den Kernen der Paare bzw, Tripel aufgespannt wird. • Das Gewicht der Pfade von v nach α(v) für ein v aus den Kernen der Paare bzw, Tripel. Jede Kante in T (N ) gehört zu genau drei Bäumen: 12 • Als Kante, die ein Paar oder Tripel induziert. • Als Nachbar der induzierenden Kante. • Als Nachfolger der induzierenden Kante. Damit beträgt die Summe über die Gewichte der durch die Kerne aufgespannten Subbäumen genau 3 · c(T (N )). Nun müssen noch die Kosten des Pfades von v nach α(v) über alle Kerne summiert werden. Natürlich müssen nur die Knoten v berücksichtigt werden, die keine Terminale sind. Jeder dieser Knoten v ist in höchstens zwei durch Kerne aufgespannten Subbäumen enthalten. Der eine Kern ist dabei durch die Kante induziert, die den Nachbar von v mit dem Vorgänger von v verbindet. Der andere Kern wird durch die Kante induziert, die den Vorgänger von v mit dem Vorvorgänger von v verbindet. Es folgt, dass die Summe über alle Knoten v durch die doppelten Kosten des Pfades von v nach α(v) begrenzt ist. Sei nun β(v) das Blatt, dass von v aus durch einmal rechts und dann immer links Gehen erreicht wird. Der Pfad v −→ β(v) ist mindestens so lang wie der Pfad v −→ α(v), und die vorigen Pfade sind disjunkt. Damit ist die Summe ihrer Längen durch c(T (N )) beschränkt. Insgesamt ist dann die Summe über die Gewichte der drei 3-Steinerbäume höchstens 5 · c(T (N )). Lemma 4.18 c(Mf ) ≤ 5/3 · c(T (N )) Beweis 4.19 Wegen der beiden vorherigen Lemmata. Theorem 4.20 Der Algorithmus von Zelikovsky berechnet für einen zusammenhängenden und gewichteten Graphen G = (V, E, c) und eine Terminalmenge N ⊆ V einen Steinerbaum TZ für N in G mit Approximationsgüte 11/6. Beweis 4.21 Aus den Lemmata 4.9, 4.11 und 4.18 folgt dann: c(TZ ) ≤ (c(Mf ) + c(M0 ))/2 ≤ (2 + 5/3) · c(T (N ))/2 = 11/6 · c(T (N )) 13 Literatur [1] D.-Z. Du, Y.-J. Zhang, and Q. Feng. On better heuristic for euclidean steiner minimum trees (extended abstract). In Proceedings of the 32nd Annual IEEE Symposium on Foundations of Computer Science, pages 431–439, 1991. [2] R. M. Karp. Reducibility among combinatorial problems. In R. E. Miller and J. W. Thatcher, editors, Complexity of Computer Computations, pages 85–103. Plenum Press, 1972. [3] L. Kou, K. Markowsky, and L. Berman. A fast algorithm for steiner tree. In Acta Informatica, pages 141–145, 1981. [4] R. Ravi. Lecture notes on approximation algorithms for network problems. GSIA, Carnegie Mellon University, Pittsburgh, USA. [5] V. V. Vazirani. Approximation Algorithms. Springer, March 2004. [6] A. Zelikovsky. An 11/6-approximation algorithm for the network steiner problem. Algorithmica, 9(5):463–470, 1993. 14