Flytnett: Rettet graf $G = (V, E)$
Flyt: En funksjon $𝑓 : V × V \longrightarrow ℝ$
Flytverdi: $|𝑓| = Σ_v 𝑓 (s, v) - Σ_v 𝑓 (v, s)$
Input: Et flyttnetverk G
Output: En flyt $𝑓$ for $G$ med maks. $|𝑓|$
Residualnettverk
Flytforøkende sti
Generell metode, ikke en algoritme (litt underspesifisert)
function ford_fulkerson_method(G, s, t)
initialize flow 𝑓 to 0
while there is an augm. path p to G_𝑓
augment flow 𝑓 along p
end
return 𝑓
end
function ford_fulkerson(G, s, t)
for each edge e ∈ G.E
e.f = 0
end
while there is a path p from s to t in G_𝑓
c_𝑓(p) = min(c_𝑓(u, v) : (u, v) is in p)
for each edge (u, v) in p
if (u, v) ∈ E
(u,v).f = (u, v).f + c_𝑓(p)
else
(v, u).f = (v, u).f - c_𝑓(p)
end
end
end
end
Alle nodene får et felt a (augmentation).
function edmonds_karp(G, s, t)
for each edge (u,v) ∈ G.E
(u,v).f = 0
end
repeat #-> until t.a == 0
for each vertex u ∈ G.V
u.a = 0 # flow reaching u in G.f
u.π = NIL
s.a = ∞
Q = ∅
enqueue(Q, s)
while t.a == 0 && Q != ∅
u = dequeue(Q)
for all edges (u,v),(v,u) ∈ G.E
if (u,v) ∈ G.E
c_f(u,v) = c(u, v) - (u,v).f
else
c_f(u,v) = (v,u).f
end
if c_f(u,v) > 0 && v.a == 0
v.a = min(u.a, c_f(u,v))
v.π = u
enqueue(Q, v)
end
end
end
u, v = t.π, t # at this point, t.a = c_f(p)
while u != NIL
if (u, v) ∈ G.E
(u,v).f = (u,v).f + t.a
else
(v,u).f = (v,u).f - t.a
end
u, v = u.π, u
end
until t.a == 0
Operasjoner | Antall | Kjøretid | ||
---|---|---|---|---|
Finn forøkende sti | $O( | 𝑓^* | )$ | $O(E)$ |
Operasjoner | Antall | Kjøretid |
---|---|---|
Finn forøkende sti | $O(|𝑓^{*}|)$ | $O(E)$ |
Eksponesielt! Bruk BFS!
Operasjoner | Antall | Kjøretid |
---|---|---|
Finn forøkende sti | $O(VE)$ | $O(E)$ |
Snitt i flytnettverk: Partisjon $(S,T)$ av $V$
Lemma 26.5: $𝑓(S,T) = |𝑓|$
Input: Et flytnettverk $G = (V,E)$ med kilde $s$ og sluk $t$
Output: Et snitt $(S,T)$ med minst mulig kapasitet, dvs., der $c(S,T)$ er minimal
Matching: Delmengde $M ⊆ E$ for en urettet graf $G = (V,E)$
Input: En bipartitt urettet graf $G = (V,E)$
Output: En matching $M ⊆ E$ med flest mulig kanter, dvs., der $|M|$ er maksimal.
Heltallsteoremet (26.10): For heltallskapasiteter gir Ford-Fulkerson heltallsflyt