VL-19: Maximaler Fluss
(Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger
SS 2017, RWTH
DSAL/SS 2017 VL-19: Maximaler Fluss 1/52
Organisatorisches
• Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15–12:00
• Übungen: Tim Hartmann, David Korzeniewski, Björn Tauer Email:dsal-i1@algo.rwth-aachen.de
• Webseite:http://algo.rwth-aachen.de/Lehre/SS17/DSA.php
• Nächste Vorlesung:
Dienstag, Juli 11, Aula 1, zur gewohnten Zeit
DSAL/SS 2017 VL-19: Maximaler Fluss 2/52
Maximaler Fluss
• Flussnetzwerke
• Ford-Fulkerson Algorithmus
• Residuale Netzwerke
• Minimaler Schnitt
• Edmonds-Karp Algorithmus
Beispiel: Maximaler Fluss
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 5/52
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 6/52
Beispiel: Maximaler Fluss Beispiel: Maximaler Fluss
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 9/52
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 10/52
Beispiel: Maximaler Fluss Beispiel: Maximaler Fluss
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 13/52
Beispiel: Maximaler Fluss
DSAL/SS 2017 VL-19: Maximaler Fluss 14/52
Beispiel: Eisenbahnnetzwerk
Fig. 2.From Harris and Ross [11]: Schematic diagram of the railway network of the Western Soviet Union and Eastern European countries, with a maximum flow of value 163,000 tons from Russia to Eastern Europe, and a cut of capacity 163,000 tons indicated as “The bottleneck”
Grundlegende Definitionen
Graphenproblem: Maximaler Fluss
Problem: Maximaler Fluss
Eingabe: 1. Eine Strassenkarte, auf der dieKapazitätender Strassen eingezeichnet sind
2. eine Quelle, und 3. eine Senke.
Ausgabe: Die maximale Rate, mit der Material (= Zuschauer) von der Quelle bis zur Senke (= Stadion) transportiert werden kann, ohne die Kapazitätsbeschränkungen der Strassen zu verletzen.
DSAL/SS 2017 VL-19: Maximaler Fluss 17/52
Definition: Flussnetzwerk
EinFlussnetzwerk G= (V,E,c)ist ein digraph(V,E)zusammen mit
I c:V ×V →R≥0 dieKapazitätsfunktionsodass:
I (u,v)∈E dannc(u,v)≥0
I (u,v)6∈E dannc(u,v) =0
I s,t ∈V, dieQuelles undSenket des Flussnetzwerkes
I Jeder Knoten v∈V liegt auf einem Pfad von Quelles zur Senket
s t
I In Quelle wird produziert
I In Senke wird verbraucht
I Kanten sind Wasserrohre
I Kapazität = max Durchsatzrate
DSAL/SS 2017 VL-19: Maximaler Fluss 18/52
Definition: Fluss
EinFlussist Funktionf:V ×V →Rmit folgenden Eigenschaften:
Beschränkung: Für u,v ∈V gilt: f(u,v)≤c(u,v).
Asymmetrie: Für u,v ∈V gilt: f(u,v) =−f(v,u).
Flusserhaltung: Für u∈V \ {s,t}gilt: X
v∈V
f(u,v) =0.
Der Wertf(u,v)ist der Fluss vom Knotenuzum Knotenv.
I Der Fluss zwischen zwei Knoten darf die Kapazitätsbeschränkung nicht überschreiten
I Der Fluss vonunachv ist der negative Fluss vonv nachu
I Gesamter positiver Flussineinen Knoten hinein = gesamter positiver Flussausdem Knoten heraus (vgl Kirchhoffsche Regel für Strom)
Definition: Wert eines Flusses
Definition (Wert eines Flusses)
DerWert|f|des Flusses f ist der Gesamtfluss aus der Quelles heraus:
|f| = X
v∈V
f(s,v).
Wegen der Flusserhaltungsgleichungen gilt auch:
Der Wert|f|des Flusses f ist der Gesamtfluss in die Senket hinein:
|f| = X
v∈V
f(v,t).
Darstellung von Flüssen
s
A
B
C
D
t 5/16
4/13
3/10
4 9
7/14 6/7 2/12
8/20
1/4
s
A
B
C
D
t 11/16
8/13
10
1/4 4/9
11/14 7/7 12/12
15/20
4/4
I Wir beschriften Kanten mitf(u,v)/c(u,v), fallsf(u,v)>0.
I Negative Flüssef(u,v)<0 werden nicht explizit angegeben.
I Der eingezeichnete Flussf hat den Wert|f|=5+4=9.
I Der alternative rote Flussf0 hat den Wert |f0|=11+8=19.
DSAL/SS 2017 VL-19: Maximaler Fluss 21/52
Definition: Maximaler Fluss
EinmaximalerFluss ist ein Fluss mit grösstmöglichem Wert.
Problem (Maximaler Fluss)
Finde einenmaximalen Flussin einem gegebenen Flussnetzwerk G .
Beispiel (Anwendungen)
I Wie gross ist der maximale Datendurchsatz zwischen zwei Computern in einem Netzwerk?
I Wie kann der Verkehr in einem Strassennetz so geleitet werden, dass möglichst viele Autos in einer gegeben Zeitspanne ein Ziel erreichen?
I Wie viele Leitungen müssen zerstört sein, damit zwei Computer nicht mehr miteinander kommunizieren können?
I Wie stark sind zwei Gruppen von Facebook-Nutzern miteinander vernetzt?
DSAL/SS 2017 VL-19: Maximaler Fluss 22/52
Beispiel: Ein maximaler Fluss
s
A
B
C
D
t 14/16
10/13
2/10 4
1/9
11/14 7/7 12/12
20/20
4/4
I Der maximale Fluss in diesem Beispiel hat den Wert|f|=24.
I Es kann verschiedene maximale Flüsse geben.
Variante: Mehrere Quellen und Senken
s3 t3
s2 t2
s1 t1
10 5
6 3
10 5
6 3
10 5
s t
∞
∞
∞
∞
∞
∞
Variante mit mehreren Quellen und Senken:
Diese Variante kann durch Einführen von einer neuen Superquelle und einer neuen Supersenke in ein gewöhnliches Flussnetzwerk (mit einer Quelle und einer Senke) überführt werden.
Definition: Flüsse zwischen Knotenmengen
Notationen
f(x,Y) = X
y∈Y
f(x,y) fürY ⊆V f(X,y) = X
x∈X
f(x,y) fürX ⊆V f(X,Y) = X
x∈X
X
y∈Y
f(x,y) fürX,Y ⊆V
Eigenschaften von Flüssen zwischen Mengen
Für jeden Flussf des FlussnetzwerkesG= (V,E,c)gilt:
1. f(X,X) =0 fürX ⊆V
2. f(X,Y) =−f(Y,X) fürX,Y ⊆V
3. f(X ∪Y,Z) =f(X,Z) +f(Y,Z) fürX,Y,Z ⊆V :X∩Y =∅ 4. f(Z,X∪Y) =f(Z,X) +f(Z,Y) fürX,Y,Z ⊆V :X∩Y =∅
DSAL/SS 2017 VL-19: Maximaler Fluss 25/52
Beweis: f ( X , X ) = 0
f(X,X) = X
x1∈X
X
x2∈X
f(x1,x2)
= 1
2
X
x1∈X
X
x2∈X
f(x1,x2) +X
x1∈X
X
x2∈X
f(x1,x2)
= 1
2
X
x1∈X
X
x2∈X
f(x1,x2) +X
x1∈X
X
x2∈X
f(x2,x1)
= 1
2 X
x1∈X
X
x2∈X
f(x1,x2) +f(x2,x1)
= 1
2 X
x1∈X
X
x2∈X
f(x1,x2)−f(x1,x2)
= 0.
Für den Beweis benötigen wir lediglich die Eigenschaft der Asymmetrie.
DSAL/SS 2017 VL-19: Maximaler Fluss 26/52
Eingehender Fluss in Senke
Wie gross ist der an der Senke eingehende Fluss?
|f| = f(s,V) = f(V,t) Beweis:
f(s,V) =f(V,V)−f(V − {s},V) | Eigenschaft 3
=−f(V − {s},V) | Eigenschaft 1
=f(V,V − {s}) | Eigenschaft 2
=f(V,t) +f(V,V − {s,t}) | Eigenschaft 4
=f(V,t). | Flusserhaltung
Ford-Fulkerson
Ford-Fulkerson Methode (1956): Grundidee
s t
12/16
13
10 4
9
14
7 12/12
12/20
4
1. Suche einen PfadP von s nacht.
2. Setze den Fluss der Kanten inP auf die kleinste Kapazität inP.
3. Suche einen PfadP0 von s nacht aus Kanten mit freier Kapazität.
4. Erhöhe Fluss auf Kanten inP0 um die kleinste Restkapazität in P.
5. Wiederhole 3. und 4. bis es keinen PfadP mehr gibt.
DSAL/SS 2017 VL-19: Maximaler Fluss 29/52
Residuale Netzwerke (1)
Intuition
Residuales Netzwerk = Netzwerk minus momentaner Fluss
Definition (Residuales Netzwerk G
f)
Es seiG = (V,E,c)ein Flussnetzwerk und es seif ein Fluss.
DasResiduale NetzwerkGf = (V,Ef,cf)fürG undf ist gegeben durch:
I cf(u,v) =c(u,v)−f(u,v)und
I Ef ={(u,v)∈V ×V |cf(u,v)>0}
• cf(u,v)ist dieRestkapazitätvon Kante(u,v)inG zu Flussf.
• Ef sind die Kanten die noch Fluss aufnehmen können.
DSAL/SS 2017 VL-19: Maximaler Fluss 30/52
Residuales Netzwerk (2)
Definition (Residuales Netzwerk G
f)
Es seiG= (V,E,c)ein Flussnetzwerk undf ein Fluss. Dann ist Gf = (V,Ef,cf)dasResiduale NetzwerkfürG und f mit:
I cf(u,v) =c(u,v)−f(u,v)(Restkapazität)
I Ef ={(u,v)∈V ×V |cf(u,v)>0}.
s
A
B
C
D
t
s
A
B
C
D
t
16/16
13
4/10 4
4/9
14 7 12/12
16/20
4
FlussnetzwerkG Residuales Netzwerk Gf
Residuales Netzwerk (2)
Definition (Residuales Netzwerk G
f)
Es seiG = (V,E,c)ein Flussnetzwerk undf ein Fluss. Dann ist Gf = (V,Ef,cf)dasResiduale NetzwerkfürG undf mit:
I cf(u,v) =c(u,v)−f(u,v)(Restkapazität)
I Ef ={(u,v)∈V ×V |cf(u,v)>0}.
s
A
B
C
D
t s
A
B
C
D
t 16/16
13
4/10 4
4/9
14 7 12/12
16/20
4 13
16 6 8
5
14 4
4 12
7
4 16
Flussnetzwerk G Residuales NetzwerkGf
Residuales Netzwerk (3)
Definition (Residuales Netzwerk G
f)
Es seiG= (V,E,c)ein Flussnetzwerk undf ein Fluss. Dann ist Gf = (V,Ef,cf)dasResiduale NetzwerkfürG und f mit:
I cf(u,v) =c(u,v)−f(u,v)(Restkapazität)
I Ef ={(u,v)∈V ×V |cf(u,v)>0}.
Kanten im Residualen Netzwerk
I Fallsf(u,v)<c(u,v), dann folgtcf(u,v)>0 und(u,v)∈Ef I Fallsf(u,v)>0, dannf(v,u)<0, und damitcf(v,u)>0 und
(v,u)∈Ef
I Falls weder(u,v)6∈E noch(v,u)6∈E, danncf(u,v) =cf(v,u) =0 Also|Ef| ≤ 2·|E|.
DSAL/SS 2017 VL-19: Maximaler Fluss 32/52
Augmentierende Pfade
s
A
B
C
D
t s
A
B
C
D
t 16/16
13
4/10 4
4/9
14 7 12/12
16/20
4 13
16
6 8
5
14 4
4 12
7 4 16
FlussnetzwerkG Residuales Netzwerk Gf I s-t-Pfad im Residualen NetzwerkGf heisstaugmentierender Pfad
I cf(P) =min{cf(u,v)|(u,v)∈P}heisstRestkapazität vonP.
I Der Pfad im obigen Beispiel hat die Restkapazität 4.
DSAL/SS 2017 VL-19: Maximaler Fluss 33/52
Augmentierende Pfade
s
A
B
C
D
t s
A
B
C
D
t 16/16
13
4/10 4
4/9
14 7 12/12
16/20
4 4/13
16 6 8
4/5
14 4
4/4 12
7
4 16
Flussnetzwerk G Residuales NetzwerkGf SeiG Flussnetzwerk;f Fluss;P augmentierender Pfad inGf.
fP(u,v) =
cf(P) falls(u,v)aufP
−cf(P) falls(v,u)aufP
0 sonst
Dann istfP Fluss im Residualen NetzwerkGf mit Wert|fP|=cf(P)>0.
Ford-Fulkerson Theorem
Definition: Summe von zwei Flüssen
Es seien f1,f2:V ×V →Rzwei Flüsse. DieFlusssummef1+f2 ist definiert durch:(f1+f2)(u,v) =f1(u,v) +f2(u,v).
Theorem (Ford-Fulkerson)
Es sei G= (V,E,c)ein Flussnetzwerk. Es seif ein Fluss inG, und es sei f0 ein Fluss inGf.
Dann gilt:f +f0 ist Fluss inG mit Wert |f +f0|.
Beweis.
Wir zeigen, dassf +f0 beschränkt, asymmetrisch und flusserhaltend ist
Beweis des Ford-Fulkerson Theorems
Asymmetrie:
(f +f0)(u,v) = f(u,v) +f0(u,v)
= −f(v,u)−f0(v,u)
= −(f(v,u) +f0(v,u))
= −(f +f0)(v,u) Flusserhaltung:
(f +f0)(u,V) = f(u,V) +f0(u,V) =0 | ∀u∈V − {s,t} Beschränkung:
(f +f0)(u,v) = f(u,v) +f0(u,v)
≤ f(u,v) +cf(u,v)
= f(u,v) + (c(u,v)−f(u,v))
= c(u,v).
DSAL/SS 2017 VL-19: Maximaler Fluss 35/52
Die Ford-Fulkerson Methode
Algorithmus
Initialisiere Flussf auf jeder Kante mit 0 While(es einen augmentierenden PfadP gibt)
doaugmentieref entlangP //f :=f +fP returnf
s
A
B
C
D
t s
A
B
C
D
t 4/16
6+7/13
10 4/12
4 6/9
7/14
6+7/20
3/7
4/4
12
6
4 10
8
7 4
9 7
4 13
3
7 4
7
4
Flussnetzwerk G Residuales Netzwerk Gf
DSAL/SS 2017 VL-19: Maximaler Fluss 36/52
Implementierung Ford-Fulkerson Methode
1 int [ n , n ] m a x F l o w ( L i s t a d j L s t [ n ] , int n , int s , int t ) { 2 int f l o w [ n , n ] = 0 , p a t h [];
3 int cfp ; // R e s t k a p a z i t a e t des P f a d e s 4
5 w h i l e ( t r u e ) {
6 // F i n d e a u g m e n t i e r e n d e n P f a d und R e s t k a p a z i t a e t 7 ( path , cfp ) = a u g m e n t P f a d ( adjLst , flow , s , t ) ; 8 if ( cfp == 0) { // k e i n P f a d g e f u n d e n
9 r e t u r n f l o w ;
10 }
11
12 // a d d i e r e R e s t k a p a z i t a e t e n t l a n g P f a d zum F l u s s 13 for ( int i = 1; i < p a t h . l e n g t h ; i ++) {
14 int u = p a t h [ i -1] , v = p a t h [ i ];
15 f l o w [ u , v ] = f l o w [ u , v ] + cfp ; 16 f l o w [ v , u ] = - f l o w [ u , v ];
17 }
18 }
19 }
Laufzeit von Ford-Fulkerson (1)
Ein Flussproblem heistintegral, wenn alle Kapazitäten ganzzahlig sind.
Satz (Zeitkomplexität)
Es seif∗ der durch die Ford-Fulkerson Methode bestimmte maximale Fluss in einem integralen Flussproblem.
Dann: Höchstens|f∗|Iterationen, und Laufzeit istO(|E| · |f∗|).
Beweis.
Jede Iteration erhöht Wert des Flusses umcf(P)≥1. Wert ist anfangs 0 und am Endef∗. Jede Iteration betrifft höchstens|E|Kanten.
I Für integralesFlussproblem bestimmt die Ford-Fulkerson Methode Flussf, in dem jedesf(u,v)ganzzahligist.
I Bei rationalenKapazitäten terminiert die Ford–Fulkerson–Methode.
Brüche können durch Multiplikation aufgehoben werden.
Laufzeit von Ford-Fulkerson (2)
s t
1/100
1/100
0/1
1/100
1/100
Die Worst-Case-Laufzeit hängt vom Wert des maximalen Flusses ab.
Im schlimmsten Fall erhöht sich Wert des Flusses jeweils nur um eine Einheit.
DSAL/SS 2017 VL-19: Maximaler Fluss 39/52
Korrektheit von Ford-Fulkerson
DSAL/SS 2017 VL-19: Maximaler Fluss 40/52
Korrektheit von Ford-Fulkerson
Die Ford-Fulkerson Methode erweitert den Fluss inG sukzessive um augmentierende Pfade im Residualen NetzwerkGf
bis es keine solche Pfade mehr gibt.
Wir werden zeigen, dass
ein Fluss inG genau dannmaximalist, wenn
sein Residuales Netzwerkkeine augmentierende Pfadeenthält.
Dazu benutzen wir das Konzept einesSchnittes.
DSAL/SS 2017 VL-19: Maximaler Fluss 41/52
Schnitte in Flussnetzwerken (1)
Definition
EinSchnitt (S,T)in einem FlussnetzwerkG = (V,E,c)ist eine PartitionS∪T =V,S∩T =∅mits∈S undt ∈T.
I Wennf ein Fluss in G ist, dann istf(S,T)derFluss über(S,T).
I DieKapazität von(S,T)istc(S,T).
I Ein minimaler Schnittist ein Schnitt mit minimaler Kapazität.
Datenstrukturen und Algorithmen (Folie 366, Seite 62 im Skript)
Schnitte in Netzwerken
s
v1
v2
v3
v4
s t
v1
v2
v3
v4
t 11/16
8/13
10 1/4 12/12
4/9
11/14
7/7 15/20
4/4
Der Fluß ¨uber (S,T) ist19.
DSAL/SS 2017 VL-19: Maximaler Fluss 42/52
Schnitte in Flussnetzwerken (2)
Datenstrukturen und Algorithmen (Folie 368, Seite 62 im Skript)
Schnitte in Netzwerken
s
v1
v2
v3
v4
s t
v1
v2
v3
v4
t 11/16
8/13
10 1/4 12/12
4/9
11/14
7/7 15/20
4/4
Der Fluß ¨uber (S,T) ist 19.
Die Kapazit¨at von (S,T) ist 23.
S : {s,v1,v2} {s} {s,v1,v2,v4} T : {t,v3,v4} {t,v1,v2,v3,v4} {t,v3}
Fluss : 12+11-4 19 11+8 19 12-4+7+4 19
Kapazität : 12+14 26 13+16 29 12+7+4 23
Für jeden Fluss über jeden Schnitt gilt:|F|=f(S,T) ≤c(S,T).
DSAL/SS 2017 VL-19: Maximaler Fluss 43/52
Max-flow Min-cut Theorem (1)
Max-flow Min-cut Theorem
Für einen Flussf im FlussnetzwerkG= (V,E,c)sind die folgenden drei Aussagen äquivalent:
1. f ist ein maximaler Fluss.
2. Im Residualen NetzwerkGf gibt es keinen augmentierenden Pfad.
3. |f|=c(S,T)für einen Schnitt(S,T); d. h.(S,T)ist minimal.
Folgerungen:
1. Die Kapazität eines minimalen Schnittes ist gleich dem Wert eines maximalen Flusses.
2. Falls die Ford–Fulkerson–Methode terminiert, so berechnet sie einen maximalenFluss.
DSAL/SS 2017 VL-19: Maximaler Fluss 44/52
Max-flow Min-cut Theorem (2)
Max-flow Min-cut Theorem
Für einen Flussf im FlussnetzwerkG = (V,E,c)sind die folgenden drei Aussagen äquivalent:
1. f ist ein maximaler Fluss.
2. Im Residualen NetzwerkGf gibt es keinen augmentierenden Pfad.
3. |f|=c(S,T)für einen Schnitt(S,T); d. h.(S,T)ist minimal.
1. ⇒ 2. (Widerspruchsbeweis).
Seif maximaler Fluss inG und seiP augmentierender Pfad inGf.
⇒ f +fP ist ein Fluss inG mit|f +fP|>|f|.
⇒ Widerspruch!Dennf ist ein maximaler Fluss.
Max-flow Min-cut Theorem (3)
Max-flow Min-cut Theorem
Für einen Flussf im FlussnetzwerkG= (V,E,c)sind die folgenden drei Aussagen äquivalent:
1. f ist ein maximaler Fluss.
2. Im Residualen NetzwerkGf gibt es keinen augmentierenden Pfad.
3. |f|=c(S,T)für einen Schnitt(S,T); d. h.(S,T)ist minimal.
2. ⇒ 3.
Angenommen, es gibt keinen augmentierdens-t-Pfad inGf. Es seiS :={v ∈V | ∃s-v-Pfad inGf }und es seiT :=V−S.
1. ∀u∈S,v ∈T gilt:cf(u,v) =0 ⇒ f(u,v) =c(u,v).
2. (S,T)ist ein Schnitt, und somit giltf(S,T) =|f|.
⇒ c(S,T) =f(S,T) =|f|.
Max-flow Min-cut Theorem (4)
Max-flow Min-cut Theorem
Für einen Flussf im FlussnetzwerkG = (V,E,c)sind die folgenden drei Aussagen äquivalent:
1. f ist ein maximaler Fluss.
2. Im Residualen NetzwerkGf gibt es keinen augmentierenden Pfad.
3. |f|=c(S,T)für einen Schnitt(S,T); d. h.(S,T)ist minimal.
3. ⇒ 1.
Es seif0 ein beliebiger Fluss inG. Dann gilt:
|f0| = f0(S,T) = X
u∈S
X
v∈T
f0(u,v) ≤ X
u∈S
X
v∈T
c(u,v) = c(S,T) Da|f|=c(S,T) und∀f0 : |f0| ≤c(S,T), folgt:f ist maximal.
DSAL/SS 2017 VL-19: Maximaler Fluss 47/52
Beispiel: Eisenbahnnetzwerk
Fig. 2.From Harris and Ross [11]: Schematic diagram of the railway network of the Western Soviet Union and Eastern European countries, with a maximum flow of value 163,000 tons from Russia to Eastern Europe, and a cut of capacity 163,000 tons indicated as “The bottleneck”
DSAL/SS 2017 VL-19: Maximaler Fluss 48/52
Weitere Max-Flow Algorithmen
Edmonds-Karp Algorithmus
Edmonds-Karp Algorithmus
Eine Implementierung der Ford-Fulkerson Methode,
die zur Bestimmung augmentierender Pfade eineBreitensuchenutzt.
Laufzeit: O(|V| · |E|2).
Jeder augmentierende Pfad ist kürzesters-t-Pfad inGf.
Im Edmonds-Karp-Algorithmus steigt für jeden Knotenv∈V − {s,t} die Länge (= Anzahl der Kanten) des kürzesten Pfades vons nachv im Residualen NetzwerkGf monotonmit jeder Flusserweiterung.
Theorem
Die Gesamtzahl der Flusserweiterungen im Edmonds-Karp-Algorithmus für das FlussnetzwerkG= (V,E,c)ist inO(|V| · |E|).
Weitere Max-Flow Algorithmen
DSAL/SS 2017 VL-19: Maximaler Fluss 51/52
Organisatorisches
• Nächste Vorlesung:
Dienstag, Juli 11, Aula 1, zur gewohnten Zeit
• Webseite:http://algo.rwth-aachen.de/Lehre/SS17/DSA.php
DSAL/SS 2017 VL-19: Maximaler Fluss 52/52