Ausarbeitung - Mathematik

Werbung
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
Herunterladen