Algorithmische Graphentheorie

Werbung
1
Algorithmische Graphentheorie
Sommersemester 2015
6. Vorlesung
Wurzelspannbäume
Dr. Joachim Spoerhase
Prof. Dr. Alexander Wolff
2
Wiederholung letzte Vorlesung
Berechnung kostenminimaler Matchings in bipartiten Graphen.
Wir stellen ein ganzzahliges lineares Programm (ILP) auf
(mit einer Variable xe ∈ {0, 1} für jede Kante e ).
Betrachte die Relaxierung (xe ≥ 0). Dies ist ein LP!
Wir können es also (im Ggs. zum ILP) effizient lösen.
F
Pür LP-LösungPx und ILP-Lösung y gilt:
e ∈ E c e xe ≤
e ∈E ce ye , d.h. x ist nicht teurer als y.
Leider enthält x i.A. fraktionale Variable
(e ∈ E mit 0 < xe < 1).
Jeder Knoten ist zu 0 oder ≥ 2 fraktionalen Kanten inzident.
⇒ Falls x 6∈ {0, 1}|E | , so gibt es einen fraktionalen Kreis K .
Da Graph bipartit, hat K gerade Länge, d.h. K = M1 ∪ M2 .
⇒ K lässt sich in zwei Matchings M1 und M2 zerlegen.
3
Forts. Wiederholung
P
OBdA. c (M1 ) > c (M2 ) = e ∈M2 ce . Sei ε = mine ∈M1 xe .
Für e ∈ M1 : setze xe0 = xe − ε.
Für e ∈ M2 : setze xe0 = xe + ε.
Für e ∈ E \ K : setze xe0 = xe .
⇒ x0 ist zulässige LP-Lösung und nicht teurer als x.
Mindestens eine Kante e in M1 hat xe = ε und xe0 = 0.
D.h. x0 hat mehr ganzzahlige Variable als x.
Wiederhole die Suche nach franktionalen Kreisen.
Runde wie oben, bis alle Variable ganzzahlig sind.
Die resultierende ganzzahlige Lösung x(k ) ist
– nicht teurer als x0 ,
– also nicht teurer als x,
– also nicht teurer als y, also optimal.
4
Wurzelbäume
Def.
Ein gerichteter Graph T = (V , E ) mit Knoten s ∈ V
heißt s -Wurzelbaum, wenn
T enthält keinen
T azyklisch,
(gerichteten) Kreis.
indeg(s ) = 0 und
indeg(v ) = 1 für jeden Knoten v ∈ V − s .
a)
s
b)
s
c)
?
s
5
Wurzelspannbäume
Def.
Sei G = (V , E ) ein gerichteter (Multi-) Graph mit
Knoten s ∈ V . Ein Teilgraph T von G mit
Knotenmenge V heißt s -Wurzelspannbaum von G ,
wenn T ein s -Wurzelbaum ist.
s
6
Existenz von Wurzelspannbäumen
Beob. Sei G ein gerichteter (Multi-) Graph mit Knoten s .
G besitzt genau dann einen s -Wurzelspannbaum,
wenn jeder Knoten v ∈ V von s in G erreichbar ist.
Es existiert ein
s -v -Pfad in G .
Beweis.
Siehe Übungsblatt.
Bemerkung.
DFS(s ) liefert s -Wurzelspannbaum (sofern einer existiert).
7
Minimale Wurzelspannbäume
Gegeben: gerichteter (Multi-) Graph G = (V , E ) mit
s ∈ V und Kantenkosten c : E → R≥0 .
Def.
Gesucht: s -Wurzelspannbaum T = (V , ET ) von G
(sofern existent)
mit
minimalen
Kosten
P
c (ET ) = e ∈ET c (e ).
Motivation:
s
1
2
2
2
3
3
Broadcast (Versenden von Information von s an alle Knoten) in
einem Kommunikationsnetzwerk.
4
Übungsaufgabe:
Kruskal und Jarnı́k-Prim
schlagen i.A. fehl!
8
Kostenmodifikation
Für jedes v 6= s setze c0 (v ) := min{ c (u , v ) | (u , v ) ∈ E }.
O.B.d.A. indeg(v ) ≥ 1 für jedes v 6= s .
Für jede Kante (u , v ) setze c 0 (u , v ) := c (u , v ) − c0 (v ).
⇒ Jeder Knoten v 6= s hat eingehende 0-Kante.
2
3
4
v
2
1
0
2
v
1
c0 (v ) = 2
9
Validität der Kostenmodifikation
Lem1 . Ein s -Wurzelspannbaum von G ist genau dann
optimal bezüglich c , wenn er optimal bezüglich c 0 ist.
Beweis.
Für jeden s -Wurzelspannbaum T = (V , ET ) gilt
X
(c (u , v ) − c0 (v ))
c 0 ( ET ) =
indegT (v ) = 1 für alle v 6= s
(u ,v )∈ET
=
X
(u ,v )∈ET
und indegT (s ) = 0
c (u , v ) −
X
v ∈ V −s
c0 (v )
10
Ein Versuch
Wähle für jedes v 6= s eine eingehende 0-Kante
Teilgraph F = (V , EF ) von G
Falls F azyklisch ⇒ F ist s -Wurzelspannbaum von G !
Beachte: F ist optimal bzgl. c 0 (und somit auch bzgl. c ),
da c 0 (F ) = 0.
Problem: Was tun, wenn F Kreis K enthält?
s
s
F
F
K
11
Kontraktion
Betrachte gerichteten (Multi-) Graphen G = (V , E ) und
U ⊆ V mit Kantenkosten c : E → R≥0 .
Kontraktion von U : Ersetze G [U ] durch neuen Knoten vU .
Kantenkosten werden auf G /U vererbt.
U
vU
G
G /U
≡
vU
G /U
12-4
Expansion
Lem2 . Sei K Kreis in F und T̃ s -Wurzelspannbaum von G /K .
Dann gibt es einen s -Wurzelspannbaum T von G mit
c 0 (T ) ≤ c 0 (T̃ ).
s
Beweis.
Jede Kante in T̃ korrespondiert zu Kante in G .
Teilgraph H von G mit Knotenmenge V .
Füge Kreis K zu H hinzu.
vK
v
u
K
H
12-9
Expansion
Lem2 . Sei K Kreis in F und T̃ s -Wurzelspannbaum von G /K .
Dann gibt es einen s -Wurzelspannbaum T von G mit
c 0 (T ) ≤ c 0 (T̃ ).
s
Beweis.
Jede Kante in T̃ korrespondiert zu Kante in G .
Teilgraph H von G mit Knotenmenge V .
Füge Kreis K zu H hinzu. ⇒ c 0 (H ) = c 0 (T̃ ).
vK
v
u
K
Jeder Knoten in V ist in H von s erreichbar.
Ermittle s -Wurzelspannbaum T
(= H − uv )
von H .
T ist s -Wurzelspannbaum von G .
H
13
Algorithmus
[Edmonds 1967]
Berechne modifizierte Kantenkosten c 0 .
Bestimme Teilgraph F .
Falls F ein s -Wurzelbaum, gib F zurück.
Ansonsten ermittle Kreis K in F .
Berechne Graph G /K .
Wende Algorithmus rekursiv auf (G /K , c 0 ) an
s -Wurzelspannbaum T̃ für G /K .
Expandiere T̃ zu s -Wurzelspannbaum T von G gemäß Lem.2
Gib T zurück.
14
Laufzeit
Algorithmus terminiert spätestens, wenn |V | ≤ 2.
In jeder Rekursionsstufe verringert sich Knotenanzahl um
mindestens 1. ⇒ O (V ) rekursive Aufrufe.
Kostenmodifikation, Kreisbestimmung, Kontraktion und
Expansion dauern jeweils O (E ) Zeit.
Satz.
Edmonds’ Algorithmus terminiert in O (V E ) Zeit.
15
Optimalität
Lem3 . Sei K Kreis in F und T s -Wurzelspannbaum von G .
Dann gibt es einen s -Wurzelspannbaum T̃ von G /K
mit c 0 (T̃ ) ≤ c 0 (T ).
s
Beweis. Setze H := T /K .
H
H ist Teilgraph von G /K mit c 0 (H ) ≤ c 0 (T ).
– Jeder s -v -Weg (v ∈ V \ K ) in T wird zu
– (nicht notwendigerweise einfachem) s -v -Weg in H .
vK
– Jeder s -u -Weg (u ∈ K ) in T wird zu s -vK -Weg in H .
v
⇒ Jeder Knoten in G /K ist in H von s erreichbar.
Betrachte (beliebigen) s -Wurzelspannbaum T̃ von H .
⇒ T̃ ist auch s -Wurzelspannbaum von G /K
und es gilt c 0 (T̃ ) ≤ c 0 (H ) ≤ c 0 (T ).
16
Optimalität
Satz.
Edmonds’ Algorithmus berechnet einen minimalen
s -Wurzelspannbaum.
Beweis. Falls F azyklisch ist, so ist der Algorithmus korrekt. X
Ansonsten: Vollständige Induktion über Knotenzahl n.
Anfang (n = 1): V = {s }, G azyklisch.
X
Schritt (n > 1):
Annahme: Algo. korrekt für alle Graphen mit k < n Knoten.
Sei K Kreis in F und T ? min. s -Wurzelspannbaum von G .
Lem.3 ⇒ exist. s -WSB T̃ von G /K mit c 0 (T̃ ) ≤ c 0 (T ? ) =: OPT0
IA ⇒ Algorithmus liefert optimalen s -WSB T̂ von G /K .
⇒ c 0 (T̂ ) ≤ c 0 (T̃ ).
Lem.2 liefert s -WSB T von G mit c 0 (T ) ≤ c 0 (T̂ ) ≤ c 0 (T ? ).
0
=
OPT
0
⇒ T ist optimal bzgl. c und somit bzgl. c . X
Herunterladen