pps/Animation - Chair 11: ALGORITHM ENGINEERING

Werbung
Steiner Bäume
Dipl.-Math. Maria Kandyba
Lehrstuhl für Algorithm Engineering, LS11
12 VO
15. Januar 2007
Überblick

Einführung



Definition und Motivation
Komplexität
Approximationsalgorithmen


Distanznetzwerk Heuristik
Primal-Dualer Algorithmus
Steinerbaum
Ungerichteter G=(V,E), Terminalknoten NV.
Kantengewichte c: E → ℝ+
Ein Steiner Baum TG(N)=(V‘,E‘) von G ist:
 Baum mit V‘V, E‘E
 NV‘
2
Gewicht von Steinerbaum:
1
4
c(TG(N))=e∈E‘ c(e)
5
Steinerbaum Problem:
Finde den Steinerbaum
TG*(N)
vom minimalen Gewicht
5
3
1
1
1
2
2
2
2
3
Geschichte & verschiedene Varianten
Pierre de Fermat (1601–1665)
Frage: Gegeben 3 Punkte in der Ebene,
finde den vierten, so dass die die Summe
der Distanzen zu den anderen drei ist
minimal.  Gelöst von Toricelli vor 1640
(Toricellipunkt)
Verallgemeinerung auf n Knoten (unter anderem):
Jacob Steiner
(1796–1863)
Varianten & Anwendung
Varianten:
 Geometrisches SBP
 euklidisch
 rektilinear
 SBP in Netzwerken
Anwendungen:
 VLSI-Design
 Netzwerk Design
Komplexität

Steinerbaum Problem ist NP-hart auch wenn
c(e)=1 für alle e∈E

Polynomielle Spezialfälle


|N|=2  Lösung ist der kürzester Weg
zwischen den Kundenknoten (Dijkstra)
N=V  Lösung ist minimal spannender Baum
(Kruskal oder Prim)
Algorithmen für Steiner Baum
Problem
Algorithmen (Auswahl):
 Approximationsalgorithmen




Distanznetzwerk Heuristik
Approximation von Zelikovski (1993)
Primal-Duale Approximation (Goemann,
Williamson 1995)
Exakte Verfahren


Dynamische Programmierung (Dreyfus &
Wagner 1971)
Branch & Cut (exponentiell, gut in Praxis)
Literatur:



J. Cheriyan, R. Ravi: Approximation algorithms
for network problems. Lecture Notes, 1998.
(citeseer.ist.psu.edu/cheriyan98approximation.ht
ml)
V. Vazirani: Approximation Algorithms. Springer
Verlag 2003
D. S. Hochbaum (Hrsg.): Approximation
Algorithms for NP-hard Problems. PWS Publishing
Company 1997
Distanznetzwerk
Distanznetzwerk DG(W)=(W, ED, cD) von G=(V,E):
 W V
 ED={(u,v)| u,v ∈ W}
 Kantengewichte cD(u,v)=Länge des kürzesten
Pfades von u nach v in G
Eigenschaften von DG(W):
 Distanzgraph ist vollständig
 Für (u,v)∈ED: (u,v)∈E  cD(u,v) ≤ c(u,v)
 cD erfüllt Dreiecksungleichung
Distanznetzwerk Heuristik (DNH)

Berechne Distanznetzwerk DG(N)

Berechne minimal spannenden Baum (MST)
TD(N) in DG(N)


Transformiere TD(N) ⊆ DG(N) in ein G‘⊆G:
ersetze jede (u,v)∈TD(N) durch einen kürzesten
(u,v)-Pfad in G. G‘ ist i.A. kein Baum
Berechne MST TDNH auf G‘
Beispiel
5
d
3
e
1
a
1
1
2
2
a
2
3
5
4
h
2
c
g
g
1
4
b
5
2
b
5
f
2
b
d
1
3
e
1
a
5
g
Theorem: Güte von DNH
Für jede Instanz des Steinerbaum Problems (G,N,c)
gilt für die Lösung TDNH der Distanzwerkheuristik
c(TDNH) ≤(2-2/|N|)c(TG*(N)).
Beweisskizze:
z1
z2
z3
Betrachte TG*(N):
• Verdoppele die Kanten
• Finde eine Eulertour L
z4
• Nummeriere v∈N
auf L in der Ablaufreihenfolge:
z1,…,z|N|,z|N|+1, wobei z|N|+1=z1
Beweisskizze:
c(L)=2c(TG(N)) (*)
  i, s.d. L(zi,zi+1) mit
c(L(zi,zi+1)) ≥ c(L)/|N| (**)
o.B.d.A i=|N|
 Betrachte
L‘=L \ L(z|N|,z|N|+1)

z1
z4
z2
z3
Wegen (*) und (**) gilt c(L‘)≤(2-2/|N|)c(TN(G))
 Zeige: c(TDNH) ≤ c(L‘):
Kanten (zi,zi+1) mit cD(zi,zi+1) ≤ c(L‘(zi,zi+1)) für
1≤ i ≤|N|-1 formen spannenden Baum T in DG(N)
c(TDNH) ≤ c(T) ≤c(L‘) ≤(2-2/|N|)c(TN(G))

Laufzeit von DNH


O(|N|·(|E|+|V|log|V|))
Variante von Mehlhorn (1988)
 Besitzt denselben Approximationsfaktor
 Benötigt O(|E|+|V|log|V|)
Siehe:
K. Mehlhorn, A faster approximation algorithm
for the Steiner problem in Graphs, Information
Processin Letters 27(3) (1988), pp. 573-577
Formulierung als Lineares Programm


Lösung des Steinerbaum Problems
ist eine Kantenmenge FE
In einem Steinerbaum T=(V(F),F) muss gelten:
 N  V(F)
 T zshgd: Für u,v∈N muss mind. ein Pfad von u
nach v existieren.
S  V, SNN
muss also gelten:
|F  (S)| ≥1
ILP mit Hilfe von Schnittungleichungen
Kantenvariablen
xe=1, falls e∈F
xe=0, sonst
min e∈Ecexe
e∈(S)xe≥1 S: SNN
xe ∈{0,1} e∈E
Alternative Schreibweise für die
Schnittungleichungen:
e∈(S)xe≥f(S) S V
wobei hier f(S)= 1 S: SNN und f(S)=0 sonst
Primal-Dualer Algorithmus
Früher:
primal-dualer Algorithmus für das polynonielle
Problem MWPM in bipartiten Graphen
Eigenschaft des Algorithmus: Primaler und Dualer
komplementärer Schlupf erfüllt.
Goemann-Williamson (GW)-Algorithmus:
primal-dual als Approximation für
das NP-harte Steinerbaum Problem.
Nur primaler Schlupf wird gefordert.
LP-Relaxierung und das Duale
Primal:
Dual:
min e∈Ecexe
max SVyS
e∈(S)xe≥1 S: SNN S:e∈(S) yS ≤ ce e∈E
yS≥0 SV
xe≥0 e∈E
Satz von komplementärem Schlupf:
Primal:
xe  0
Dual:
yS  0
 S:e∈(S) yS = ce
 e∈(S)xe=1
Idee der Vorgehensweise




Starte mit einer zulässigen dualen Lösung
Konstruiere daraus eine primale, die primalen
komplementären Schlupf erfüllt.
Diese primale Lösung nicht unbedingt zulässig 
Wenn nicht, gibt eine Möglichkeit die duale
Lösung zu verbessern.
Sobald primale Lösung zulässig  STOP
Konkreter
Lösung x von (P) induziert eine Kantenmenge F⊆E
Gesucht: F*⊆E s.d. G‘=(V(F*), F*) Steinerbaum
Zulässige Lösung von (D) liefert:
F = { e∈E | S:e∈(S) yS = ce }
F unzulässig   (ggf. mehrere) S‘ mit |(S‘)F|=0
und f(S‘)=1, also Schnittungleichung verletzt
Idee: Solange F unzulässig:
 Erhöhe gleichzeitig und zulässig alle yS‘ um >0,
s.d. für eine Kante e∈E\F die duale Ungleichung
mit „=“ erfüllt ist
 Augmentiere F=F{e}
Details
Frage: Wie findet man die von aktuellem F verletzte
Mengen S?
Betrachte: G‘=(V, F)
Zshgskomponenten von G‘:
C1, …,Cn
Ci heißt aktive Menge, falls
CiNN (f(Ci)=1)
Ci liefert also einen
verletzten Schnitt
Bemerkung: Keine echte Teilmenge von Ci verletzt
die Schnittbedingungen
Postprocessing
Nach den Iterationen:
 F zulässig für (P)
 F kann enhält u.U. redundante Kanten
 Finde redundante Kanten (Kanten, die den
Zusammenhang zersören würden) und entferne
sie
Beispiel:
1 1
3
1
1
1
Zusammenfassung: GW-Algorithmus



Start: yS=0  F= ={{v}: v∈V}
Für alle v∈V d(v):=0
While  C∈ aktiv





Für jede e=(v,w), wobei v∈C(v), w∈C(w), C(v)C(w)
berechne (v,w):
(v,w) = (c(v,w)-d(v)-d(w))/2 , falls C(v) und C(w)
aktiv
(v,w) = (c(v,w)-d(v)-d(w)) , falls nur C(v) oder nur
C(w) aktiv
Wähle e*=(i,j) mit minimalem =(i,j)
Für alle Knoten der aktiven Komponenten d(v):=d(v)+ 
F:=F{e*}, :=\{C(i),C(j)}{C(i)C(j)}
Postprocessing
Wie gut ist die Lösung?
Die endgültige Lösung x (F‘E) und die
zugehörige duale Lösung y erfüllen primale
Optimalitätsbedingung. Die entsprechende duale:
yS  0  e(S)xe=1 ist nicht erfüllt.
Da y aber zulässig, gilt:
yS  0  |F‘(S)| ≥ 1
Kann man |F‘(S)| nach oben abschätzen und
dadurch eine Approximationsgüte ableiten?
Lemma: Güte des Algorithmus GW
Für jede Instanz des
Steinerbaum Problems (G,N,c) gilt für die
Lösung TGW=(V(F‘),F‘) des primal-dualen
Algorithmus c(TGW) ≤ 2c(TG*(N)).
Beweis:
Zeige: e∈F‘ ce ≤ 2 sVys ≤ 2c(TG*(N))
1)
2sVys ≤ 2c(TG*(N)) gilt wegen der schwachen
Dualität. Zulässige duale Lösung ist untere
Schranke für das primale Optimum.
Beweis der Güte
2) zeige e∈F‘ce ≤ 2 SVyS
Primaler Schlupf ist für alle e∈F‘ erfüllt
e∈F‘ ce = e∈F‘S:e∈(S) yS
= SV e ∈ (S)F‘ yS
= SV |(S)  F‘|·yS
Also z. zg. SV |(S)  F‘|·yS ≤ 2SVyS
Induktion über die Anzahl der Iterationen.
Anfang: alle yS=0, also erfüllt.
Beweis der Güte
SV |(S)  F‘|·yS ≤ 2SVyS
Sei A = # aktiver Mengen
Betrachte eine Iteration des Algorithmus
Für alle aktiven S erhöhe: yS+
l.S. erhöht sich um: · S aktiv |(S)F‘|
r.S. erhöht sich um: 2··A
zeige: ·S aktiv |(S)F‘| ≤ 2··A
zeige: S aktiv |(S)F‘| ≤ 2A
Beweis der Güte:
Also zu zeigen:
die durchschnittliche
Anzahl der
Lösungskanten im
Schnitt einer aktiven
Menge ist höchstens 2
 Wir konstruieren einen Graphen H aus TGW:
Die Knoten, die in dieser Iteration in einer
Zusammenhangskomponente liegen, zu einem
Knoten verschmelzen.
H ist ein Baum  Durchschnittlicher Grad aller
Knoten ist kleiner als 2.
Diverses
Laufzeit:
O(|V|2 log|V|) mit Union-Find
 Beweis in der Übung
Spezialfälle (zum Nachdenken…):
GW-Algorithmus funktioniert wie…
 N=V: Kruskal
 |N|=2: Bidirektionaler Dijkstra-Algorithmus
Verwandte Probleme

Prize-Collecting Steinerbaum


Steinerwald


Knoten aus N nur anbinden wenn „rentabel“
genug (Gewichte auch für Knoten)
Mehrere Mengen N1,…,Np. Knoten aus
derselben Menge müssen verbunden sein. Die
anderen dürfen.
Diverse Netzwerkdesign Probleme

z.B. Knoten aus N zweizusammenhängend
anbinden, etc.
Herunterladen