Algorithmus und Beispiel - Lehrstuhl für Informatik der RWTH Aachen

Werbung
Effiziente Algorithmen (SS2014)
Kapitel 2
Flüsse
Walter Unger
Lehrstuhl für Informatik 1
26.06.2014 09:11
Dinitz mit Propagation
Spezielle Flüsse
Mit Kostenfunktion
(2:2)
<> Walter Unger 17.1.2015 17:56
Inhalt I
1
2
Dinitz mit Propagation
Einleitung
Algorithmus und Beispiel
Weiteres Beispiel
Laufzeit
Spezielle Flüsse
Mit Mindestfluss
Mit Alternativen
3
Mit Kostenfunktion
Einleitung
Idee
Algorithmus
Verbesserung der Laufzeit
SS2014
Z
x
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
Mit Kostenfunktion
(2:1)
<> Walter Unger 17.1.2015 17:56
SS2014
Situation
Die Berechnung des Sperrflusses auf einem Niveaunetzwerk
Ziel: Suche besseren Algorithmus zur Sperrflussberechnung.
Idee: Fülle einen Knoten mit Fluss aus.
D.h. suche den Knoten v , der am wenigsten Fluss fv weiterleiten kann.
Propagiere dann diesen Fluss fv von v nach s und nach t.
D.h. mache: Forward-Backward-Propagation.
Im folgenden wird nur diese neue Sperrflussberechnung angegeben.
Z
g
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
Mit Kostenfunktion
(2:2)
<> Walter Unger 17.1.2015 17:56
Definitionen
SS2014
Z
Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk.
Nin (v ) = {(w , v ) | (w , v ) ∈ Ef0 }.
Nout (v ) = {(v , w ) | (v , w ) ∈ Ef0 }.
pot(e) = restf (e) ist das Potential einer Kante e.
pot(v ) = min{
Knoten v .
P
e∈Nin (v )
pot(e),
P
e∈Nout (v )
pot(e)} ist das Potential eines
g
Dinitz mit Propagation
Algorithmus und Beispiel
Spezielle Flüsse
(2:3)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Idee (Forward Propagation)
1
Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk.
2
Bestimme v ∈ V mit: pot(v ) > 0 und ∀w ∈ V : pot(v ) 6 pot(w ).
3
Lege auf v einen Überschuss von pot(v ), d.h. Setze U(v ) = pot(v ).
4
Setze U(w ) = 0 für alle Knoten w ∈ V \ {v }.
5
6
Z
Solange es einen Knoten v 0 gibt mit U(v 0 ) > 0, verschiebe den Überfluss
auf die Nachfolger aus Nout (v 0 ).
Verwende, um gute Laufzeit zu erreichen, dazu eine Schlange.
g
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
(2:4)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Algorithmus (Forward Propagation)
1
Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk.
2
Bestimme v ∈ V mit: pot(v ) > 0 und ∀w ∈ V : pot(v ) 6 pot(w ).
3
Setze U(v ) = pot(v ) und ∀w ∈ V \ {v } setze U(w ) = 0.
4
Enqueue(v , Q).
5
Solange Q nicht leer ist, mache:
1
2
v = Dequeue(Q).
Solange U(v ) > 0 mache:
1 Für jedes e = (v , w ) ∈ Vout (v ):
00
2 f (e) = min{pot(e), U(v )}
00
3 U(v ) = U(v ) − f (e)
00
4 U(w ) = U(w ) + f (e)
00
5 Falls w 6= t und U(w ) = f (e), mache Enqueue(w , Q).
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:5)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Dinitz)
g
6
1
63
63
1
64
e
h
64
6
1
65
6
c
1
65
6
i
5
65
f
62
5
63
6
d
b
63
65
6
6
s
65
62
63
5
a
6
5
t
Z
g
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:6)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1a)
65
3
3
b
64
6
6
5
6
s
65
1
a
6
d
5
64
6
g
e
363
3
h
6
1
65
6
1
c
365
3
65
f
1
3
i
5
6
5
3
t
Z
g
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
(2:7)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Iterierte Propagation
1
Sei Gf0 = (V , Ef0 , s, t, c 0 ) ein Niveaunetzwerk.
2
Solange kein Sperrfluss berechnet ist, wiederhole:
1
2
Führe eine Propagationsphase aus.
Solange es saturierte Kanten und Knoten gibt, entferne diese.
Lemma (Anzahl der Iterationen)
Nach spätestens n − 1 Propagationsphasen ist in dem Niveaunetzwerk ein
Sperrfluss bestimmt.
Beweis: In jeder Iteration wird mindestens ein Knoten saturiert.
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:8)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1b)
b
64
6
6
5
6
s
65
1
a
165
1
3
6
d
5
164
1
6
g
e
1
363
1
h
6
1
65
1
c
6
65
f
1
365
4
i
5
6
5
1
t
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:9)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1c)
165
4
1
b
64
6
6
5
6
s
65
1
a
6
d
5
164
1
g
6
e
1
363
h
6
1
165
1
1
1
c
6
f
1
365
165
1
4
i
5
6
5
t
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:10)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1d)
b
64
6
6
5
6
s
65
1
a
465
3
4
6
d
5
464
3
1
g
6
e
363
h
6
1
465
3
1
1
c
6
f
1
365
465
3
4
i
5
6
5
t
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:11)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1e)
65
b
6
5
c
1
1
1
s
565
1
4
6
d
5
464
1
g
6
e
1
1
363
465
h
6
f
1
365
6
1
1
6
164
1
6
1
a
465
4
i
5
6
5
t
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:12)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1f)
165
1
b
1
6
5
1
6
565
4
6
d
5
464
1
g
6
6
1
1
1
s
164
1
a
e
363
h
1
1
465
1
1
6
c
f
1
365
5
565
1
4
i
6
6
5
t
Z
s
Dinitz mit Propagation
Spezielle Flüsse
Algorithmus und Beispiel
Mit Kostenfunktion
(2:13)
<> Walter Unger 17.1.2015 17:56
SS2014
kleines Beispiel (Niveaunetzwerk 1g)
465
3
b
6
c
4
1
s
565
4
6
d
5
464
1
g
6
e
1
1
363
465
h
6
f
1
365
6
3
3
4
1
6
6
5
464
3
1
1
a
565
4
i
5
6
5
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:14)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Dinitz)
6
66
64
64
5
64
63
g
65
64
h
i
l
64
m
6
4
68
63
8
6
64
6
2
64
1
7
d
f
k
6
6
c
64
6
61
61
67
s
4
66
63
66
65
b
e
64
6
64
6
a
n
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:15)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1a)
64
e
66
1
g
64
1
63
64
65
6
c
64
m
7
16
d
l
1
64
h
5
i
6
16
66
6
s
f
1
65
2
1
6
64
b
k
6
8
6
168
1
n
1
a
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:16)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1b)
164
1
e
64
f
166
1
6
2
k
g
64
1
64
65
64
m
7
16
64
6
6
c
d
l
h
1
16
63
5
i
6
1
1
s
66
168
n
1
65
1
b
6
6
1
8
a
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:17)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1c)
364
2
e
66
g
64
1
63
26
2
65
64
m
64
6
7
16
h
1
6
c
d
l
5
i
6
6
3
2
16
f
1
s
2
6
65
k
1
2
64
b
166
26
8
a
168
n
4
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:18)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1d)
364
e
166
6
3
f
6
2
g
64
1
64
26
2
6
3
26
2
65
2
64
m
7
16
d
46
64
6
6
c
l
h
1
s
5
26
2
16
1
b
k
1
8
26
5
i
6
a
168
n
4
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:19)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1e)
364
e
166
26
6
3
g
64
7
64
l
5
m
h
5
i
46
168
n
4
4
36
3
6
6
d
36
3
c
16
3
1
6
3
f
1
64
56
2
6
s
5
56
3
16
1
b
k
1
8
26
6
a
t
Z
s
Dinitz mit Propagation
Weiteres Beispiel
Spezielle Flüsse
Mit Kostenfunktion
(2:20)
<> Walter Unger 17.1.2015 17:56
SS2014
schönes Beispiel (Niveaunetzwerk 1f)
364
e
166
g
64
1
26
6
3
36
46
36
5
m
7
4
h
5
464
4
i
568
4
n
4
4
6
6
16
5
4
c
d
l
6
6
3
16
f
1
s
5
64
56
2
6
56
b
k
1
8
26
4
a
t
Z
s
Dinitz mit Propagation
Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:21)
<> Walter Unger 17.1.2015 17:56
SS2014
Beispiel zur Laufzeit
Die gelben Kanten haben Kapazität 100.
6
e
15
6
12
15
15
a
56 5
666
466
4
4
d
c
567
5
6
26
2
464
4
5
6
1
1
363
3
i
h
g
18
26 2
262
326
3
3
568
5
3
6
1
1
262
2
n
m
26
2
96
l
k
18
s
14
6 17
2
3
6
j
18
27
9
19
9
6 18
26
6
16
6
f
2
6 17
26
b
t
Z
s
Dinitz mit Propagation
Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:22)
<> Walter Unger 17.1.2015 17:56
SS2014
Beispiel zur Laufzeit (2.Runde)
Die gelben Kanten haben Kapazität 100.
15
6
15
a
56
12
666
46
567
26
d
c
i
h
5
363
16 6 17
16
18
26
262
36
6
464
16
4
j
g
m
26
3
568
16
n
96
l
3
262
k
18
27
19
3
e
6
s
16 6 18
16
14
6
26
f
16
16
16 6 17
16
6
9
18
6
18 6
1
6
16
b
t
Z
s
Dinitz mit Propagation
Laufzeit
Spezielle Flüsse
(2:23)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Forward-Propagation
Z
Lemma (Laufzeit einer Propagation)
Eine Forward-Propagation kann in Zeit O(n + l) durchgeführt werden. Dabei
ist l die Anzahl der neu saturierten Kanten.
Beweis:
Wegen der FIFO-Schlange Q werden die Niveaus nacheinander bearbeitet.
Jeder Knoten wird höchstens einmal aus Q entnommen.
Bei jedem Knoten werden von den betrachteten Kanten alle bis auf
höchstens eine saturiert.
Pro Knoten gibt es maximal eine Kante, die betrachtet, aber nicht
saturiert wird.
Damit:
maximal n Knoten werden betrachtet.
maximal l Kanten werden saturiert und nicht mehr betrachtet.
maximal n Kanten werden betrachtet, aber nicht saturiert.
s
Dinitz mit Propagation
Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:24)
<> Walter Unger 17.1.2015 17:56
SS2014
Sperrflussberechnung
Z
Lemma (Laufzeit der Sperrflussberechnung)
Ein Sperrfluss kann in Zeit O(m + n2 ) berechnet werden.
Beweis:
Nach spätestens n − 1 Propagationsphasen ist in dem Niveaunetzwerk ein
Sperrfluss bestimmt.
Sei li die Anzahl der saturierten Kanten in der i-ten Propagationsphase
(1 6 i 6 n − 1).
Laufzeit damit:
n−1
X
O(n + li ) = O(n2 +
i=1
n−1
X
i=1
Theorem (Laufzeit von Dinitz Algorithmus)
Der Algorithmus von Dinitz hat Laufzeit O(n3 ).
li ) = O(n2 + m)
s
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
(2:25)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Das Flussproblem mit Mindestfluss
Definition (Flussproblem mit Mindestfluss)
Eingabe: G = (V , E , s, t, c, c 0 ) mit:
(V , E ) ist ein gerichteter Graph (n = |V |, m = |E |)
s, t ∈ V mit s 6= t
c : E 7→ N+
c 0 : E 7→ N+
Ausgabe: f : E 7→ R+
0 mit:
∀e : c 0 (e) 6 f (e) P
6 c(e)
P
∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a))
Ziel: Bestimme,
P ob es so einen Fluss gibt. Falls ja, dann maximiere
w (f ) = (s,v )∈E f ((s, v )).
Z
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
Mit Kostenfunktion
(2:26)
<> Walter Unger 17.1.2015 17:56
Lösbarkeit
Es muss nicht immer eine Lösung geben. Hier ein einfaches Beispiel:
s
4 6∈ [2, 3]
1
a
4 ∈ [4, 6]
1
t
SS2014
Z
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
Mit Kostenfunktion
(2:27)
<> Walter Unger 17.1.2015 17:56
b
b
SS2014
6o
Idee
6u
s0
[u, o]
x
6o
s
a
t
a
6∞
6∞
s
y
6o−u
t
6u
t0
Z
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
Mit Kostenfunktion
(2:28)
<> Walter Unger 17.1.2015 17:56
SS2014
Verfahren
b
Setze c 00 (t, t 0 ) = c 00 (s 0 , s) =
P
e∈E
c(e).
6o−u
x
6o
s
y
a
t
6∞
für jede Kante (v , w ) erzeuge zwei neue
Knoten x , y und setze:
c 00 (v , x ) = c(v , w ) und
c 00 (y , w ) = c(v , w ).
c 00 (x , y ) = c(v , w ) − c 0 (v , w ).
c 00 (s 0 , y ) = c 0 (v , w ) und
c 00 (x , t 0 ) = c 0 (v , w ).
6u
s0
6∞
Ersetze jede Kante (v , w ) durch einen Weg
der Länge 3:
6o
Erzeuge aus G = (V , E , s, t, c, c 0 ) einen
neuen Graphen G 0 = (V 0 , E 0 , s 0 , t 0 , c 00 ).
Füge neue Quelle s 0 und neue Senke t 0 hinzu.
Z
6u
t0
i
Dinitz mit Propagation
Mit Mindestfluss
(2:29)
Spezielle Flüsse
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Aussage
Z
b
Beachte: x und y sind neu eingefügte Knoten, also
nicht s oder t.
Beweis:
Zeige: =⇒
Zeige: ⇐=
6o−u
x
a
t
6∞
s
y
6o
6u
s0
6∞
Es gibt in G einen korrekten Fluss, der die
Mindestflussbedingung erfüllt genau dann, wenn es
in G 0 einen maximalen Fluss gibt, der alle Kanten
der Form (s 0 , y ) und (x , t 0 ) saturiert.
6o
Lemma
6u
t0
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
Mit Kostenfunktion
0
0
(2:30)
<> Walter Unger 17.1.2015 17:56
Beispiel (warum (s , y ) und (x , t ))
6∈ [2, 3]
a
6∈ [4, 6]
c
b
s0
26
2
2
4
363
1
x
161
363
y
1
2
2
6
1
b
366
1
36
4
1
a
6
4
2
t0
x0
4
62
y0
466
4
c
SS2014
Z
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
Mit Kostenfunktion
(2:31)
<> Walter Unger 17.1.2015 17:56
Zeige: =⇒
b
6o
b
6u
s0
[u, o]
x
6u
t0
6o
s
t
6∞
6∞
s
y
6o−u
t
a
u 6 f (a, b) 6 o
a
0
f (s , y ) = f (x , t 0 ) = u
f (a, x ) = f (y , b) = f (a, b)
f (x , y ) = f (a, b) − u
SS2014
Z
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
(2:32)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Zeige: ⇐=
6o
s
6o−u
y
x
6o
Dann definiert f (a, b) = f (a, x ) einen
korrekten Fluss auf G.
6u
s0
a
t
6∞
Dann gilt: f (a, x ) = f (y , b) für jede
ursprüngliche Kante (a, b).
b
6∞
Zeige: Wenn es in G 0 einen maximalen Fluss
gibt, der alle Kanten der Form (s 0 , y ) und
(x , t 0 ) saturiert, dann gibt es in G einen
korrekten Fluss, der die
Mindestflussbedingung erfüllt.
Z
6u
t0
i
Dinitz mit Propagation
Mit Mindestfluss
Spezielle Flüsse
(2:33)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Algorithmus
Sei f (resp. f 0 ) der Fluss auf G (resp. G 0 ).
Sei weiter f 00 der Fluss auf G ohne die untere Schranke c 0 . Dann gilt,
wenn es eine Lösung für G 0 gibt:
f = f 00 , denn untere Schranken verringern den Fluss auf G nicht
mehr.
P
f 0 = f + e∈E (G) c 0 (e)
Damit haben wir folgendes Verfahren:
1
2
3
4
Bestimme aus G: G 0 , G 00 , f , f 0 , f 00 .
Bevorzuge auf P
G 0 die Kanten der Form (s 0 , y ) und (x , t 0 ).
0
Falls f < f + e∈E (G) c 0 (e) gilt, so gibt es keine Lösung.
Ansonsten bestimme f aus f 0 , d.h. f (a, b) = f (a, x ).
Z
i
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
(2:34)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Das Flussproblem mit Alternativen
Definition (Flussproblem)
Eingabe: G = (V , E , s, t, c, c 0 ) mit:
(V , E ) ist ein gerichteter Graph (n = |V |, m = |E |)
s, t ∈ V mit s 6= t
c : E 7→ N+
c 0 : E 7→ N+
Ausgabe: f : E 7→ R+
0 mit:
∀e : c 0 (e) 6 f (e) P
6 c(e) oder f (e) = 0.
P
∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a))
Ziel: Bestimme, ob es so einenP
nicht trivialen Fluss gibt. Falls ja,
dann maximiere w (f ) = (s,v )∈E f ((s, v )).
Z
n
Dinitz mit Propagation
Mit Alternativen
(2:35)
Spezielle Flüsse
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Reduktion
Theorem
Zu einem gegeben Flussproblem G = (V , E , s, t, c, c 0 ) ist es NP-vollständig zu
bestimmen, ob es so einen nicht trivialen Fluss gibt.
Beweis: Übung, b.z.w. Reduktion auf Exact-3-SAT.
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
(2:36)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Exact-3-SAT
Definition
Eine Boolesche Formel F ist in Exact-3-KNF:
F(x1 , x2 , ..., xr )
=
Vk
(Klauseln)
=
(li1 ∨ li2 ∨ li3 )
(Literale)
ci
lij
i=1
=
ci
¬xl
xl
oder
für ein l : 1 6 l 6 r
∀16i 6k
∀ 1 6 i 6 k und
∀16j63
Eine Belegung ist eine Funktion W : {x1 , x2 , ..., xr } 7→ {0, 1}.
Theorem (Exakt-3-SAT)
Es ist NP-vollständig, festzustellen, ob es für F aus Exact-3-KNF eine
erfüllende Belegung gibt, bei der in jeder Klausel genau ein Literal “true” ist.
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
Mit Kostenfunktion
(2:37)
<> Walter Unger 17.1.2015 17:56
Erste Variable x0
[2, 2]
a1
[2, 2]
a2
a3l
b2
b3l
[2
,2
]
a0
s
[2, 2]
x0
]
,2
[2
b0
[2, 2]
b1
[2, 2]
SS2014
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
Mit Kostenfunktion
(2:38)
<> Walter Unger 17.1.2015 17:56
SS2014
Zweite Variable x1
[2, 2]
a1
[2, 2]
a2
al
[2,
[2
,2
]
a0
s
[2, 2]
x0
[2
,2
2
[2,
]
b0
[2, 2]
b1
[2, 2]
b2
bl
2
[2,
2]
]
x1
]
[ 2,
c0
[2, 2]
c1
2]
d0
[2, 2]
d1
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
Mit Kostenfunktion
(2:39)
<> Walter Unger 17.1.2015 17:56
Erste zwei Klauseln k0 und k1
a1
,2
,2
a3
]
[2
,2
[2
[2, 2]
[2
]
,2
[ 2,
2]
2]
[2,
yl
[2
xl
a2
]
[2, 2]
]
a0
k0
[2, 2]
[2
,2
b0
[2, 2]
b1
[2, 2]
]
,2
[2
]
c0
[2, 2]
c1
k1
[2, 2]
b2
[2, 2]
b3
[2
,2
]
[2, 2]
]
,2
[2
c2
[2, 2]
c3
k2
SS2014
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
Mit Kostenfunktion
(2:40)
<> Walter Unger 17.1.2015 17:56
SS2014
Anpassung: Variable xl in Klausel ki
b0
1
1 ∈ [1, 1]
xn
ki
[
1
2 ∈ [2, 2]
b1
1
2]
1 ∈ [1, 1]
1
−2
[2
,2
]
2 ∈ [2, 2]
2
2
∈
[2
2
d0
e0
[2, 2]
−2
[2, 2]
a2
al
b2
bl
2
[2, 2]
−2 ]
2
∈ [2,
xl+1
2
c1
2
[2, 2]
−2
y
1
2
∈
1 ∈ [1, 1]
[2, 2]
a1
1
c0
2,
−2
1 ∈ [1, 1]
1 ∈ [1, 1]
x
[2, 2]
1
xl
a0
1 ∈ [1, 1]
s
[2, 2]
2 ∈−2
[2, 2]
2
d1
e1
,2
[2, 2]
−2
]
,2
[2
]
ki+1
t
Z
n
Dinitz mit Propagation
Mit Alternativen
Spezielle Flüsse
(2:41)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Konstruktion
1
Für jede Variable konstruiere einen Baustein, wie oben.
Der obere Zweig entspricht der Variablen selber.
Der untere Zweig entspricht der negierten Variablen.
2
Für jede Klausel konstruiere einen Baustein, wie oben.
Der erste Zweig entspricht dem ersten Literal in der Klausel.
Die weiteren Zweige dem zweiten und dem dritten Literal in der
Klausel.
3
Hänge alle Bausteine für die Variablen und Klauseln hintereinander.
4
Für jedes Auftreten eines Literals in einer Klausel mache die obige
Anpassung.
5
Falls es eine Belegung der Variablen gibt, die die Formel erfüllt, dann:
geht ein Fluss von 2 durch jeweils den Zweig, der der Belegung der
Variablen entspricht.
Z
n
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
(2:42)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Motivation
Benutzung der Kanten (Transportwege) im allgemeinen nicht umsonst.
Daher sollten wir die Kosten minimieren.
Kosten sind minimal, wenn der Fluss Null ist.
Daher suchen wir:
Kostenminimalen Fluss mit Wert W .
Wichtig: G sollte keine Kreise mit negativen Kosten (Gewichtssumme)
enthalten.
Z
g
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
Mit Kostenfunktion
(2:43)
<> Walter Unger 17.1.2015 17:56
SS2014
Das Flussproblem mit Kosten
Definition (Min-Cost-Flow-Problem)
Eingabe: G = (V , E , s, t, c, l), W mit:
(V , E ) ist ein gerichteter Graph (n = |V |, m = |E |)
s, t ∈ V mit s 6= t
c : E 7→ N+
l : E 7→ Z und W ∈ N
Ausgabe: f : E 7→ R+
0 mit:
∀e : f (e) 6 c(e). P
P
∀v ∈ V \ {s, t} : (a,v )∈E f ((a, v )) = (v ,a)∈E f ((v , a))
Ziel: Bestimme Fluss f P
w (f ) = W und
minimalen l(f ) = e∈E f (e) · l(e).
D.h. l(f ) = min{l(g) | g ist Fluss mit w (g) = W }.
Z
g
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
(2:44)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Beobachtungen
Falls W = 1, so entspricht das dem kürzesten Wege Problem.
Falls l(e) = 0 für alle e ∈ E , dann können die obigen Algorithmen leicht
zur Lösung des Problems adaptiert werden:
1
2
3
Falls erstmalig w (f ) > W gilt, dann breche ab.
Sei p der Wert der letzten Erweiterung.
Ersetze den letzten Fluss durch eine Fluss mit dem Wert
p − (w (f ) − W ).
Alternativ kann auch wie folgt vorgegangen werden:
1
2
3
Erzeuge neue Quelle s 0 .
Füge Kante e 0 = (s 0 , s) mit c(e 0 ) = W hinzu.
Damit wird der maximale Fluss durche W begrenzt.
Z
g
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
(2:46)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
Idee (am Beispiel)
Kantenbeschriftung: Fluss6MaxFluss:Kosten→Aktuelle Kosten
Bestimme erst einen Fluss (mit Wert W = 6).
Der Fluss muss nicht kostenoptimal sein.
Verbessere die Kosten.
→2
5; 2
16
s
6 6 6; 3 → 18
a
c
56
6; 2
→1
0
16
6; 1
→1
5
→4
5; 9
56
t
b
s
6 6 6; 3 → 18
→2
5; 2
16
8
;
4
a
c
56
6; 2
→1
0
−4
16
6; 1
→1
4; 4
5
→4
5; 9
56
4
−
b
t
SS2014
Z
g
Dinitz mit Propagation
Einleitung
Spezielle Flüsse
Mit Kostenfunktion
(2:47)
<> Walter Unger 17.1.2015 17:56
SS2014
Beispiel (W = 5)
4 6 5; 3 → 12
2; 6
1
1
1
2;
1→
9
6 5;
−2
1;
→
5; 4
2; 8
1;
b
46
8
6 3;
−2
16
6 5; 4
−2
a
6
s
16
c
6 5; 4
−2
d
5 6 5; 3 → 15
2; 6
t
Z
g
Dinitz mit Propagation
Idee
Spezielle Flüsse
Mit Kostenfunktion
(2:48)
<> Walter Unger 17.1.2015 17:56
Idee
SS2014
Z
Bestimme einen beliebigen Fluss f mit w (f ) = W .
Verbessere schrittweise die Kosten des Flusses:
Annahme: es gibt Fluss f 0 mit l(f 0 ) < l(f ) und w (f 0 ) = w (f ).
Dann gibt es einen Unterschied zwischen f und f 0 .
Betrachte diesen Unterschied.
Das muss ein zyklischer Fluss sein, d.h. ein Fluss ohne Quelle und
Senke.
Für f 0 und f gilt die Flusserhaltung.
0
Und fout (s) = fout
(s) = fin (t) = fin0 (t).
Damit gilt: Falls f (a, b) 6= f 0 (a, b), dann gibt es
c ∈ V \ {a, b} mit: f (a, c) 6= f 0 (a, c).
Damit gibt es mindestens einen Kreis mit Fluss g über Kanten
e mit f (e) 6= f 0 (e).
Dieser zyklische Fluss besteht aus einer Summe von Kreisen.
Einer dieser Kreise muss die Kosten für f 0 verbessern.
Idee: suche diese verbessernden Kreise.
g
Dinitz mit Propagation
Idee
Spezielle Flüsse
Mit Kostenfunktion
(2:49)
<> Walter Unger 17.1.2015 17:56
Beispiel mit Kreisen (W = 5)
6 5; 4
−2
d
1
9
6 5;
−2
c
6
→1
5; 4
2; 8
8
6 3;
−2
1;
1; 1 →
1
1
b
46
16
6 5; 4
−2
a
2;
4 6 5; 3 → 12
2; 6
6
s
5 6 5; 3 → 15
2; 6
t
SS2014
Z
g
Dinitz mit Propagation
Idee
Spezielle Flüsse
(2:50)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Frage: Warum eine Suche nach Kreisen?
Ein verbessernder Kreis entspricht zwei Wegen:
Ein Weg, der gelöscht wird,
Ein Weg, der hinzugefügt wird.
Die Differenz der Wege ist der Kreis.
Man könnte also auch nach Wegen suchen.
Vorteil bei Kreisen:
Gewinn entspricht direkt den Kosten des Kreises.
Einfachere Algorithmen bei sich ändernden Kosten.
Optimale Lösung bekannt.
“Anbieter” verändert die Kosten einer Kante.
Passe bisherige Lösung durch das Suchen von Kreisen an.
Die folgenden Beweise werden dadurch einfacher.
Z
g
Dinitz mit Propagation
Idee
Spezielle Flüsse
(2:51)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Definitionen
Gegeben G = (V , E , s, t, c, l) und Restnetzwerk Gf = (V 0 , E 0 , s, t, c 0 , l 0 ).
c 0 (e) = c(e) für e ∈ E ∩ E 0
c 0 (a, b) = c(b, a) und l 0 (a, b) = −l(b, a) für (a, b) ∈ E 0 \ E
0
f 0 ist eine Zirkulation, gdw.: ∀v ∈ V : fin0 (v ) = fout
(v ).
Wert einer Zirkulation f 0 über Schnitt (S, T ):
f 0 (S, T ) =
X
f 0 (v , w ) −
(v ,w )∈E ,v ∈S,w ∈T
0
X
(w ,v )∈E ,v ∈S,w ∈T
0
w (f ) = f ({s}, V \ {s}).
Lemma
Es gilt:
w (f 0 ) = 0 und
für jeden Schnitt (S, T ) gilt: f 0 (S, T ) = 0.
Beweis: Flusserhaltung und Induktion über Größe von S.
f 0 (w , v ).
Z
g
Dinitz mit Propagation
Idee
Spezielle Flüsse
Mit Kostenfunktion
(2:52)
<> Walter Unger 17.1.2015 17:56
Zirkulation und Kostenminimalität
SS2014
Z
Lemma
Falls f nicht kostenminimal ist, dann gibt es einen Kreis C in Gf und f hat auf
C negative Kosten.
Beweis:
Sei f ∗ Fluss auf G mit l(f ∗ ) < l(f ).
Damit unterscheiden sich f ∗ und f .
Für alle e ∈ E setze f 0 (e) = f ∗ (e) − f (e).
f 0 ist dann zyklischer Fluss.
f 0 wird durch höchstens m0 6 2m viele Kreisflüsse fi 0 (1 6 i 6 m0 )
gebildet.
Damit gilt: l(f 0 ) = l(f ∗ ) − l(f ) =
Damit existiert j mit l(fj0 ) < 0.
P
16i6m0
l(fi 0 )
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
(2:53)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Algorithmus (Min-Cost-Flow)
Theorem
Ein Fluss f ist kostenminimal, wenn Gf keinen Kreis mit negativen Kosten
enthält.
2
Eingabe: G = (V , E , s, t, c, l), W .
Bestimme Fluss f 0 mit w (f 0 ) = W .
3
Solange es in Gf einen negativen Kreis C gibt:
1
1
f = f + f 0 (C ).
Es gilt: w (f + f 0 (C )) = w (f ) + w (f 0 (C )) = w (f ) = W .
D.h. der Wert des Flusses bleibt gleich.
Es gilt: l(f + f 0 (C )) = l(f ) + l(f 0 (C )) < l(f ).
D.h. die Kosten verringern sich.
Theorem
Der obige Algorithmus bestimmt einen kostenminimalen Fluss.
Z
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
Mit Kostenfunktion
(2:55)
<> Walter Unger 17.1.2015 17:56
Beispiel zur Laufzeit (W = 100)
Bei schlecht gewählten Kreisen kann die Laufzeit sehr lang werden.
b
s
100
61
00 ;
00;
6 1; 4
6
61
; 1
100
8→
00;
1
06
800
10
a
1
8→
800
t
SS2014
Z
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
Mit Kostenfunktion
(2:56)
<> Walter Unger 17.1.2015 17:56
Beispiel zur Laufzeit (W = 100)
b
s
100
61
00;
8→
16
1 6 1; 4 → 4
1
00;
1
6
800
00;
1
96
9
a
100
;
1→
8→
1
792
t
SS2014
Z
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
Mit Kostenfunktion
(2:57)
<> Walter Unger 17.1.2015 17:56
Beispiel zur Laufzeit (W = 100)
s
99
6
100
; 8
→
1
b
16
100
;
6 1; 4
16
;
100
1→
00;
1
96
792
9
a
1→
8→
1
792
t
SS2014
Z
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
Mit Kostenfunktion
(2:59)
<> Walter Unger 17.1.2015 17:56
Nochmal Beispiel zur Laufzeit (W = 100)
Bei gut gewählten Kreisen kann die Laufzeit ggf. besser sein.
b
s
61
100
00;
; 8 8
00
6 1; 4
6
61
; 1
100
a
00;
1
t
8
00;
1
6
00
; 8
100
SS2014
Z
i
Dinitz mit Propagation
Algorithmus
Spezielle Flüsse
Mit Kostenfunktion
(2:60)
<> Walter Unger 17.1.2015 17:56
Nochmal Beispiel zur Laufzeit (W = 100)
b
61
00 ;
s
100
6 1; 4
1
00;
1
6
61
00;
8→
6
100
800
a
100
;
1
8→
800
t
SS2014
Z
i
Dinitz mit Propagation
Spezielle Flüsse
Verbesserung der Laufzeit
Mit Kostenfunktion
(2:61)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit und Verbesserung selbiger
Der bisherige Algorithmus hat in obiger Form eine pseudopolynomielle
Laufzeit.
Dies kann aber verbessert werden:
Wähle kostengünstige Kreise.
Wähle Kreise über kostengünstige Kanten.
Also unabhängig von der Kreislänge.
Dazu werden die Kreise gewählt, die die durchschnittlichen Kantenkosten
minimieren.
Setze:
l(C )
l̄(C ) =
=
|C |
P
e∈C
l(e)
|C |
Setze weiter: µ(f ) = −l̄(C ).
Falls C negative Kosten hat, so ist µ(C ) positiv.
Z
i
Dinitz mit Propagation
Spezielle Flüsse
Verbesserung der Laufzeit
(2:62)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Mean-Algorithmus (Min-Cost-Flow)
P
l̄(C ) =
1
Eingabe: G = (V , E , s, t, c, l), W .
2
Bestimme Fluss f mit w (f ) = W .
3
Solange es in Gf einen negativen Kreis C gibt,
1
Wähle C mit l̄(C ) minimal.
0
1 Bestimme maximalen zyklischen Fluss f auf C .
0
2 f = f + f (C ).
Es gilt: w (f + f 0 (C )) = w (f ) + w (f 0 (C )) = w (f ) = W .
Es gilt: l(f + f 0 (C )) = l(f ) + l(f 0 (C )) < l(f ).
l(C )
|C |
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C )
Dinitz mit Propagation
Spezielle Flüsse
Verbesserung der Laufzeit
(2:63)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Überblick zum Beweis
P
l̄(C ) =
Teile Iterationen in Phasen auf.
l(C )
|C |
=
l(e)
µ(f ) = −l̄(C )
1 − x 6 e −x , x = 1/n
Bestimme die Anzahl der Phasen.
Bestimme die Anzahl der Iterationen pro Phase.
Zeige dies unter Verwendung einer besonderen Annahme.
Verändere l so, dass Annahme immer gilt und Algorithmus analog
vorgeht.
Bestimme dazu Potential der Knoten, und addiere dies zu den
Kantenkosten.
Bestimme Laufzeit für eine Iteration.
Zeige, wie man einfach einen Min-Mean-Kreis C findet (Dynamisches
Programmieren).
Bestimme dazu vorab den Wert von C .
Dann wird Suche nach C einfach (passe Kosten an).
e∈C
|C |
i
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Z
Mit Kostenfunktion
(2:64)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit (Aufteilung in Phasen)
P
l̄(C ) =
Die Phase i endet, falls ein Fluss g gefunden wird mit:
µ(g) 6 (1 − 1/n) · µ(f ) oder µ(g) 6 0.
Falls µ(g) 6 0 terminiert der Algorithmus.
Sei µ0 der Wert von µ zu Beginn der ersten Phase.
Sei µi der Wert von µ am Ende der i-ten Phase (1 6 i 6 T ).
µi 6 (1 − 1/n) · µi−1 6
Weiter gilt: µ0 6 L =
P
e∈E
µi−1
.
e 1/n
|l(e)|
Wegen der Ganzzahligkeit gilt: µT −1 > 1/n.
Es folgt:
T − 1 6 loge 1/n (nL) =
Und: T 6 n ln(nL) + 1.
=
e∈C
|C |
l(e)
µ(f ) = −l̄(C )
1 − x 6 e −x , x = 1/n
Sei f der Fluss zu Beginn der i-ten Phase.
Damit gilt:
l(C )
|C |
i
ln(nL)
= n ln(nL)
ln(e 1/n )
Dinitz mit Propagation
Spezielle Flüsse
Verbesserung der Laufzeit
(2:65)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit (Iterationen pro Phase)
P
l̄(C ) =
Zeige im Folgenden:
l(C )
|C |
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C )
Die Phase (und der Algorithmus) terminiert nach spätestens m
Iterationen, oder
Die nächste Phase startet nach spätestens m − 1 Iterationen.
D.h. war der initiale Fluss f zu Beginn der Phase,
dann ist ein Fluss g nach spätestens m − 1 Iterationen erreicht
mit:
µ(g) 6 (1 − 1/n) · µ(f ).
Vorgehen:
Zeige Behauptung unter der Annahme: ∀e ∈ E (Gf ) : l(e) > −µ(f ).
Zeige Behauptung: Verändere dann l, so dass die Annahme immer
gilt.
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:66)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit (Iterationen pro Phase)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C )
Typ 1 Iteration: Kreis C enthält nur Kanten mit negativen ∀e
Kosten.
∈ E (Gf ) : l(e) > −µ(f )
Typ 2 Iteration: Kreis C enthält mindestens eine Kante mit positiven
Kosten.
Bei jeder Typ 1 Iteration wird mindestens eine Kante saturiert und
entfernt.
Alle dabei neu entstehenden Kanten haben positive Kosten (andere
Richtung).
Nach spätestens m konsekutiven Typ 1 Iterationen terminiert das
Verfahren.
Wenn also die Phase mehr als m Iterationen hat, folgt nach spätestens
m − 1 Iterationen eine Typ 2 Iteration.
Wir zeigen nun, dass dieser Fall unter der Annahme nicht auftritt.
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Z
Mit Kostenfunktion
(2:67)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit mit Annahmen (Iterationen pro Phase)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C )
Sei g der Fluss vor der ersten Typ 2 Iteration.
∀e ∈ E (Gf ) : l(e) > −µ(f )
Die Annahme gilt weiter (keine neuen Kanten mit negativen Kosten):
∀e ∈ E (Gg ) : l(e) > −µ(f )
Sei C der Min-Mean-Kreis in Gg und H die Kanten mit negativen Kosten
in C .
Damit gilt:
µ(g) =
X −l(e)
e∈C
|C |
6
X −l(e)
e∈H
|C |
6 |H| ·
µ(f )
|C |
Wegen |H| 6 |C | − 1 folgt:
|H|/|C | 6 1 − 1/|C | 6 1 − 1/n
Damit: µ(g) 6 (1 − 1/n) · µ(f ).
Widerspruch: sind schon am Ende der Phase.
Also gibt es in der Phase keine Typ 2 Iterationen.
Falls die Annahme gilt, so endet die Phase nach m − 1 Typ 1 Iterationen.
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Z
Mit Kostenfunktion
(2:68)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit (Erzwinge die Annahme)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C )
Wir sorgen dafür, dass die Annahme erfüllt werden Annahme:
kann: ∀e ∈ E (Gf ) : l(e) > −µ(f )
Wir verändern l geeignet.
Verhalten des Algorithmus sollte unverändert sein.
Sei p : V 7→ Z ein Potential für die Knoten.
Setze für alle e = (v , w ) ∈ E (Gf ) setze: l 0 (e) = l(e) + p(v ) − p(w ).
Für e = (w , v ) gilt:
l 0 (e)
=
l(e) + p(w ) − p(v )
−l(e) + p(w ) − p(v ) = −l 0 (e)
Potentiale ändern die Kostensumme auf Kreisen C nicht: l(C ) = l 0 (C ).
Potentiale ändern damit auch nicht den Ablauf des Verfahrens.
Wir zeigen nun, dass es Potentiale gibt, die die Annahme erzwingen.
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:69)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit (Erzwinge die Annahme durch Potential)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
, µ(f ) = −l̄(C ), Annahme: ∀e ∈ E (Gf ) : l(e) > −µ(f )
In Gf = (V , Ef ) gelte l̄(C ) > −µ für jeden Kreis C .
Dann gibt es p : V 7→ Z mit:
l 0 (e) = l(e) + p(w ) − p(v ) > −µ für jede Kante e ∈ Ef .
Beweis:
Für e ∈ Ef setze: lµ (e) = l(e) + µ
Für v ∈ V bestimme Kantenzug P in Gf von beliebigen Knoten w zu v
mit minimalen Gewicht. Setze dann p(v ) = lµ (P).
Beachte: Das ist wohldefinert, denn aus l̄(C ) > −µ folgt lµ (C ) > 0 für
beliebigen Kreis C .
Damit gilt für jede Kante e = (v , w ) ∈ Ef : p(w ) 6 p(v ) + lµ (e).
Es folgt:
=
=
i
l(e)
Lemma (Existenz von p)
l 0 (e)
Z
l(e) + p(v ) − p(w )
lµ (e) + p(v ) − p(w ) − µ > −µ
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:70)
<> Walter Unger 17.1.2015 17:56
SS2014
Laufzeit pro Iteration
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
, µ(f ) = −l̄(C ), ∀e ∈ E (Gf ) : l(e) > −µ(f )
Ein Min-Mean-Cycle kann in Gf in Zeit O(nm) gefunden werden.
Beweis:
Setze für v ∈ V und k ∈ {0, . . . , n}:
dk (v ) seien die Kosten des günstigsten Kantenzugs nach v mit genau k
Kanten.
Es gilt d0 (v ) = 0 und
min
e=(w ,v )∈Ef
i
l(e)
Lemma (Karp, 1978)
dk+1 (v ) =
Z
(dk (w ) + l(e)).
Alle dk (v ) Werte können durch dynamische Programmierung in Zeit
O(nm) bestimmt werden.
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Mit Kostenfunktion
(2:71)
<> Walter Unger 17.1.2015 17:56
SS2014
Wert dem Min-Mean-Kreises
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
, µ(f ) = −l̄(C )
Der Wert l̄(C ) des Min-Mean-Kreises ist:
n−1
v ∈V j=0
dn (v ) − dj (v )
n−j
Beweis:
Sei C ein Min-Mean-Kreis.
Wenn alle Kantenkosten um δ erhöht werden, bleibt C Min-Mean-Kreis.
Der Wert von C erhöht sich auch um δ.
Also können wir alle Kantenkosten um δ verschieben bis l̄(C ) = 0 gilt.
Zeige nun: α = 0 gilt damit auch.
i
l(e)
Lemma
α = min max
Z
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
Z
Mit Kostenfunktion
(2:72)
<> Walter Unger 17.1.2015 17:56
SS2014
Wert dem Min-Mean-Kreises (Zeige α > 0)
P
l̄(C ) =
Sei v beliebig und P Kantenzug,
der bei v endet und Kosten dn (v ) hat.
l(C )
|C |
α = minv ∈V maxn−1
j=0
P muss Kreis C beinhalten.
Sei P 0 der verbleibende Kantenzug mit j Kanten ohne C .
Dann hat C n − j Kanten.
Wegen l(C ) > 0 gilt:
dn (v ) = l(P) = l(C ) + l(P 0 ) > l(P 0 ) > dj (v ).
Für jeden Knoten v gibt es j ∈ {1, . . . , n − 1} mit dn (v ) > dj (v ).
Damit α > 0.
Im Folgenden zeigen wir nun noch α 6 0.
=
e∈C
|C |
i
l(e)
µ(f ) = −l̄(C)
dn (v )−dj (v )
n−j
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:73)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Wert dem Min-Mean-Kreises (Zeige α 6 0)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
i
l(e)
s µ(f ) = −l̄(C )
Zeige: Es gibt Knoten w mit: dn (w ) 6 dj (w ) für alle
j ∈ {0, . . . , n − 1}
α = minv ∈V maxn−1
j=0
s0
dn (v )−dj (v )
n−j
Sei v Knoten des Min-Mean-Kreises C .
w
Sei P kürzester Kantenzug, der bei v endet. O.B.d.A.
enthält P keinen Kreis. Sei p < n die Anzahl der Kanten
in P
q2
Sei w der Knoten, der auf C von v aus nach n − p
Kanten liegt. Diesen Kantenzug nennen wir Q.
q1
r1
r2
v
Sei R der Weg von w zu v auf C mit r Kanten.
Sei j ∈ {0, . . . , n − 1} und S ein Kantenzug minimaler
Länge aus j Kanten, der an w endet.
p0
p 00
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:74)
Z
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Wert dem Min-Mean-Kreises (Zeige α 6 0)
P
l̄(C ) =
l(C )
|C |
=
e∈C
|C |
i
l(e)
s µ(f ) = −l̄(C )
Dann gilt:
dn (w ) 6 l(P) + l(Q) = dp (v ) + l(Q).
α = minv ∈V maxn−1
j=0
s0
und
dn (v )−dj (v )
n−j
w
dp (v ) 6 dj+r (v ) 6 dj (w ) + l(R).
q2
r1
es folgt:
dn (w ) 6 dj (w ) + l(R) + l(Q).
q1
Der Kantenzug Q R hat Kosten 0 (wegen l(C ) = 0).
Damit gilt: dn (w ) 6 dj (w ).
r2
v
p0
p
Dinitz mit Propagation
Spezielle Flüsse
Verbesserung der Laufzeit
Mit Kostenfunktion
(2:75)
<> Walter Unger 17.1.2015 17:56
SS2014
Gesamtverfahren
1
Berechne die dk (v ) Werte und bestimme α.
2
Addiere zu allen Kantenkosten um α.
Damit ist der Wert des Min-Mean-Kreises 0.
3
Transformiere die Kantenkosten um den Wert α wie in Lemma “Existenz
von p” beschrieben.
Die Potentiale ergeben sich aus den Werten dk (v ).
Alle Kantenkosten sind nun nicht negativ.
Die Kanten des Min-Mean-Cycle haben Wert 0.
4
Lösche alle Kanten mit Wert größer 0.
5
Suche mit Tiefensuche Kreis in den verbleibenden Kanten.
Z
i
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:76)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
Gesamtlaufzeit
Theorem
Der Mean-Cycle-Algorithmus hat eine Laufzeit von O(m2 · n2 · log(nL)).
Beweis, siehe obige Überlegungen:
n log(nL) + 1 Phasen (L Maximum der absoluten Kantenkosten).
m Iterationen pro Phase.
O(nm) Laufzeit pro Phase.
Theorem
Der Mean-Cycle-Algorithmus hat eine Laufzeit von O(m3 · n2 · log n).
SS2014
Z
i
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:77)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Literatur
Ahuja, Magnanti, Orlin: Network Flows: Theory, Algorihms, and
Applications, Prentice Hall, 1993.
Cormen, Leiserson, Rives: Introduction to Algorithms, First Edition, MIT
Press, 1990.
Cormen, Leiserson, Rives: Introduction to Algorithms, Second Edition,
MIT Press, 2001.
Ottmann, Widmayer: Algorithmen und Datenstrukturen. BI-Wiss.-Verl.
1990.
Z
i
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:78)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Fragen(Flüsse)
Was ist die Laufzeit der Ford-Fulkerson Methode?
Wann hat die Ford-Fulkerson Methode die maximale Laufzeit?
Warum liefert die Ford-Fulkerson Methode den maximalen Fluss?
Was ist die Laufzeit der Ford-Fulkerson Methode mit Breitensuche?
Wie ist die Idee des Min-Cut-Max-Flow Theorems?
Wie wird der Schnitt zu dem maximalen Fluss gefunden?
Was ist die Idee des Algorithmus von Dinitz?
Wie funktioniert die Forward-Propagation?
Wie ist die Laufzeit vom Algorithmus von Dinitz?
Wie ist die Begründung zur Laufzeit vom Algorithmus von Dinitz?
Z
x
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:79)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
SS2014
Fragen(Flüsse)
Wie bestimmt man Flüsse mit einem Mindestfluss auf den Kanten?
Wie bestimmt man Flüsse mit einem Mindestfluss auf den Kanten, wo
aber auch ein leerer Fluss erlaubt ist?
Wie ist die Idee der Algorithmen zu kostenminimalen Flüssen?
Was ist die Laufzeit der Algorithmen zu kostenminimalen Flüssen?
Gebe die Idee zum Beweis der Laufzeit der Algorithmen zu
kostenminimalen Flüssen?
Z
x
Dinitz mit Propagation
Verbesserung der Laufzeit
Spezielle Flüsse
(2:80)
Mit Kostenfunktion
<> Walter Unger 17.1.2015 17:56
Legende
n : Nicht relevant
g : Grundlagen, die implizit genutzt werden
i : Idee des Beweises oder des Vorgehens
s : Struktur des Beweises oder des Vorgehens
w : Vollständiges Wissen
SS2014
Z
x
Herunterladen