Netzwerke
• Stromnetz
• Telefonnetz
• Warenfluss zwischen Herstellern und
Konsumenten
• Verkehr (Straßen, Züge, Flugzeuge, ...)
Kapitel 5
Oft wollen wir Güter von einem
Punkt zu einem anderen schicken
Ziel
Flüsse in Netzwerken
• So viel/effizient/billig wie möglich
Maximale Flüsse (diese Vorlesungseinheit)
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Technische Universität Wien
1
2
Institut für Computergraphik und Algorithmen
Netzwerke
Beispielnetzwerk N
Gerichteter Graph mit
• Kapazitäten für alle Kanten
• zwei speziellen Knoten: Quelle s und Senke t
Maximales Flussproblem:
p
s
• schicke maximal großen Fluss von s nach t
• ohne die Kapazitätsgrenzen zu verletzen
Institut für Computergraphik und Algorithmen
12
St. Pölten
20
16
Salzburg
4
9
10
Klagenfurt
3
Mathematische Formulierung
Ein Netzwerk N = (V, E, c, s, t) besteht aus
• einem gerichteten Graphen (V, E)
mit n Knoten und m gerichteten Kanten (Bögen),
14
t
Wien
7
13
Klassisches Problem in der
Algorithmenforschung
Bsp.: Ölproduktion
Technische Universität Wien
Linz
4
Graz
Technische Universität Wien
Institut für Computergraphik und Algorithmen
4
Mathematische Formulierung
Ein Fluss f ist eine reellwertige Funktion
f: V × V → R mit den drei Eigenschaften
• den oberen Schranken (Kapazitäten) c: V × V → R≥ 0,
• zwei ausgezeichneten Knoten: Quelle s und Senke t.
t
Vereinbarungen:
• c(e) = 0 ∀ e ∈ (V × V) \ E
• keine isolierten Knoten
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Sein Wert |f| ist die totale Flussmenge, die t
erreicht, also
f ist maximal, wenn es kein g mit |g| > |f| gibt
5
Technische Universität Wien
Institut für Computergraphik und Algorithmen
6
1
Restgraph
Bsp.: Ein Fluss f in N
Linz
12/12
Sei f ein Fluss in N. Die Restkapazität einer
Kante e bezüglich f ist
St. Pölten
15/20
11/16
Salzburg
1/4
4/9
10
Wien
7/7
4/4
11/14
Technische Universität Wien
7
Institut für Computergraphik und Algorithmen
Residualgraph für f
12/12
Linz
St. Pölten
15/20
11/16
Salzburg
1/4
4/9
10
Klagenfurt
Linz
11
Salzburg
5
3 11
12
5
8
7/7
Klagenfurt
11/14
4/4
St. Pölten
5
Wien
7
11
Salzburg
3 11
Institut für Computergraphik und Algorithmen
10
Klagenfurt
12
5
Wien
7/7
4/4
11/14
Graz
St. Pölten
5
15
4
Wien
7
3
11
Graz
Technische Universität Wien
10
Institut für Computergraphik und Algorithmen
Flusserhöhung
Beispiel
Push um x auf einer Kante e = (u,v):
Push um x = 4 auf den roten Kanten
• erhöhe f(u,v) um x
• erniedrige f(v,u) um x
Linz
Sei P s-t-Pfad in Gf
Sei x minimale Restkapazität auf P
push(e,x) für alle e auf P
Neuer Fluss f ’ mit Wert |f ’| = |f| + x
12/12
St. Pölten
15/20
19
11/16
Salzburg
1/4
04/9
10
7/7
128/13
Klagenfurt
Institut für Computergraphik und Algorithmen
4/9
4
Klagenfurt
9
15/20
1/4
8/13
8
5
Graz
Technische Universität Wien
Technische Universität Wien
Salzburg
Linz
5
St. Pölten
11/16
Graz
4
3
11
Wien
12/12
Linz
Beispiel:
augmentierender
Pfad
15
4
8
Institut für Computergraphik und Algorithmen
8/13
5
„um wieviel kann
ich f auf e
erhöhen, ohne die
Kapazität c(e) zu
überschreiten?“
Ein s-t-Pfad in Gf heißt
augmentierender Pfad
Graz
Technische Universität Wien
e ist Restkante
e ist saturiert
Der Graph Gf = (V, Ef) ist
der Graph der Restkanten
(Restgraph, Residualgraph)
8/13
Klagenfurt
• rf (e) > 0
• rf ((e)) = 0
11
11/14
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Wien
4/4
Graz
12
2
Korrektheit
Schnitt
Ist f ’ ein gültiger Fluss?
Ein Schnitt ist eine Knotenmenge
• Schiefsymmetrie?
Durch Definition der push-Operation
• Kapazitätsbeschränkung?
Durch Definition des Restgraphen
• Flusserhaltung
Für innere Knoten wird sowohl der eingehende
als auch der ausgehende Fluss um x erhöht,
die Bilanz bleibt gleich (Null).
Die Kapazität eines Schnittes S in N ist
Technische Universität Wien
13
Institut für Computergraphik und Algorithmen
Lemma
Kapazitätsbeschränkung
Flusserhaltung
Gilt
14
Institut für Computergraphik und Algorithmen
Max-Flow-Min-Cut-Theorem
Kein Fluss f in N kann einen Wert haben,
der die Kapazität eines beliebigen Schnittes S
übersteigt.
Beweis:
Technische Universität Wien
Sei f ein Fluss. Die folgenden Bedingungen
sind äquivalent:
(1) Es gibt einen Schnitt S, den f saturiert
(2) Fluss f ist maximal
(3) Es gibt keinen augmentierenden Pfad
f im
Restgraphen
[Ford/Fulkerson 1956,
Elias/Feinstein/Shannon 1956]
Beweis: (Ringschluss)
Schiefsymmetrie
(1) → (2): Für jeden Fluss g gilt
, dann saturiert f den Schnitt S.
(2) → (3): Wenn es einen augmentierenden Pfad P gäbe, könnten wir
entlang P augmentieren,
Technische Universität Wien
Institut für Computergraphik und Algorithmen
15
Max-Flow-Min-Cut-Theorem
Sei f ein Fluss. Die folgenden Bedingungen sind äquivalent:
(1) Es gibt einen Schnitt S, den f saturiert
(2) Fluss f ist maximal
(3) Es gibt keinen augmentierenden Pfad im Restgraphen
1
Technische Universität Wien
Institut für Computergraphik und Algorithmen
16
Max-Flow-Min-Cut-Theorem
Warum “Max-Flow-Min-Cut”?
• Wenn f maximal ist, muss S minimal sein.
Gäbe es kleineren Schnitt S´, wäre
Beweis: (Ringschluss)
(3) → (1): Sei S die Menge aller Knoten, die in Gf von
s aus erreicht werden können.
Klar: s ∈ S und t ∉ S, also ist S Schnitt.
Nach Def. von S gilt für alle e = (u, v) mit u ∈ S und
v ∉ S, dass f(e) = c(e).
Damit ist S von f saturierter Schnitt.
Technische Universität Wien
Institut für Computergraphik und Algorithmen
17
Die Angabe eines saturierten Schnittes ist
ein Beweis für die Maximalität eines Flusses
(Dualitätstheorie).
Technische Universität Wien
Institut für Computergraphik und Algorithmen
18
3
Die Ford-Fulkerson-Methode
Maximaler Fluss
Beweis: Wert gleich minimalem Schnitt
Linz
s
12
St. Pölten
19/20
10/16
Salzburg
4
9
2/10
Klagenfurt
Wien
7
13
11/14
t
Das MCMF-Theorem sagt noch nicht, dass
jedes Netzwerk einen maximalen Fluss zulässt,
legt aber einen konstruktiven Beweis nahe
(Schritt (3) ⇒ (2)).
(2))
Der entsprechende Algorithmus heißt
Ford-Fulkerson-Methode:
Beginne mit dem Nullfluss (ist Fluss!) und
augmentiere, solange augmentierende Pfade im
Residualgraphen existieren.
4
Graz
Technische Universität Wien
19
Institut für Computergraphik und Algorithmen
Die Ford-Fulkerson-Methode
f0 := Nullfluss; i := 0;
while (∃ s-t-Pfad P in Gfi) do {
x = min.
min Restkapazität auf P;
fi+1 := fi “+” x;
i = i + 1;
}
Technische Universität Wien
Residualgraph für f0
12
16
Salzburg
4 10
9
Salzburg
4 10
14
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Wien
7
14
Graz
Technische Universität Wien
22
Institut für Computergraphik und Algorithmen
Fluss f1
Linz
4/12
St. Pölten
20
4/16
Wien
Salzburg
4
4/9
10
7
13
4
Klagenfurt
20
4
Klagenfurt
20
13
9
St. Pölten
13
St. Pölten
7
12
16
Residualgraph für f0
Linz
20
Institut für Computergraphik und Algorithmen
Linz
21
Institut für Computergraphik und Algorithmen
Technische Universität Wien
Klagenfurt
Graz
23
4/14
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Wien
4/4
Graz
24
4
Residualgraph für f1
8
Linz
12
Salzburg
4
4 10
4
5
4
Residualgraph für f1
St. Pölten
20
12
Wien
7
13
Klagenfurt
Klagenfurt
Fluss f2
7/10
13
Wien
5
Salzburg
Graz
27
Institut für Computergraphik und Algorithmen
11
11 3
5
Salzburg
11
11 3
4
Klagenfurt
4
3
11
Technische Universität Wien
Institut für Computergraphik und Algorithmen
5
4
Wien
7
3
Graz
28
Institut für Computergraphik und Algorithmen
Linz
12/12
St. Pölten
15/20
11/16
Wien
Salzburg
1/4
4/9
10
7/7
8/13
4
Klagenfurt
13
Fluss f3
13
7
13
St. Pölten
7
11
Technische Universität Wien
St. Pölten
7
5
4
4
Residualgraph für f2
8
26
13
4/4
Technische Universität Wien
Linz
Graz
8
Linz
7/7
11/14
10
Institut für Computergraphik und Algorithmen
St. Pölten
4/9
Klagenfurt
Wien
7
Technische Universität Wien
7/20
4
4
20
Residualgraph für f2
11/16
Salzburg
5
4
25
Institut für Computergraphik und Algorithmen
4/12
4 10
St. Pölten
4
Graz
4
Technische Universität Wien
Linz
Salzburg
4
4
13
4
10
8
Linz
Klagenfurt
Graz
29
11/14
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Wien
4/4
Graz
30
5
Residualgraph für f3
Linz
5
3 11
5
4
8
5
St. Pölten
15
11
Salzburg
12
Fluss f4
5
3
11
Salzburg
1
3 11
9
Klagenfurt
32
Korrektheit: (ohne Beweis)
Algorithmus terminiert mit maximalem Fluss f,
wenn Kapazitäten ganzzahlig.
Es folgt,
folgt dass dann auch f ganzzahlig ist (was
nicht heißt, dass es keinen nicht-ganzzahligen
Fluss g mit |g| = |f| gibt).
1
Wien
7
12
Graz
Ford-Fulkerson
St. Pölten
19
4/4
11/14
Institut für Computergraphik und Algorithmen
Residualgraph für f4
5
Wien
7/7
Technische Universität Wien
31
Institut für Computergraphik und Algorithmen
12
0/9
10
Klagenfurt
Technische Universität Wien
Linz
1/4
12/13
Graz
11
19/20
Salzburg
Wien
7
St. Pölten
11/16
4
Klagenfurt
12/12
Linz
4
3
11
Technische Universität Wien
Graz
Institut für Computergraphik und Algorithmen
Technische Universität Wien
33
Ford-Fulkerson
Ford-Fulkerson: worst case
Analyse:
Laufzeit hängt davon ab, wie man die
augmentierenden Pfade wählt. Bei Wahl eines
beliebigen Pfades ergibt sich eine Laufzeit von
O(|E|·|f|) wobei f der maximale Fluss ist,
O(|E|·|f|),
ist
denn die Schleife benötigt Zeit O(|E|)
f0
a
0/106
s
und wird höchstens |f| Mal ausgeführt
35
a
0/106
106
106
t
s
0/106
0/106
(ein augmentierter Fluss muss mindestens um 1 größer
sein).
Institut für Computergraphik und Algorithmen
Gf 0
0/1
(finde Pfad mit DFS oder BFS)
Technische Universität Wien
34
Institut für Computergraphik und Algorithmen
b
Technische Universität Wien
Institut für Computergraphik und Algorithmen
t
1
106
106
b
36
6
Ford-Fulkerson: worst case
f1
a
1/106
s
Ford-Fulkerson: worst case
Gf 1
f2
a
a
0/106
t
1/1
s
1
t
1
106-1
1/106
0/106
1/106
106
106-1
106
b
1
b
s
Gf 2
a
1/106
1
106-1
t
0/1
s
1/106
1/106
106-1
1
106-1
1
1
106-1
b
t
1
b
|f2| = 2 ... |f| = 2 · 106
|f1| = 1
Technische Universität Wien
Technische Universität Wien
37
Institut für Computergraphik und Algorithmen
38
Institut für Computergraphik und Algorithmen
Verbesserung
Preflow-Push-Algorithmus
Kluge Auswahl der augmentierenden
Pfade
Z.B.: Wähle immer Pfad mit möglichst
wenigen
i
K
Kanten
t
Goldberg/Tarjan 1988. Laufzeit: O(n2m)
Ein Präfluss f ist eine reellwertige Funktion
f: V × V → R mit den drei Eigenschaften
¾Edmonds-Karp-Algorithmus
¾Laufzeit: O(nm2)
Überschuss an
Knoten v
Technische Universität Wien
Technische Universität Wien
39
Institut für Computergraphik und Algorithmen
Preflows in N
Preflows in N
Linz
12
+16
St. Pölten
s
Salzburg
Linz
20
16
4
9
10
Klagenfurt
14
Technische Universität Wien
Institut für Computergraphik und Algorithmen
12
St. Pölten
20
16
t
Wien
7
13
40
Institut für Computergraphik und Algorithmen
s
Salzburg
4
9
10
Klagenfurt
Graz
41
Wien
7
13
4
14
Technische +13
Universität Wien
Institut für Computergraphik und Algorithmen
t
4
Graz
42
7
Preflows in N
Linz
12
Preflows in N
+12
St. Pölten
20
16
s
Salzburg
Linz
4
9
4/10
13
Klagenfurt
14
Technische +17
Universität Wien
s
Salzburg
4
s
Linz
9
Klagenfurt
14
+3
Technische Universität
Wien
s
Salzburg
Salzburg
+14
St. Pölten
Linz
14
+3
Technische Universität
Wien
Institut für Computergraphik und Algorithmen
+10
12
46
St. Pölten
19/20
16
t
Wien
7
13
4
Graz
Institut für Computergraphik und Algorithmen
+7
4/10
Wien
7
14
t
Preflows in N
9
Klagenfurt
4/10
+3
Technische Universität
Wien
45
12/20
4
9
Klagenfurt
Graz
16
s
St. Pölten
12/20
4
Preflows in N
Linz
12
13
4
Institut für Computergraphik und Algorithmen
12
44
16
t
Wien
7
13
4
Graz
Institut für Computergraphik und Algorithmen
St. Pölten
4/10
Wien
7
14
t
Preflows in N
12/20
4
4/10
Technische +17
Universität Wien
43
16
Salzburg
9
Klagenfurt
Graz
Preflows in N
12
12/20
13
4
Institut für Computergraphik und Algorithmen
Linz
St. Pölten
16
t
Wien
7
12
s
Salzburg
4
9
4/10
Klagenfurt
Graz
+3
47
Wien
7
13
4
14
+3
Technische Universität
Wien
Institut für Computergraphik und Algorithmen
t
4
Graz
+3
48
8
Preflows in N
Linz
12
+6
St. Pölten
Salzburg
Linz
19/20
16
s
Preflows in N
4
9
4/10
13
Klagenfurt
11/14
+6
Technische Universität
Wien
t
s
s
Institut für Computergraphik und Algorithmen
9
Klagenfurt
11/14
50
• innere Knoten haben Vorratsbecken
• schicke
hi k Fluss
Fl
von s nach
h t und
d leere
l
alle
ll B
Becken
k
• jeder Knoten hat Höhe
t
-
Wien
7
13
4
Graz
Wie schicken wir Flüsse planvoll durch das
Netz?
Intuition
St. Pölten
2/10
Wien
7
11/14
t
Preflow-Push-Algorithmus
19/20
4
2/10
Technische Universität Wien
49
= maximaler Fluss. Beweis:
Salzburg
4
9
Klagenfurt
Graz
10/16
19/20
13
Preflows in N
12
Salzburg
4
Institut für Computergraphik und Algorithmen
Linz
St. Pölten
16
Wien
7
12
4
Am Anfang: d(s) = n, d(t) = 0, d(v) = 0 ∀ v ∈ V \ {s, t}
Fluss fließt nur nach unten
Wenn das nicht mehr geht → hebe Becken an
Kann nicht alles nach t fließen, wird es zurück zur Quelle
geschickt
Graz
Technische Universität Wien
Technische Universität Wien
51
Institut für Computergraphik und Algorithmen
Institut für Computergraphik und Algorithmen
Preflow-Push-Algorithmus
52
Preflow-Push-Algorithmus
Modelliere Höhe über Beschriftung d: V → N0
Beschriftung legal ⇔
d(s) = n, d(t) = 0 und d(v) ≥ d(u) – 1 für alle
Restkanten (u,v)
D.h. Restkanten dürfen abfallen, aber nicht zu
steil
u
>1
1
u
v 9
v 9
v 9
u
u
v
Restkante wählbar ⇔ d(v) = d(u) – 1
Knoten u aktiv ⇔ u ∈ V \ {s, t} und ef(u) > 0
saturierende und
nicht-saturierende
nicht
saturierende
Pushes
1
wählbar
Technische Universität Wien
Institut für Computergraphik und Algorithmen
53
Technische Universität Wien
Institut für Computergraphik und Algorithmen
54
9
Preflow-Push-Algorithmus
d(s) = n; for all v ∈ V \ {s}: d(v) = 0;
for all (u, v) ∈ E: f(u,v) = 0;
Initialifor all (s, v) ∈ E {
sierung
f(s,v)
f(
, ) = c(s,v);
( , )
f(v, s) = -f(s, v);
}
while (∃ aktiver Knoten u) {
if (∃ (u, v) wählbar) then push (u, v);
else lift (u);
}
Technische Universität Wien
Institut für Computergraphik und Algorithmen
55
Preflow-Push-Algorithmus
Lemma: Die Beschriftung d ist stets legal
und f immer ein Präfluss.
Beweis:
• Nach Initialisierung
g9
• Danach nur Operationen
- Lift (u): Präfluss, da Fluss sich nicht ändert
Legalität bleibt erhalten, da keine Kante wählbar
- Push (u,v): Präfluss, da neu entstehende Überschüsse ≥ 0 sind
Legalität: (u,v) fällt hinaus → push saturierend → 9
(v,u) kann hinzukommen, steigt aber an → 9
Technische Universität Wien
Institut für Computergraphik und Algorithmen
57
Preflow-Push-Algorithmus
Lemma: Wenn der Algorithmus terminiert,
ist f ein maximaler Fluss in N.
• Alg. terminiert → es existieren keine aktiven
Knoten
• → f ist Fluss
• f ist maximal wegen der letzten beiden Lemmata
und des Max-Flow-Min-Cut-Theorems
partielle Korrektheit! Jetzt zur Laufzeit...
Institut für Computergraphik und Algorithmen
Nach der Initialisierung verlaufen Restkanten
nur auf Höhe 0
Nicht offensichtlich, dass Algorithmus
terminiert
Wir zeigen
• Partielle Korrektheit
(wenn Alg. terminiert, ist Ergebnis korrekt)
(3 Lemmata)
• Laufzeitbeweis
(5 Lemmata)
Technische Universität Wien
Institut für Computergraphik und Algorithmen
56
Preflow-Push-Algorithmus
Lemma: Sei f ein Präfluss mit legaler Beschriftung d. Dann gibt es keinen augmentierenden Pfad im Restgraphen.
Beweis:
Be eis
• Sei P augmentierender Pfad von s nach t.
• P hat ≤ n – 1 Kanten.
• Da d(s) = n und d(t) = 0 und keine Kante steil
abfallen darf (d ist legal) hat P ≥ n Kanten
• Widerspruch 1
Technische Universität Wien
Institut für Computergraphik und Algorithmen
58
Preflow-Push-Algorithmus
Lemma: Sei f Präfluss und u aktiv. Dann
existiert ein u-s-Pfad im Restgraphen.
Beweis:
Beweis:
Technische Universität Wien
Preflow-Push-Algorithmus
59
• Sei T Menge der von u aus erreichbaren Knoten in
Gf. Dann gilt
• Warum ≤ 0? Weil kein f(w,v) > 0 sein kann, sonst
wäre (v,w) Restkante und w ∈ T, 1
• Da u ∈ T und ef(u) > 0, muss v mit ef(v) < 0 in der
Summe enthalten sein → v = s → s ∈ T
Technische Universität Wien
Institut für Computergraphik und Algorithmen
60
10
Preflow-Push-Algorithmus
Preflow-Push-Algorithmus
Lemma: Für jeden Knoten u ∈ V gilt stets
d(u) ≤ 2n - 1.
Lemma: Es gibt höchstens 2n2 lift-Operationen.
Beweis:
•
•
•
•
•
• Folgt direkt aus dem letzten Lemma.
• n Knoten,, d(n)
( ) ≤ 2n – 1,, d wird nur erhöht
O.B.d.A.:
O
B d A : u aktiv
Es gibt u-s-Pfad P in Gf
P hat ≤ n Kanten und d(s) = n
Keine steilen Kanten (d legal)
→ u höchstens auf Höhe n + n – 1 = 2n - 1
Technische Universität Wien
Institut für Computergraphik und Algorithmen
61
Preflow-Push-Algorithmus
Lemma: Es gibt höchstens nm saturierende Pushes.
Beweis:
• Zwischen 2 saturierenden Pushes über (u,v) muss
ein Push über (v,u) erfolgen.
• Dazu muss sowohl d(u) als auch d(v) um 2
ansteigen
• Da d(u) ≤ 2n-1, kann das höchstens (n-1)-mal
passieren → ≤ n saturierende Pushes über eine
Kante
• → insgesamt ≤ nm saturierende Pushes
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Beweis:
63
Preflow-Push-Algorithmus
Lemma: Es gibt höchstens 4n2m nichtsaturierende Pushes.
• Bei einem saturierenden Push über (u,v) kann
höchstens v zu A hinzukommen, also
Technische Universität Wien
Institut für Computergraphik und Algorithmen
62
Preflow-Push-Algorithmus
Lemma: Es gibt höchstens 4n2m nichtsaturierende Pushes.
Beweis:
• Sei A die zeitlich variierende Menge aktiver Knoten
• Betrachte
(am Anfang 0, nie negativ)
• Nicht-saturierender Push über (u,v) entfernt u aus
A und fügt eventuell v hinzu. Sei Φ‘ das neue
Potenzial. Es gilt
Technische Universität Wien
Institut für Computergraphik und Algorithmen
64
Preflow-Push-Algorithmus
Satz: Der generische Preflow-Push-Algorithmus
terminiert nach O(n2m) Pushes und Lifts mit
einem maximalen Fluss.
Beweis:
• → insgesamt (letztes Lemma) maximale Erhöhung
von Φ um 2n2m durch saturierende Pushes
• Alle Lifts erhöhen Φ um maximal 2n2
• Nur nicht-saturierende Pushes erniedrigen Φ →
es gibt höchstens 2n2m+2n2 davon
Technische Universität Wien
Institut für Computergraphik und Algorithmen
65
• Die letzten acht Lemmata.
Technische Universität Wien
Institut für Computergraphik und Algorithmen
66
11