Vorlesung
Kombinatorische Optimierung (Wintersemester 2018/19)
Kapitel 2: Fl¨usse und Zirkulationen
Volker Kaibel
Otto-von-Guericke Universit¨at Magdeburg
(Version vom 1. November 2018)
Definition 2.1
EinNetzwerkist ein Paar (D,u) bestehend aus einem Digraphen D= (V,A) und nicht-negativen Bogenkapazit¨atenu∈RA+. Ein Flussin (D,u) ist eine Abbildungf :A→R+(f ∈RA+) mit f(a) =fa≤ua f¨ur alle a∈A. F¨ur v ∈V definieren wir den Uberschuss¨
exf(v) :=f(δein(v))−f(δaus(v)) vonf in v. Ein Fluss f ∈RA+ mit
exf(v) = 0 f¨ur allev ∈V
(Flusserhaltungsbedingungen) heißt eineZirkulation.
F¨urs,t ∈V ist ein s-t-Flussein Fluss f ∈RA+ in (D,u) mit exf(v) = 0 f¨ur alle v∈V \ {s,t}
und exf(s)≤0.
s -t-Fl¨usse
s 1 t
1 1
4
2 2
2 2
2 2
3
2 1
1 1
Das Max-Flow Problem
Problem 2.3 (Max-Flow Problem)
Instanz: Netzwerk N = (D = (V,A),u), zwei Knoten s,t ∈V Aufgabe: Ein s-t-Fluss in N mit maximalem Flusswert
Anwendung:
Problem 2.4 (Job-Assignment Problem)
Instanz: n Jobs, m Arbeiter, Arbeitszeit ti ∈Q+, die Job i ben¨otigt und Teilmenge J(i)⊆[m] von Arbeitern, die Job i k¨onnen (f¨ur alle i), T ∈Q+
Aufgabe: Finde, wenn m¨oglich, einen Plan, mit dem alle Jobs nach T Zeiteinheiten fertig sind
Job-Assignment als Flussproblem
Inzidenzmatrizen
Definition 2.5
DieInzidenzmatrixeines DigraphenD = (V,A) ist die Matrix Inz(D)∈{−1,0,1}V×A mit
Inz(D)v,a =
−1 , fallsa∈δaus(v) +1 , fallsa∈δein(v)
0 , sonst f¨ur allev ∈V und a∈A.
Inzidenzmatrizen
1 2
5
3 4
1 2 3
4 5
6 7
8 10 9
−1 0 0 0 0 −1 +1 0 0 −1
+1 −1 0 0 0 0 0 +1 +1 0
0 0 +1 −1 0 0 −1 −1 0 +1
0 +1 −1 0 +1 +1 0 0 −1 0
0 0 0 +1 −1 0 0 0 0 0
Satz von Menger (bogendisjunkt, gerichtet)
s t
Spezielle Untergraphen
Definition 2.20
F¨ur einen GraphenG = (V,E) und F ⊆E,W ⊆V definieren wir die folgenden Graphen:
◮ G[F] := (V,F)
◮ G \F :=G[E\F]
◮ G[W] := (W,E∩W
2
)
◮ G \W :=G[V \W]
Zusammenhang von Graphen
Definition 2.23
F¨urk ∈N>0 heißt ein Graph G = (V,E) k-fach
kantenzusammenh¨angend, wenn|V|≥2 ist und f¨ur alleF ⊆E mit|F|<k der Graph G\F zusammenh¨angend ist. Der GraphG istk-fach knotenzusammenh¨angend (oder:
k-zusammenh¨angend), wenn |V|>k ist und f¨ur alleW ⊆V mit
|W|<k der Graph G\W zusammenh¨angend ist.
Idee: Augmentierung
s t
1
4
2
2 1
1
1
2
2 1
1 1
1 2
2 2
1
2
3 2 2 2
3
2 2
3 2 3 2 1
3 2 2
4
2 2
2
1 2
4 2
Multi-Digraphen. . .
Definition 2.26
EinMulti-Digraph ist ein TripelD = (V,A,Ψ) mit einer
endlichen KnotenmengeV und einer endlichen BogenmengeAund einer Abbildung
Ψ:A→V ×V \ {(v,v)|v ∈V}.
Zwei B¨ogena,a′ ∈A mita∕=a′ und Ψ(a) =Ψ(a′) heißenparallel.
Sie heißenanti-parallel, wenn Ψ(a) = (v,w) und Ψ(a′) = (w,v) ist.
. . . Multi-Digraphen
Definition 2.27
Ein Multi-Digraph, der keine parallelen B¨ogen hat, heißteinfach.
Ein einfacher Multi-Digraph (V,A,Ψ) ist ein Digraph, wenn man jeden Bogena∈A (eineindeutig) mit Ψ(a)∈V ×V identifiziert.
Definition 2.28
Ein Multi-DigraphD′ = (V′,A′,Ψ′) ist einUnter-Multi-Digraph vonD = (V,A,Ψ), wenn V′ ⊆V,A′ ⊆A∩(V′×V′) und Ψ′ =Ψ|A′ sind.
Weitere Definitionen
SeienD = (V,A,Ψ) ein Multi-Digraph mit Bogenl¨angenc ∈RA.
◮ Sind v0,v1, . . . ,vl ∈V und a1, . . . ,al ∈Amit
Ψ(ai) = (vi−1,vi) f¨ur alle i ∈[l], so heißtQ ={a1, . . . ,ak} einv0-vl-Weg in D, fallsvi ∕=vj f¨ur allei,j ∈{0,1, . . . ,l} mit i ∕=j. Fallsl ≥2,v0 =vl und vi ∕=vj f¨ur alle i,j ∈[l] mit i ∕=j, so ist Q einKreisin D.
◮ Die (kombinatorische) L¨angevon Q ist |Q|=l. Die c-L¨ange von Q ist c(Q).
◮ F¨ur s ∈V bezeichnetRD(s)⊆V die Menge aller Knoten w ∈V, f¨ur die eins-w-Weg in D existiert.
◮ Haben alle Kreise in D nicht-negativec-L¨ange, so heißtc konservativ.
◮ Ein Vektorπ ∈RV ist einc-Potenzialf¨ur D, wenn f¨ur alle a∈A mitΨ(a) = (v,w)
πw ≤πv +ca
gilt.
Der Multi-Digraph D
↔Definition 2.30
F¨ur einen DigraphenD= (V,A) definieren wir den
Multi-DigraphenD↔= (V,↔A,Ψ) mit↔A=A⊎←A und einer Bijektion A→←A mit a→←a f¨ur alle a∈A, sowie f¨ura∈Amit a= (v,w)
Ψ(a) = (v,w) Ψ(←a) = (w,v).
Die B¨ogen inA heißenVorw¨artsb¨ogen, die in ←A heißen R¨uckw¨artsb¨ogen. B¨ogena und ←a heißen reverszueinander.
Das Residualnetzwerk
Definition 2.31
Istf ∈RV+ ein Fluss in einem Netzwerk (D = (V,A),u), so ist das Residual-Netzwerkbzgl.f der Multi-Digraph Df = (V,Af,Ψ|Af) wobeiAf die Teilmenge von↔A ist, f¨ur die f¨ur alle a= (v,w)∈A gilt:
a∈Af ⇔ fa<ua
←a∈Af ⇔ fa>0
DieResidualkapazit¨atenu¯∈RA>0f sind definiert durch
u¯a:=ua−fa f¨ur alle a∈Amit a∈Af
¯ u←
a :=fa f¨ur alle a∈Amit ←a∈Af
Beispiel: Residualnetzwerk
s t
1
4
2
2 1
1 1
2
2 1
1 1 1
2 2
2
1
2
3 2 2 2
3
2 2
3 2 3 2 1
3 2 2
4
2 2
2
1 2
4 2
s t
1 2
2
2 2
3
2 2
3 2 2
4 2
1 1 1
1 1
1 1
1
2 1
2
2 1
2 2 1 1 1
1 1
2 2
Augmentierende Wege
Einf-augmentierender Weg/Kreisist ein Weg/KreisR ⊆Af in Df. SeineKapazit¨atist
capf(R) := min{u¯r|r ∈R}.
IstR⊆Af einf-augmentierender Weg/Kreis undγ ∈R, so definieren wir aug(f,R,γ) als ˜f ∈RA+ durch
f˜a :=
fa+γ , falls a∈R fa−γ , falls ←a∈R fa , sonst
f¨ur allea∈A (”Augmentierung vonf umγ entlang R”).
Augmentierender Weg im Residualnetzwerk
s t
1
4
2
2 1
1 1
2
2 1
1 1 1
2 2
2
1
2
3 2 2 2
3
2 2
3 2 3 2 1
3 2 2
4
2 2
2
1 2
4 2
s t
1 2
2
2 2
3
2 2
3 2 2
4 2
1 1 1
1 1
1 1
1
2 1
2
2 1
2 2 1 1 1
1
1 2
2
Algorithmus 2.35 (Ford-Fulkerson Algorithmus)
Eingabe: Netzwerk N= (D= (V,A),u), s,t∈V (s∕=t) Ausgabe: Ein s-t-Fluss f ∈QA+ in N mit maximalem Flusswert
1: for all a∈Ado
2: fa←0
3: ift ∈/ RDf(s)then
4: Stop
5: Bestimme einen f -augmentierenden s-t-Weg R in Df.
6: f ←aug(f,R,capf(R)))
7: Gehe zu Schritt??
Exponentielle Laufzeit des FF-Algorithmus
s t
N
1
N
N N
Beweis von Lemma 2.40
Der Harris-Ross Report
Ford & Fulkerson (1954):
(Beschreiben das Problem, das T. E. Harris formuliert hatte.)
Ford & Fulkerson (1962):
(¨Uber das Max-Flow Problem.)
Schrijver (Combinatorial Optimization, S. 166)
(Zitiert aus dem Report von Harris und Ross aus dem Jahre 1955 an die Air Force, ”downgraded tounclassified” im Jahr 1999)
Abbildung aus dem Harris-Ross Report
Finden von Zirkulationen
Min-Cost Zirkulationen
Problem 2.45 (Min-Cost Circulation Problem) Instanz: D = (V,A), l,u∈QA (l ≤u), c ∈QA Aufgabe: Optimall¨osung von
min{〈c,f〉|f ∈Circ(D,l,u)} oder Feststellung, dassCirc(D,l,u) =∅
Cycle Cancelling Algorithmus
Algorithmus 2.49 (Cycle Cancelling)
Eingabe: D= (V,A), l,u∈QA (l ≤u), c ∈QA Ausgabe: Optimall¨osung von
min{〈c,f〉|f ∈Circ(D,l,u)} oder Feststellung, dassCirc(D,l,u) =∅
1: Bestimme irgendein f ∈ Circ(D,l,u) (oder stelle fest, dass Circ(D,l,u) =∅ ist (Lem. 2.44 und stoppe).
2: while Df hat ↔c -negativen Kreis do
3: Bestimme Kreis C ⊆Af mit ↔c (C)<0.
4: f ←aug(f,C,capf(C))
Exponentiell viele Augmentationen
-1
0
0
-1 0
[0,N]
[0,N]
[0,N]
[0,N]
[0,1]
(Augmentatiere stets entlang von Dreiecken.)