Ford–Fulkerson und Edmonds–Karp

Werbung
Algorithmische Graphentheorie
Sommersemester 2015
3. Vorlesung
Flussalgorithmen
Prof. Dr. Alexander Wolff
Lehrstuhl für Informatik I
1
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
– den Fluss erhält
– zulässig ist
– maximal ist
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist
– maximal ist
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
0 ≤ f (e ) ≤ c (e ),
– maximal ist
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
0 ≤ f (e ) ≤ c (e ),
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
0 ≤ f (e ) ≤ c (e ),
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
Konstante
0 ≤ f (e ) ≤ c (e ),
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
Konstante
0 ≤ f (e ) ≤ c (e ),
|V | − 2 + |E | lineare
Beschränkungen!
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
Konstante
0 ≤ f (e ) ≤ c (e ),
|V | − 2 + |E | lineare
Beschränkungen!
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
2
Erinnerung
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
Konstante
0 ≤ f (e ) ≤ c (e ),
|V | − 2 + |E | lineare
Beschränkungen!
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
lineare
2
Zielfunktion!
Erinnerung
Oh my God – it’s an LP!
Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und
Kantenkapazitäten c : E → R>0 .
Geben Sie eine Methode an, die einen maximalen s -t -Fluss f
konstruiert., also eine Funktion f : E → R≥0 , die
Variable
– den Fluss erhält, d.h. für jeden Knoten v ∈
/ {s , t } sicherstellt:
X
X
Nettozuflussf (v ) =
f (uv ) −
f (v w ) = 0,
{u ∈V |uv ∈E }
{w ∈V |v w ∈E }
– zulässig ist, d.h. für jede Kante e garantiert:
Konstante
0 ≤ f (e ) ≤ c (e ),
|V | − 2 + |E | lineare
Beschränkungen!
– maximal ist, d.h. unter allen zulässigen s -t -Flüssen
|f | = Nettozuflussf (t ) maximiert.
lineare
2
Zielfunktion!
Future Work
Kann man maximale Flüsse (= Spezialfall eines LPs) auch mit
maßgeschneiderten kombinatorischen Algorithmen berechnen?
Hoffnung: Das könnte schneller gehen –
und strukturelle Einsichten liefern.
3
Future Work
Today’s
Kann man maximale Flüsse (= Spezialfall eines LPs) auch mit
maßgeschneiderten kombinatorischen Algorithmen berechnen?
Hoffnung: Das könnte schneller gehen –
und strukturelle Einsichten liefern.
3
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
t
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
t
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
S
t
T
s
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
t
S
T
s
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
t
S
T
s
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S ))
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
S
T
s
T
s
t
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S )) =
P
e ∈Rein(S )
f (e )
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
S
T
s
T
s
t
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S )) =
Abflussf (S ) = f (Raus(S ))
P
e ∈Rein(S )
f (e )
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
S
T
s
T
s
t
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S )) =
P
Abflussf (S ) = f (Raus(S )) =
P
e ∈Rein(S )
f (e )
e ∈Raus(S )
f (e )
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
T
s
S
T
s
t
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S ))
minus
Abflussf (S ) = f (Raus(S ))
4
Nichts ist praktischer als eine gute Theorie
Def.
Sei G = (V , E ) ein gerichteter Graph, s , t ∈ V .
Eine Zerlegung (S , T ) von V ist ein s -t -Schnitt,
falls s ∈ S , t ∈ T .
S
S
T
s
T
s
t
t
Raus(S ) = {uv ∈ E | u ∈ S , v ∈ T }
{uv ∈ E | u ∈ T , v ∈ S } = Rein(S )
Zuflussf (S ) = f (Rein(S ))
minus
Abflussf (S ) = f (Raus(S ))
)
=: Nettozuflussf (S )
4
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
T
s
t
S
T
s
t
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
T
s
t
S
T
s
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
T
s
t
S
T
s
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
T
s
t
S
T
s
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
T
s
t
S
T
s
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
Nettozuflf (v ) =
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
Nettozuflf (v ) =
P
v ∈S
(Zuflussf (v ) − Abflussf (v ))
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
Nettozuflf (v ) =
P
=
P
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
Nettozuflf (v ) =
P
=
P
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
Nettozuflf (v ) =
P
=
P
v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
Nettozuflf (v ) =
P
=
P
+f
u
v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
Nettozuflf (v ) =
P
=
P
+f
−f
v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
Nettozuflf (v ) =
P
=
P
+f
−f
v
v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
+f
Nettozuflf (v ) =
P
=
P
+f
−f
v
v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
+f
Nettozuflf (v ) =
P
=
P
+f
−f
v
v v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
+f
Nettozuflf (v ) =
P
=
P
+f
−f
v
v v
v ∈S
v ∈S
(Zuflussf (v ) − Abflussf (v ))
P
P
e =uv f (e ) −
e =v w f (e )
=
−f
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
+f
(Zuflussf (v ) − Abflussf (v ))
P
P
P
=
v ∈S
e =uv f (e ) −
e =v w f (e )
X
X
f (e ) −
f (e )
=
Nettozuflf (v ) =
+f
−f
v
v v
P
−f
v ∈S
e ∈Rein(S )
e ∈Raus(S )
5
Nettozuflüsse von Schnitten und Knoten
Zur Erinnerung: Nettozuflussf (S ) := f (Rein(S )) − f (Raus(S ))
Raus(S ) ⊆ E
S
Rein(S ) ⊆ E
S
T
s
T
s
t
t
⊆ V und f : E → R. Dann:
Lem.1 Sei G = (V , E ) Graph, S P
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Beweis.
P
v ∈S
S
u
+f
(Zuflussf (v ) − Abflussf (v ))
P
P
P
=
v ∈S
e =uv f (e ) −
e =v w f (e )
X
X
f (e ) −
f (e ) = Nettozuflf (S )
=
Nettozuflf (v ) =
+f
−f
v
v v
P
−f
v ∈S
e ∈Rein(S )
e ∈Raus(S )
5
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def.
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def. Nettozuflussf (t )
P
=
v ∈T Nettozuflussf (v )
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def. Nettozuflussf (t )
P
=
v ∈T Nettozuflussf (v )
da Nettozuflussf (v ) = 0 für alle v 6= s , t
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def. Nettozuflussf (t )
P
=
v ∈T Nettozuflussf (v )
da Nettozuflussf (v ) = 0 für alle v 6= s , t
=
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def. Nettozuflussf (t )
P
=
v ∈T Nettozuflussf (v )
da Nettozuflussf (v ) = 0 für alle v 6= s , t
=
6
Noch mehr Schnitte
⊆ V und f : E → R. Dann:
Lemma1 . Sei G = (V , E ) Graph, SP
Nettozuflussf (S ) = v ∈S Nettozuflussf (v ).
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
Beweis.
|f | =Def. Nettozuflussf (t )
P
=
v ∈T Nettozuflussf (v )
da Nettozuflussf (v ) = 0 für alle v 6= s , t
= Nettozuflussf (T )
6
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T )
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | =
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | =
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S )
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) =
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S ))
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
=
12
12/
v1
v3
10/ 20
8/ 16
3/ 9
s
t
1/ 7
4/ 4
5/ 13 v
2
4/14
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
Beweis.
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
8/ 16
3/ 9
s
t
1/ 7
4/ 4
5/ 13 v
2
4/14
v4 3/4
7
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
Speziell:
8/ 16
3/ 9
s
t
1/ 7
4/ 4
maxf |f | ≤
minS c (S )
5/ 13 v
v4 3/4
2
4/14
7
Beweis.
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
Speziell:
8/ 16
Korollar.
3/ 9
|f | = c (S )
s
t
1/ 7
4/ 4
maxf |f | ≤
⇓
minS c (S )
5/ 13 v
v4 3/4
2
4/14
7
Beweis.
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
Speziell:
8/ 16
Korollar.
3/ 9
|f | = c (S )
s
t
1/ 7
4/ 4
maxf |f | ≤
⇓
minS c (S )
f maximal,
5/ 13 v
4
3/
v
2
4
4/14
7
Beweis.
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
Speziell:
8/ 16
Korollar.
3/ 9
|f | = c (S )
s
t
1/ 7
4/ 4
maxf |f | ≤
⇓
minS c (S )
f maximal,
5/ 13 v
4
3/
v
2
4
c (S ) min.7
4/14
Beweis.
Kapazität von Schnitten
Lemma2 . G Graph, s , t ∈ V , f s -t -Fluss, (S ,T ) s -t -Schnitt.
Dann gilt |f | = Nettozuflussf (T ) =: Nettoabflussf (S ).
Def.
G Graph mit Kap. c : E → R>0 , (S ,T ) s -t -Schnitt.
Dann ist c (S ) := c (Raus(S )) die Kapazität von (S ,T ).
Lemma3 . f zuläss. s -t -Fluss, (S ,T ) s -t -Schnitt ⇒ |f | ≤ c (S ).
|f | = Nettoabflussf (S ) = f (Raus(S )) − f (Rein(S ))
≤ f (Raus(S )) ≤ c (Raus(S ))
= c (S )
12
12/
v1
v3
10/ 20
Speziell:
8/ 16
Korollar.
3/ 9
|f | = c (S )
s
t
1/ 7
4/ 4
maxf |f | ≤
⇓
minS c (S )
f maximal, !
5/ 13 v
4
3/
v
2
4
c (S ) min.7 !!
4/14
Beweis.
Residualnetz
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
8
Residualnetz
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
5/ 13 v
2
3/ 9
4/14
10/ 20
1/ 7
t
v4 3/4
8
Residualnetz
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
3/ 9
10/ 20
1/ 7
5/ 13 v
3/4
v
2
4
6
4
4/14
5
t
8
Residualnetz
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
3/ 9
10/ 20
1/ 7
5/ 13 v
3/4
v
2
4
6
4
4/14
5
t
8
Residualnetz
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
3/ 9
10/ 20
1/ 7
5/ 13 v
3/4
v
2
4
6
4
4/14
5
t
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
v1 12/ 12 v3 16
10/ 20
8/ 16
3/ 9
s
71/ 7
t
4/ 4
5/ 13 v
3/4
v
2
4
6
4
4/14
12
11 5
8
Residualnetz
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Beob.
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
16/ 20
7/ 7
t
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
16/ 20
7/ 7
t
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e )
−e := v u falls f (e ) > 0
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
9
v1 12/ 12 v3 17
16/ 20
8/ 16
23/ 9
s 3 4/ 4
t
7/ 7
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
16/ 20
8/ 16
3/ 9
s
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
8
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
16/ 20
8/ 16
3/ 9
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
16/ 20
8/ 16
3/ 9
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
8
16/ 20
8/ 16
3/ 9
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
8
16/ 20
8/ 16
3/ 9
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
8
16/ 20
8/ 16
3/ 9
8
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Residualkapazitäten
Def.
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
8
16/ 20
8/ 16
3/ 9
8
s
s
t
t
7/ 7
4/ 4
12/ 13 v
2
11/14
v4 4/4
G
v2
v4
G8f
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Residualkapazitäten
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
v1 12/ 12 v3
v1
v3
8
16/ 20
8/ 16
3/ 9
8
s
s
t
t
7/ 7
4/ 4
1
12/ 13 v
12 v2
v4 4/4
v4
2
11/14
G8f
G
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Residualkapazitäten
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
12 v3
v1 12/ 12 v3
v1
8
16/ 20
8/ 16
3/ 9
8
s
s
t
t
7
4
7/ 7
4/ 4
1
4
12/ 13 v
4
4/
12 v2
v4
v4
2
11/14
G8f
G
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Residualkapazitäten
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
12 v3
v1 12/ 12 v3
v1
4
8
16/ 20
8/ 16
6
3/ 9
8
s
s
t
7 16 t
4
7/ 7
4/ 4
3
1
4
3
12/ 13 v
4
4/
12 v2
v4
v4
2
11/14
G8f
G
11
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Residualkapazitäten
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
12 v3
v1 12/ 12 v3
v1
4
8
16/ 20
8/ 16
6
3/ 9
8
s
s
t
7 16 t
4
7/ 7
4/ 4
3
1
4
3
12/ 13 v
4
4/
12 v2
v4
v4
2
11/14
G8f
G
11
Residualnetz
Beob.
Falls es einen s -t -Weg gibt, bei dem auf keiner Kante
die Kapazität ausgeschöpft ist, können wir f vergrößern.
Aber:
Falls es keinen solchen s -t -Weg gibt,
so ist f nicht unbedingt maximal.
Def.
Residualkapazitäten
Der Residualgraph Gf = (V , Ef ) enthält
für jede Kante e = uv von G = (V , E ) die Kante(n)
+e := uv falls f (e ) < c (e ) mit cf (+e ) := c (e ) − f (e )
−e := v u falls f (e ) > 0 mit cf (−e ) := f (e )
12 v3
v1 12/ 12 v3
v1
4
8
16/ 20
8/ 16
6
3/ 9
8
s
s
t
7 16 t
4
7/ 7
4/ 4
3
1
4
3
12/ 13 v
4
4/
12 v2
v4
v4
2
11/14
G8f
G
11
Flussvergrößernde Wege
Ein s -t -Weg W in Gf heißt flussvergrößernder Weg
für f .
Def.
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
t
7/ 7
v4
8
16/ 20
4/4
G
v1
8
4
1
s
12
v2
12
6
3
3
11
v3
7
v4
4
16
t
4
G9f
Flussvergrößernde Wege
Ein s -t -Weg W in Gf heißt flussvergrößernder Weg
für f . Die Residualkapazität von W ist
∆W := mine ∈W cf (e ),
Def.
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
t
7/ 7
v4
8
16/ 20
4/4
G
v1
8
4
1
s
12
v2
12
6
3
3
11
v3
7
v4
4
16
t
4
G9f
Flussvergrößernde Wege
Ein s -t -Weg W in Gf heißt flussvergrößernder Weg
für f . Die Residualkapazität von W ist
∆W := mine ∈W cf (e ),
Def.
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
t
7/ 7
v4
8
16/ 20
4/4
G
v1
8
4
1
s
12
v2
12
6
3
3
11
v3
7
v4
4
16
t
4
G9f
Flussvergrößernde Wege
Def.
Ein s -t -Weg W in Gf heißt flussvergrößernder Weg
für f . Die Residualkapazität von W ist
∆W := mine ∈W cf (e ),
Satz.
(vom flussvergrößernden Weg ).
Ein zulässiger s -t -Fluss f in G ist maximal ⇔
es gibt keinen flussvergrößernden Weg in Gf .
8/ 16
s
v1 12/ 12 v3
4/ 4
12/ 13 v
2
3/ 9
11/14
t
7/ 7
v4
8
16/ 20
4/4
G
v1
8
4
1
s
12
v2
12
6
3
3
11
v3
7
v4
4
16
t
4
G9f
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
10
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
d.h. der Wert eines maximalen Flusses ist gleich der
Kapazität eines minimalen s -t -Schnittes.
10
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
d.h. der Wert eines maximalen Flusses ist gleich der
Kapazität eines minimalen s -t -Schnittes.
Zur Erinnerung:
Korollar.
|f | = c (S )
⇓
f maximal, !
c (S ) min. !!
10
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
d.h. der Wert eines maximalen Flusses ist gleich der
Kapazität eines minimalen s -t -Schnittes.
Zur Erinnerung:
Lester Randolph
Ford, Jr. (*1927)
Delbert R. Fulkerson
(1924–76)
Korollar.
|f | = c (S )
⇓
f maximal, !
c (S ) min. !!
10
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
d.h. der Wert eines maximalen Flusses ist gleich der
Kapazität eines minimalen s -t -Schnittes.
[Ford &
Fulkerson,
1956]
[Elias,
Feinstein,
Shannon
1956]
[Kotzig ’56]
Zur Erinnerung:
Lester Randolph
Ford, Jr. (*1927)
Delbert R. Fulkerson
(1924–76)
Korollar.
|f | = c (S )
⇓
f maximal, !
c (S ) min. !!
10
Das Max-Flow-Min-Cut-Theorem
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
d.h. der Wert eines maximalen Flusses ist gleich der
Kapazität eines minimalen s -t -Schnittes.
[Ford &
Fulkerson,
1956]
[Elias,
Feinstein,
Shannon
1956]
[Kotzig ’56]
Satz.
Zur Erinnerung:
Lester Randolph
Ford, Jr. (*1927)
Delbert R. Fulkerson
(1924–76)
Korollar.
|f | = c (S )
⇓
f maximal, !
c (S ) min. !!
(vom flussvergrößernden Weg ).
Ein zulässiger s -t -Fluss f in G ist maximal ⇔
es gibt keinen flussvergrößernden Weg in Gf .
10
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis.
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
⇒
ist s -t -Schnitt
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e )
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
Also:
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
c (Raus(S )) = f (Raus(S ) − f (Rein(S ))
Also: c (S ) =
Def.
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
c (Raus(S )) = f (Raus(S ) − f (Rein(S ))
Also: c (S ) =
Def.
= Nettoabflussf (S )
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
c (Raus(S )) = f (Raus(S ) − f (Rein(S ))
Also: c (S ) =
Def.
= Nettoabflussf (S ) = |f |
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
c (Raus(S )) = f (Raus(S ) − f (Rein(S ))
Also: c (S ) =
Def.
⇒
= Nettoabflussf (S ) = |f | Korr.
11
Satz.
In einem ger. Graphen G mit Kap. c : E → R>0 gilt:
max
f zulässiger s -t -Fluss
|f | =
min
c(S)
(S,T ) s -t -Schnitt
Beweis. Sei f ein maximaler Fluss.
⇒ es gibt keinen flussvergrößernden Weg
⇒ in Gf ist t von s aus nicht erreichbar
S = {v | v von s erreichbar}
⇒
ist s -t -Schnitt
T = {v | v von s nicht erreichbar}
Sei e = uv ∈ Raus(S )
⇒ f (e ) = c (e ), sonst wäre v von s in Gf erreichbar
⇒ f (Raus(S )) = c (Raus(S ))
Nun sei e = uv ∈ Rein(S ) ⇒ f (e ) = 0
⇒ f (Rein(S )) = 0
c (Raus(S )) = f (Raus(S ) − f (Rein(S ))
Also: c (S ) =
Def.
⇒ c (S ) minimal
= Nettoabflussf (S ) = |f | Korr.
11
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
12-1
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
12-2
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
12-3
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
} Rückgabe eines max. Flusses
12-4
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
} Rückgabe eines max. Flusses
12-5
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
Schreiben
Ihren eigenen
if uv ∈Sie
E then
Code, der
beifuvAbbruch
fuv =
+ ∆W der
while-Schleife
in f einen
else
maximalen
fv u =Fluss
fv u −liefert.
∆W
return f
} Rückgabe eines max. Flusses
12-6
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv ) } Residualkapazität von W
foreach uv ∈ W do
Schreiben
Ihren eigenen
if uv ∈Sie
E then
Code, der
beifuvAbbruch
fuv =
+ ∆W der
while-Schleife
in f einen
else
maximalen
fv u =Fluss
fv u −liefert.
∆W
return f
} Rückgabe eines max. Flusses
12-7
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv ) } Residualkapazität von W
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
} Rückgabe eines max. Flusses
12-8
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv ) } Residualkapazität von W

foreach uv ∈ W do




if uv ∈ E then

fuv = fuv + ∆W
Flussvergrößerung entlang W

else



fv u = fv u − ∆W 
return f
} Rückgabe eines max. Flusses
12-9
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv ) } Residualkapazität von W

foreach uv ∈ W do




if uv ∈ E then

fuv = fuv + ∆W
Flussvergrößerung entlang W

else



fv u = fv u − ∆W 
return f
} Rückgabe eines max. Flusses
Korrektheit?
12-10
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
o
foreach uv ∈ E do
Initialisierung mit Null-Fluss
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv ) } Residualkapazität von W

foreach uv ∈ W do




if uv ∈ E then

fuv = fuv + ∆W
Flussvergrößerung entlang W

else



fv u = fv u − ∆W 
return f
} Rückgabe eines max. Flusses
Korrektheit?
Folgt aus Satz vom
flussvergrößernden Weg.
12-11
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Korrektheit?
Folgt aus Satz vom
flussvergrößernden Weg.
Laufzeit?
12-12
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-13
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-14
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-15
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-16
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
∆W = minuv ∈W cf (uv )
– Breitensuche
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-17
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-18
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
else
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-19
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
return f
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
3.
R>0 :
Korrektheit?
12-20
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N:
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
12-21
3.
R>0 :
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
12-22
3.
R>0 :
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 :
2.
flussvergrößernden Weg.
12-23
3.
R>0 :
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 : erweitern...
2.
flussvergrößernden Weg.
12-24
3.
R>0 :
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 : erweitern...
2.
flussvergrößernden Weg.
12-25
3.
R>0 :
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 : erweitern...
2.
flussvergrößernden Weg.
12-26
3.
R>0 : problematisch!
Der Algorithmus von Ford & Fulkerson
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg W do Berechnung von s -t -Wegen
o
∆W = minuv ∈W cf (uv )
– Breitensuche O (E ) Zeit
– Tiefensuche
foreach uv ∈ W do
if uv ∈ E then
Anz. Schleifendurchläufe
fuv = fuv + ∆W
– in jedem Durchlauf wird
else
f um ≥ 1 vergrößert
fv u = fv u − ∆W
– max. |f ? | Durchläufe,
return f
wobei f ? ein max. Fluss
Korrektheit?
Laufzeit? 1. c : E → N: O (|f ? | · E )
Folgt aus Satz vom
Q>0 : erweitern...
2.
flussvergrößernden Weg.
12-27
3.
R>0 : problematisch!
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
Gf
000
u
0
1
s
100
t
1
100
0
v
u
9
99
1 1
s
100
0
v
0
0
0
1
100
0
t
1
999
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
Gf
000
u
0
1
s
100
t
1
100
0
v
u
9
99
1 1
s
100
0
v
0
0
0
1
100
0
t
1
999
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
u 1/
0
100
0
0
0
1/1
s
0/1
t
1/1
0
000
0
0
v 1/1
Gf
000
u
0
1
s
100
t
1
100
0
v
u
9
99
1 1
s
100
0
v
0
0
0
1
100
0
t
1
999
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
u
9
99
1 1
s
100
0
v
u 1/
0
100
0
0
0
1/1
s
0/1
t
1/1
0
000
0
0
v 1/1
...
0
0
0
1
100
0
t
1
999
13
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
u 0/
0
100
0
0
0
1/1
s
1/1
t
0/1
0
000
0
0
v 1/1
u
9
99
1 1
s
100
0
v
u 1/
0
100
0
0
0
1/1
s
0/1
t
1/1
0
000
0
0
v 1/1
...
0
0
0
1
100
0
t
1
999
Laufzeit ∈ Ω (|f ? | · E )
13
Der Algorithmus von Edmonds & Karp
return f
Richard M. Karp
*1935 Boston, MA
Jack R. Edmonds
*1934
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg do
W =
s -t -Weg in Gf
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
14
Der Algorithmus von Edmonds & Karp
return f
Richard M. Karp
*1935 Boston, MA
Jack R. Edmonds
*1934
EdmondsKarp
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg do
W =
s -t -Weg in Gf
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
14
Der Algorithmus von Edmonds & Karp
return f
Richard M. Karp
*1935 Boston, MA
Jack R. Edmonds
*1934
EdmondsKarp
FordFulkerson(DirectedGraph G = (V , E ; c ), Vertex s , Vertex t )
foreach uv ∈ E do
fuv = 0
while Gf enthält s -t -Weg do
W = kürzester s -t -Weg in Gf
∆W = minuv ∈W cf (uv )
foreach uv ∈ W do
if uv ∈ E then
fuv = fuv + ∆W
else
fv u = fv u − ∆W
14
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
Gf
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
v
000
u
0
1
s
100
t
1
100
0
v
0
0
0
1
0
t
0
0
Gf
0
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
0
v
0
000
u
s
100
0
1
t
1
100
0
0
v
000
u
s
0
0
0
1
100
0
1
t
0
Gf
t
1
100
0
v
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
0
v
0
000
u
s
100
0
1
t
1
100
0
0
v
000
u
s
0
0
0
1
100
0
1
t
0
Gf
t
1
100
0
v
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
t
1
100
0
v
000
u
s
0
0
0
1
100
0
t
1
100
0
0
v
0
0
0
1
0
0
100
s
100
0
1
t
100
000
u
1
0
0
0
Gf
t
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
v
000
u
s
0
0
0
1
100
0
0
v
000
u
t
s
0
0
0
1
100
0
1
t
0
0
0
1
1
100
0
t
1
100
0
0
100
s
100
0
1
t
100
000
u
1
0
0
0
Gf
t
1
100
0
v
0
0
0
1
15
Beispiel
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
v
000
u
s
0
0
0
1
100
0
0
v
000
u
t
s
1
100
0
0
0
0
1
100
0
1
t
0
0
0
1
1
100
0
t
1
100
0
0
100
s
100
0
1
t
100
000
u
1
0
0
0
Gf
v
t
0
0
0
1
15
FERTIG!
Beispiel
Abstand von s = ?
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
v
000
u
s
0
0
0
1
100
0
0
v
000
u
t
s
1
100
0
0
0
0
1
100
0
1
t
0
0
0
1
1
100
0
t
1
100
0
0
100
s
100
0
1
t
100
000
u
1
0
0
0
Gf
v
t
0
0
0
1
15
FERTIG!
Beispiel
Abstand von s = 1
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
v
000
u
s
0
0
0
1
100
0
0
v
000
u
t
s
1
100
0
0
0
0
1
100
0
1
t
0
0
0
1
1
100
0
t
1
100
0
0
100
s
100
0
1
t
100
000
u
1
0
0
0
Gf
v
t
0
0
0
1
15
FERTIG!
Beispiel
Abstand von s = 1
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
s
v
u
0
0
0
1
Abstand =
100
0
0
v
000
u
t
s
1
100
0
0
0
0
1
100
0
1
t
t
1
100
0
0
0
1
0
1
0
100
1
100
0
0
100
s
000
t
100
000
u
1
0
0
0
Gf
v
t
0
0
0
1
15
FERTIG!
Beispiel
Abstand von s = 1
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
0
s
v
u
0
0
0
1
Abstand = 3
100
0
0
v
000
u
t
s
1
100
0
0
0
0
1
100
0
1
t
t
1
100
0
0
0
1
0
1
0
100
1
100
0
0
100
s
000
t
100
000
u
1
0
0
0
Gf
v
t
0
0
0
1
15
FERTIG!
Beispiel
Abstand von s = 1
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
100
0
s
0
0
0
1
v
u
0
0
0
1
Abstand = 3
100
0
t
1
0
t
t
1
100
0
100
0
1
0
0
100
s
000
t
100
000
u
1
0
0
0
Gf
v
0
0
0
1
Abstand =
u
100
0
0
0
10
s
t
1
100
0
0
0
0 v
1
15
FERTIG!
Beispiel
Abstand von s = 1
G
u
0
/
0
100
0
0
0
0/1
s
0/1
t
0/1
0
000
0
0
v 0/1
0
0
0
1
s
u
100
1
v
000
s
u
0
v
100
0
s
0
0
0
1
v
u
0
0
0
1
Abstand = 3
100
0
t
1
0
t
t
1
100
0
100
0
1
0
0
100
s
000
t
100
000
u
1
0
0
0
Gf
v
0
0
0
1
Abstand = ∞
u
100
0
0
0
10
s
t
1
100
0
0
0
0 v
1
15
FERTIG!
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
Beweis.
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
Beweis.
Annahme: es gibt einen Knoten v derart, dass δ(s , v )
bei einer Flussvergrößerung abnimmt.
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
Beweis.
Annahme: es gibt einen Knoten v derart, dass δ(s , v )
bei einer Flussvergrößerung abnimmt.
Seien f und f 0 die Flüsse vor bzw. nach der
Vergrößerung.
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
Beweis.
Annahme: es gibt einen Knoten v derart, dass δ(s , v )
bei einer Flussvergrößerung abnimmt.
Seien f und f 0 die Flüsse vor bzw. nach der
Vergrößerung.
Ab jetzt sei v ein Knoten mit minimalem Wert
von δf 0 (s , v ) und δf 0 (s , v ) < δf (s , v ).
16
Kürzeste Wege machen effiziente Algorithmen!
Def.
Sei δf (u , v ) die Länge (= Anz. Kanten) eines
kürzesten u -v -Wegs in Gf .
Lemma. Während EdmondsKarp(G , s , t ) gilt für jeden
Knoten v ∈ V , dass δf (s , v ) mit jeder
Flussvergrößerung monoton zunimmt.
Beweis.
Annahme: es gibt einen Knoten v derart, dass δ(s , v )
bei einer Flussvergrößerung abnimmt.
Seien f und f 0 die Flüsse vor bzw. nach der
Vergrößerung.
kleinster Schurke“
”
Ab jetzt sei v ein Knoten mit minimalem Wert
von δf 0 (s , v ) und δf 0 (s , v ) < δf (s , v ).
16
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
u ist kein Schurke;
Abstand nimmt nicht ab.
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
u ist kein Schurke;
Abstand nimmt nicht ab.
uv 6∈ Ef
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
u ist kein Schurke;
Abstand nimmt nicht ab.
uv 6∈ Ef
Beweis.
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
u ist kein Schurke;
Abstand nimmt nicht ab.
uv 6∈ Ef
Beweis. Angenommen uv ∈ Ef .
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
u ist kein Schurke;
Abstand nimmt nicht ab.
uv 6∈ Ef
Beweis. Angenommen uv ∈ Ef . ⇒
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
u ist kein Schurke;
Abstand nimmt nicht ab.
uv 6∈ Ef
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
≤ δf 0 (s , u ) + 1
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
≤ δf 0 (s , u ) + 1
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
≤ δf 0 (s , u ) + 1
= δf 0 (s , v )
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
≤ δf 0 (s , u ) + 1
= δf 0 (s , v )
Widerspruch zur Annahme, dass δf 0 (s , v ) < δf (s , v ).
17
Fortsetzung Beweis
Sei W ein kürzester s -v -Weg in Gf 0 .
Sei u der letzte Knoten vor v auf W .
⇒ uv ∈ Ef 0 und δf 0 (s , v ) = δf 0 (s , u ) + 1.
Nach Wahl von v gilt: δf 0 (s , u ) ≥ δf (s , u )
Beh.
uv 6∈ Ef
u ist kein Schurke;
Abstand nimmt nicht ab.
Eig. kürzester Wege
Beweis. Angenommen uv ∈ Ef . ⇒ δf (s , v ) ≤ δf (s , u ) + 1
≤ δf 0 (s , u ) + 1
= δf 0 (s , v )
Widerspruch zur Annahme, dass δf 0 (s , v ) < δf (s , v ).
Aber was kann uv 6∈ Ef und uv ∈ Ef 0 erklären??
17
Fortsetzung II
1. Fall: uv ∈ E
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
⇒ δf (s , v ) =
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
⇒ δf (s , v ) = δf (s , u ) − 1
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
[u liegt auf W vor v ]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1 =
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
[u liegt auf W vor v ]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1 = δf 0 (s , v ) − 2
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
[u liegt auf W vor v ]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1 = δf 0 (s , v ) − 2
<
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
[u liegt auf W vor v ]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1 = δf 0 (s , v ) − 2
< δf 0 (s , v ).
18
Fortsetzung II
1. Fall: uv ∈ E
uv 6∈ Ef bedeutet f (uv ) = c (uv ).
uv ∈ Ef 0 bedeutet f 0 (uv ) < c (uv ).
Flussvergrößerung entlang v u ∈ Ef
2. Fall: v u ∈ E
uv 6∈ Ef bedeutet f (v u ) = 0.
uv ∈ Ef 0 bedeutet f 0 (v u ) > 0.
Flussvergrößerung entlang v u ∈ Ef
Der Fluss wird in beiden Fällen entlang v u vergrößert.
Da EdmondsKarp entlang kürzester Wege vergrößert, muss v
Vorgänger von u auf einem kürzesten s -u -Weg in Gf sein.
[u kein Schurke]
[u liegt auf W vor v ]
⇒ δf (s , v ) = δf (s , u ) − 1 ≤ δf 0 (s , u ) − 1 = δf 0 (s , v ) − 2
< δf 0 (s , v ). Widerspr. zur Ann. δf 0 (s , v ) < δf (s , v ).
18
Anzahl Flusserhöhungen & Laufzeit
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
19
Anzahl Flusserhöhungen & Laufzeit
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Korollar. Der Edmonds-Karp-Algorithmus läuft in O (V E 2 )
Zeit.
19
Anzahl Flusserhöhungen & Laufzeit
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Korollar. Der Edmonds-Karp-Algorithmus läuft in O (V E 2 )
Zeit.
Beweis.
Jede der O (V E ) Flussvergrößerungen benötigt
O (E ) Zeit bei Anwendung von Breitensuche.
19
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
Zeige: Jede Kante kann höchstens O (V ) mal kritisch sein.
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
Zeige: Jede Kante kann höchstens O (V ) mal kritisch sein.
δf (s , v ) = δf (s , u ) + 1, da uv auf kürzestem Weg W in Gf .
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
Zeige: Jede Kante kann höchstens O (V ) mal kritisch sein.
δf (s , v ) = δf (s , u ) + 1, da uv auf kürzestem Weg W in Gf .
Nach Flussvergrößerung entlang W verschwindet uv aus Gf .
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
Zeige: Jede Kante kann höchstens O (V ) mal kritisch sein.
δf (s , v ) = δf (s , u ) + 1, da uv auf kürzestem Weg W in Gf .
Nach Flussvergrößerung entlang W verschwindet uv aus Gf .
Die Kante uv erscheint erst wieder im Residualgraph,
nachdem Fluss entlang v u vergrößert wurde ⇒ v u ∈ Ef 0
20
Beweis (Satz)
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Algorithmus vergrößere entlang kürzestem s -t -Weg W in Gf .
Kante uv auf W heißt kritisch in Gf , wenn cf (uv ) = ∆W .
Zeige: Jede Kante kann höchstens O (V ) mal kritisch sein.
δf (s , v ) = δf (s , u ) + 1, da uv auf kürzestem Weg W in Gf .
Nach Flussvergrößerung entlang W verschwindet uv aus Gf .
Die Kante uv erscheint erst wieder im Residualgraph,
nachdem Fluss entlang v u vergrößert wurde ⇒ v u ∈ Ef 0
20
Fortsetzung Beweis
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Da v u auf kürzestem flussvergrößerndem Weg in Gf 0 liegt, gilt
δf 0 (s , u )
= δf 0 (s , v ) + 1
≥ δf (s , v ) + 1
= δf (s , u ) + 2
21
Fortsetzung Beweis
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Da v u auf kürzestem flussvergrößerndem Weg in Gf 0 liegt, gilt
δf 0 (s , u )
= δf 0 (s , v ) + 1
voriges Lemma
≥ δf (s , v ) + 1
= δf (s , u ) + 2
21
Fortsetzung Beweis
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Da v u auf kürzestem flussvergrößerndem Weg in Gf 0 liegt, gilt
δf 0 (s , u )
= δf 0 (s , v ) + 1
uv auf W in Gf
≥ δf (s , v ) + 1
voriges Lemma
= δf (s , u ) + 2
21
Fortsetzung Beweis
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Da v u auf kürzestem flussvergrößerndem Weg in Gf 0 liegt, gilt
δf 0 (s , u )
= δf 0 (s , v ) + 1
uv auf W in Gf
≥ δf (s , v ) + 1
voriges Lemma
= δf (s , u ) + 2
Also gilt δf (s , u ) ≤ |V | − 2, solange δf (s , u ) < +∞.
21
Fortsetzung Beweis
Satz.
EdmondsKarp(G , s , t ) führt O (V E )
Flussvergrößerungen durch.
Beweis.
Da v u auf kürzestem flussvergrößerndem Weg in Gf 0 liegt, gilt
δf 0 (s , u )
= δf 0 (s , v ) + 1
uv auf W in Gf
≥ δf (s , v ) + 1
voriges Lemma
= δf (s , u ) + 2
Also gilt δf (s , u ) ≤ |V | − 2, solange δf (s , u ) < +∞.
⇒ Die Kante uv kann nur O (V ) mal kritisch sein.
21
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Kurze Geschichte der Berechnung max. Flüsse
Methode
Laufzeit O (·)
Autoren
Allgemeine gerichtete Graphen
shortest resid. s -t path V E 2
Edmonds & Karp ’56
push relabel
V 2E
Goldberg ’87
relabel to front
V3
Goldberg & Tarjan ’88
V E log(V 2 /E + 2)
—”—
blocking flow
min(V 2/3 , E 1/2 ) · E ·
Goldberg &P
Rao ’98
· log(V 2 /E + 2) · log C , wobei C = e ∈E c (e )
new
VE
Orlin ’13
shortest path in dual
s-t-planare Graphen
V
Planare Graphen
leftmost resid. s -t path V log V
V log V
+ vertex capacities
Hassin ’81
+ Henzinger et al. ’97
Borradaile & Klein ’06
Kaplan & Nussbaum ’09
22
Herunterladen