Steiner

Werbung
Steinerbäume
Seminarausarbeitung
Hochschule Aalen
Fakultät für Elektronik und Informatik
Studiengang Informatik
Schwerpunkt Software Engineering
Verfasser
Flamur Kastrati
Betreuer
Prof. Dr. habil. Thomas Thierauf
1
Zusammenfassung
Das Steinerbaumproblem ist ein Problem in der Mathematik, speziell in der Graphentheorie, welches sich mit dem kürzesten Pfad in einem Graphen beschäftigt. Das
Problem ist eine Verallgemeinerung des minimalen Spannbaums, mit der Besonderheit,
das man zusätzliche Knoten, auch Steinerpunkte genannt, zur eigentlichen Knotenmenge und Kanten zur Kantenmenge hinzufügen kann, um die Gesamtlänge der Pfade
zusätzlich zu verkürzen.
1
Einleitung
Ein altes, dennoch bis in unsere Zeit reichendes mathematisches Problem, wird seit Jahrhunderten von vielen Mathematikern aufs Neue entdeckt und definiert. Das sogenannte
Steinerbaumproblem“, welches nach dem Schweizer Mathematiker Jacob Steiner benannt
”
wurde. Das Problem beschreibt einen Graphen mit einer Menge von Punkten P1 , . . . , Pn ,
die so zusammenhängen, dass
(i ) jeder Knoten, mit jedem beliebigen anderen Knoten über eine oder mehreren Kanten
verbunden ist und
(ii ) die Gesamtlänge aller Kanten (gemessen mit Bedacht auf einigen vordefinierten Kostenfunktionen) minimal ist.
Die genannten Bedingungen erinnern an den minimalen Spannbaum, und tatsächlich ist der
Steinerbaum eine Verallgemeinerung dessen.
Genau so, wie der minimale Spannbaum verbreitet ist, besitzt auch der Steinerbaum in vielen
Bereichen seine Wichtigkeit. Wie zum Beispiel in der Elektrotechnik, wo man sich optimale
Positionen von Transistoren auf einem integrierten Schaltkreis berechnen lassen kann. Das
Steinerbaumproblem klingt sehr simpel, ist jedoch nicht umsonst ein seit Jahrhunderten
bekanntes Problem.
In dieser Ausarbeitung wird hauptsächlich auf das Steinerbaumproblem näher eingegangen. Die allgemeine Beschreibung und einen Algorithmus zum Steinerbaum. Zusätzlich der
Beweis, dass das Problem ein schwieriges ist und eine Approximation zum Problem. Alle
Informationen zu dieser Ausarbeitung wurden aus dem Buch [PDHJP02] entnommen.
2
Steinerbäume
Bevor wir zum Theorem des Steinerbaumproblems kommen, müssen noch einige kleine Dinge geklärt werden. Man darf hier nicht vergessen, dass das Steinerbaumproblem ein anderes
Problem ist, als das des minimalen Spannbaums. Der Steinerbaum besitzt zu der normal gegebenen endlichen Knotenmenge (den Terminalen) noch eine endliche Anzahl freier Knoten
(den Steinerpunkten oder auch Nicht-Terminalen). Diese Nicht-Terminalen Punkte werden
dazu eingesetzt, die Gesamtlänge des Steinerbaums zusätzlich zu minimieren. Es gibt zwei
verschieden Arten des Steinerbaumproblems. Bei dem einen sind verschiedene Steinerpunkte
bereits gegeben und bei dem anderen kann man die Steinerpunkte frei Wählen. In dieser
Ausarbeitung werden wir uns lediglich der ersteren Variante mit den bereits gegebenen
Nicht-Terminalen zuwenden.
Dann gibt es da noch folgende Lemmata. Die Lemmata werden in dieser Ausarbeitung
nicht bewiesen, da sie bereits in den Vorlesungen ausführlich besprochen wurden. Dies dient
als Hilfestellung zum eigentlichen Steinerbaum Theorem.
2
1. Lemma 2.1 (a) Sei G = (V, E) ein Wald mit n Knoten und mit c ≥ 1 Komponenten,
dann ist |E| = n − c
2. Korollar 2.2 (a) Jeder Baum T mit n Knoten, besitzt genau n − 1 Kanten.
3. Korollar 2.3 (b) Jeder Baum T hat mindesten 2 Blätter.
4. Lemma 2.4 (b) Graph G = (V, E) ist genau dann ein zusammenhängender Graph,
wenn es einen Spannbaum enthält.
2.1
Theorem
Theorem 2.5 Sei G = (V, E) mit einer Anzahl n Knoten und mit folgenden Behauptungen
gegeben:
(i ) G ist ein Baum.
(ii ) Für jedes Paar x, y ∈ V und x6=y besitzt G exakt einen Pfad von x nach y.
(iii ) G ist minimal Zusammenhängend.
(d.h., G ist Zusammenhängend und für alle {x, y} ∈ E gilt:
G − {x, y} ist nicht zusammenhängend)
(iv ) G ist maximal azyklisch.
(d.h., G ist azyklisch und für alle {x, y} ∈
/ E gilt:
G + {x, y} ist zyklisch)
(v ) G ist azyklisch und |E| = n − 1
(vi ) G ist zusammenhängend und |E| = n − 1
Beweis: Sei G ein Baum, x, y ∈ V und x6=y. Da G ein zusammenhängender Baum ist,
gibt es mindestens einen Weg von x nach y. G ist zudem azyklisch und jedes Paar Knoten
sind über mindestens einem Weg verbunden. Dies zeigt, dass (i) ⇒ (ii). Die Implikationen
(ii) ⇒ (iii) und (iii) ⇒ (iv) sind selbstverständlich. (iv) ⇒ (v) und (v) ⇒ (vi) stimmen
durch Lemma (a) und (vi) ⇒ (i) ist auch wahr, da wir durch Lemma (b) wissen, dass jeder
zusammenhängende Graph einen Spannbaum enthält. |E(T )| = n − 1 wird durch Korollar
(a) abgedeckt.
Dieses Wissen würde ausreichen, um einen minimalen Spannbaum zu beschreiben. Aber
wie wäre es, wenn wir das Problem etwas interessanter gestalten.
Nehmen wir an, es gibt eine Teilmenge K⊆V aus einem zusammenhängenden Graphen
G = (V, E). Mit dieser Teilmenge K (möglicherweise aber auch mit einigen zusätzliche
Knoten), suchen wir einen Teilgraphen von G, der ebenfalls zusammenhängend ist und eine
möglichst minimale Anzahl an Kanten besitzt. Durch Lemma 2 und 4 können wir aber bereits
sagen, dass jeder Teilgraph (zusammenhängend) nicht mehr als |V | − 1 Kanten haben darf
und somit minimal ist. Außerdem können wir auch festhalten, dass alle Blätter Elemente
aus der Menge K sein müssen.
3
2.2
Definition
Die bisher gesammelten Informationen führen zu folgender Definition:
Ein Teilgraph T von G wird Steinerbaum für K genannt, wenn T ein Baum ist und alle Knoten aus K besitzt (d.h., K⊆V (T )) und alle Blätter aus T Elemente in K sind. Die Knoten
K werden auch Terminale von T genannt, wohingegen V (T )\K Steinerpunkte (oder auch
Nichtterminale) genannt werden. Ein minimaler Steinerbaum für K in G ist ein Steinerbaum T mit minimaler Anzahl Kanten. Jetzt können wir, den Steinerbaumproblem einen
passenden Namen geben:
Minimum Steiner Problem in Graphs
Geg.: Ein zusammenhängender Graph G = (V, E) und eine Menge T ⊆V aus Terminalen.
Ges.: Einen minimalen Steinerbaum für K in G. Sprich, einen Steinerbaum T für K mit
|E(T )| = min{ |E(T 0 )| | T 0 ist ein Steinerbaum für K in G }
Dieses Problem sieht zunächst einfach aus, ist aber aus Sicht eines Algorithmus ein nicht
triviales und in vielen Aspekten herausforderndes. Von der praktischen Seite aus ist es oft
erwünscht eine komplexere Version des Problems zu analysieren.
Ein Gewichteter Graph N = (V, E, l), bestehend aus G = (V, E) und l : E(G)→R≥0 ,
welches eine Funktion ist, die jeder Kante einen positiven Wert anrechnet. Dieser Wert kann
als Länge, Gewicht oder anderes betrachtet werden. Die Länge eines Teilgraphen H von G
lässt sich also wie folgt berechnen:
P
l(H) = e∈E(H) l(e) (die Summe aller Kantenwerte)
Ist der Graph ein ungerichteter Graph, wird die Gesamtsumme aller Kanten gleich deren
Anzahl gesetzt (wird auch die Länge von H genannt, gekennzeichnet |H|). Man kann sich
hier vorstellen, dass man jeder Kante den Wert 1 zugeschrieben hat. Für zwei Knoten v
und w, kennzeichnen wir mit P (v, w) die Länge des kürzesten Pfades von v nach w. Mit
diesem Wissen, können wir eine Definition dieser Version des Steinerbaumproblems erstellen.
Minimum Steiner Problem in Networks / Weighted Graph
Geg.: Ein Gewichteter Graph N = (V, E, l) und eine Menge T ⊆V aus Terminalen. Ges.:
Einen minimalen Steinerbaum für K in N . Sprich, einen Steinerbaum T für K mit
l(T ) = min{ l(T 0 ) | T 0 ist ein Steinerbaum für K in N }
2.3
Komplexität
Es wurde des Öfteren gesagt, dass das Steinerbaumproblem ein schwieriges Problem sei. Und
tatsächlich liegt das Steinerbaumproblem in der Komplexitätsklasse der NP-Vollständigen
Probleme. Der Beweis dazu wird durch eine Reduktion von 3Sat auf Minimum Steiner
Problem in Graphs (Spg) erbracht.
Theorem 2.6 Das Steinerbaumproblem ist NP-Vollständig.
Beweis: Die Vollstaendigkeit erhaelt man durch eine Reduktion vom 3Sat auf Spg. Zunächst
suchen wir einen Graphen G = (V, E) mit einer Menge Terminalen K und einer Schranke B,
so dass G den Steinerbaum T nach K enthält und die Schranke B nicht überschreitet. Eine
weitere Bedingung ist, dass der Graph G nur genau dann konstruiert werden kann, wenn es
4
ein 3Sat Konstrukt gibt, welches erfüllbar ist. Startpunkt ist eine Formel F (x1 , . . . , xn ) =
C1 ∧ C2 ∧ · · · ∧ Cm . Daraus wird eine beliebige Instanz für 3Sat mit Variablen x1 , . . . , xn
und Klauseln C1 , . . . , Cm konstruiert.
Der Graph G wird wie folgt konstruiert. Zuerst, verbinden wir die Knoten u und v mit
einem variablen Pfad, gezeigt in Abbildung 2.1.
x1
xj
x2
xn−1
xn
u
v
x1
xj
x2
xn−1
xn
Abbildung 2.1: Transformation von 3Sat auf Spg: Der Variablen Pfad
Als nächstes kreieren wir für jede Klausel Ci einen Knoten mit Verbindungen zu den
einzelnen Literalen, die zu der jeweiligen Klausel gehören. Die Pfadlänge beträgt t = 2n + 1.
Als Terminale Menge wählen wir K = {u, v}∪{C1 , . . . , Cm } und setzten B auf B = 2n+t·m.
Ci
x1
x2
xj
xn−1
xn
u
v
x1
x2
xj
xn−1
xn
Abbildung 2.2: Klausel Ci = x2 ∨xj ∨xn . Die Gestrichelte Linie zeigen auf die einzelnen Literale
der Klausel Ci mit einer Pfadlänge t = 2n + 1
Nehmen wir an, die 3Sat Instanz wäre Erfüllbar. Um einen Steinerbaum nach K zu
konstruieren, starten wir zunächst mit dem Pfad von u nach v, welches eine erfüllende Belegung P darstellt. Das heißt, dass wir xi ∈P haben, wenn xi wahr ist und xi ∈P , wenn nicht
wahr. Weiterhin müssen wir beachten, dass für jede Klausel, dessen Knoten Ci über einen
Pfad der Länge t mit P verbunden ist. Somit erhalten wie einen Steinerbaum nach K mit
einer Gesamtlänge von 2n + t·m = B
Gehen wir nun einen Schritt weiter. Sei T ein Steinerbaum nach K mit einer Gesamtlänge
von nicht mehr als B. Trivialerweise ist jeder Klausel-Knoten Ci mit dem variierbaren Pfad
verbunden. Gehen wir für einen Moment davon aus, dass es eine Klausel Ci0 gibt, die
auf mindestens zwei Wegen mit dem variierbaren Pfad verbunden ist. Somit hätten wir
5
|E(T )| ≥ (m + 1) · t > B, und das dürfte nicht sein. Dies zeigt uns, dass u und v nur auf dem
variierbaren Pfad verbunden werden können, welches mindestens 2n Kanten voraussetzt. Da
jede Klausel mindestens t Kanten braucht, um Ci mit dem variierbaren Pfad zu verbinden,
schließen wir daraus, dass der Pfad u nach v exakt 2n Kanten besitzt und, dass jede Klausel
exakt t Kanten benutzen muss, um mit diesem Pfad verbunden zu sein. Somit gibt der Pfad
von u nach v eine erfüllbare Belegung wieder.
Die Beobachtung, dass diese Konstruktion leicht in polynomieller Zeit erhalten werden
kann, erschließt den Beweis des Theorems.
3
Approximationsalgorithmus
In diesem Kapitel werden wir einen simplen Approximationsalgorithmus vorstellen, der
auf einer Minimum Spanning Tree Berechnung aufbaut. Der Algorithmus ist eine 2Approximation.
Um die Notation zu verkürzen, werden wir folgende Schreibweisen in diesem Kapitel benutzen. N = (V, E, l; K) steht für ein Steinerproblem in einem zusammenhängenden gewichteten Graphen mit positiven Längenfunktion l ≥ 0 und einer Menge Terminalen K. Jedes
Steinerproblem N = (V, E, l; K) verbinden wir mit einem complete distance network (CDN )
ND = (K, ED , lD ). Ein CDN ist kurz gesagt ein Graph, aufbauend auf der Menge Terminalen K, worin jede Kante die Länge des kürzesten Pfades der korrespondierenden zwei
Terminalen besitzt. Das Steinerproblem N und der CDN werden wie folgt miteinander assoziiert. Die Knotenmenge
des ND ist gleich der Menge Terminalen K, die Kantenmenge
h i
K
ist mit ED = 2 gegeben und die Längenfunktion lD fügt zu jeder Kante {x, y}∈ED die
Länge des kürzesten Pfades von x nach y in N ein. Zusätzlich kürzen wir die Länge eines
minimalen Steinerbaums in N mit Knoten aus der Menge Terminalen K mit smt(N) ab.
3.1
Simpler Algorithmus
Die ausschlaggebende Idee vom folgenden Lemma dieses Algorithmus ist, dass wir die Länge
eines minimalen Spannbaums in einem gewichteten Graphen mit der Länge eines minimalen Steinerbaums im korrespondierenden CDN relativieren. Sprich, wir erzeugen uns einen
minimalen Spannbaum und benutzen die erzeugten Pfade als Wegweiser für den minimalen
Steinerbaum.
Lemma 3.1 Sei N = (V, E, k; K) ein Steinerproblem, dann erfüllt jeder minimale Spannbaum T im CDN ND die Ungleichung
lD (T ) ≤ 2 −
2
k
· smt(N ).
k = |K| bezeichnet die Kardinalität der Menge Terminalen.
Beweis: Sei Sopt ein beliebiger minimaler Steinerbaum in N . Stellen wir uns nun Sopt als
zweidimensionalen planaren Graphen vor, und dass wir einen Weg W am Rand der Kanten
entlang haben. Auf diesem Weg W besuchen wir jeden Terminal genau ein und jede Kante
zwei mal. Die Gesamtlänge ist dementsprechend genau doppelt so lang, wie die Länge von
Sopt .
Sei t die Anzahl der Blätter in Sopt . Dann besitzt Weg W t ≤ k Pfade zwischen den
aufeinanderfolgenden Blättern in Sopt . Nun entfernen wir den längsten Pfad in W . Dieser
6
5
3
2
4
6
8
1
7
Abbildung 3.3: Illustriert den Beweis von Lemma 3.1. Der Weg W besteht aus den Pfaden 1-2,
2-3, ..., 7-8 und 8-1. Um den Weg W 0 zu erhalten, entfernen wir den Weg von 7 nach 8.
Pfad wäre aus dem Beispiel in der Abbildung 3.3 der Pfad 7 nach 8. Die Länge des übrig
bleibenden Weges W 0 beträgt jetzt nicht mehr als das (1 − 1t )-fache des Weges W . Jetzt
sieht man, dass wenn man den Weg W 0 folgt, man ganz einfach einen Spannbaum (und
sogar einen Pfad) mit einer maximalen Länge von W 0 in ND aufziehen kann. Durch diese
Beobachtung können wir nun den Beweis von Lemma 3.1 schlussfolgern.
Beispiel 3.2 Gewichteter Graph N = (V, E, k; K) mit
v1
2−e
2−e
v2
V = {v0 , v1 , . . . , vk },
vk
1
1
1
2−e
2−e
1
v0
v3
K = V \{v0 },
E = {{vi , vi+1 } | 1 ≤ i ≤ k}
1
vk−1
1
2−e
l(e) =
v4
∪ {{vk , v1 }} ∪ {{v0 , vi } | 1 ≤ i ≤ k},
(
1
, if v0 ∈ e
2 − e, sonst
zeigt, dass Schranke aus Lemma 3.1 die Bestmögliche ist.
Aus den Vorlesungen wissen wir, dass der minimale Spannbaum leicht zu berechnen ist.
Eine kurze Wiederholung: Ein minimaler Spannbaum ist ein Spannbaum mit minimaler Gesamtlänge der Summe der Kanten. Ein minimaler Steinerbaum ist dann minimal, wenn die
Summe aller Kanten zwischen den Terminalen minimal ist. In Lemma 3.1 sahen wir auch,
dass die Länge des minimalen Spannbaums aus einem complete distance network (kurz: cdn)
für eine 2-Approximation des minimalen Steinerbaums sorgt.
Genau genommen kann man den minimalen Spannbaum dafür benutzen, einen Steinerbaum zu erzeugen, dessen Länge nicht die doppelte Länge des minimalen Steinerbaums
überschreitet.
7
Algorithmus 3.3 (MST-Algorithm)
Input: Gewichteter Graph N = (V, E, l; K).
Output: Steinerbaum SK für N .
(1) Berechne den complete distance network ND = (K, ED , lD ).
(2) Berechne einen minimalen Spannbaum TD in ND .
(3) Wandle TD in einen gewichteten Teilgraphen N [TD ] um, indem jede Kante aus TD
durch den Korrespondierenden kürzesten Pfad ersetzt wird.
(4) Berechne einen minimalen Spannbaum T für N [TD ].
(5) Wandle T in einen Steinerbaum SK für N um, indem nacheinander jeder Blattknoten
entfernt wird, der kein Terminal ist.
Das Abbild 3.4 zeigt die verschiedenen Schritte des Algorithmus. Man sollte dort auch sehen,
wieso die Schritte (4) und (5) unabdingbar sind.
Theorem 3.2 Sei N = (V, E, l; K) ein gewichteter Graph. Dann berechnet der MSTAlgorithm in polynomieller Zeit einen Steinerbaum SK 4 für N aus, so dass
l(SK ) ≤ 2 − k2 · smt(N ).
Beweis: Lemma 3.1 zufolge ist lD (T ) ≤ 2 −
2
k
· smt(N ).Somit haben die aufeinanderfol-
genden Schritte (3), (4) und (5) die Eigenschaften l(TD ) geql(T ) ≥ l(SK ).
4
4
4
4
4
4
4
N = (V, E, l ≡ 1; K)
(3) N [TD ]
4
4
(1): ND = (K, ED , lD )
(4): T
(2): TD
(5): SK
Abbildung 3.4: Illustriert die einzelnen Schritte des MST-Algorithm
Eine direkte Analyse des MST-Algorithm zeigt, dass der am meisten Zeit brauchende
Teil des Algorithmus, die Berechnung des CDN ND ist. Dieser gewichtete Graph wird durch
einen k kürzesten Wege Algorithmus mit Laufzeit O(n log n + m) berechnet.
8
Literatur
[PDHJP02] Prof. Dr. Angelika Steger Prof. Dr. Hans Juergen Prömel. The Steiner Tree
Problem, A Tour through Graphs, Algorithms, and Complexity. Friedr. Vieweg
& Sohn Verlagsgesellschaft mbH, 1st edition, 2002.
Herunterladen