Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
122 views55 pages

Maximum Flow: Algorithms and Networks

The document describes the maximum flow problem and algorithms for solving it. It can be summarized as follows: 1) The maximum flow problem involves finding the maximum amount of flow that can be pushed from a source node to a sink node in a directed graph while respecting the capacities of each edge. 2) Several algorithms can solve the maximum flow problem, including the Ford-Fulkerson algorithm and preflow-push algorithm. Preflow-push maintains a "preflow" and uses push and lift operations to iteratively route flow towards the sink. 3) The maximum flow problem has applications in areas like logistics, matching problems, and matrix rounding. It can also be extended to problems with multiple sources

Uploaded by

duhancaraciolo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
122 views55 pages

Maximum Flow: Algorithms and Networks

The document describes the maximum flow problem and algorithms for solving it. It can be summarized as follows: 1) The maximum flow problem involves finding the maximum amount of flow that can be pushed from a source node to a sink node in a directed graph while respecting the capacities of each edge. 2) Several algorithms can solve the maximum flow problem, including the Ford-Fulkerson algorithm and preflow-push algorithm. Preflow-push maintains a "preflow" and uses push and lift operations to iteratively route flow towards the sink. 3) The maximum flow problem has applications in areas like logistics, matching problems, and matrix rounding. It can also be extended to problems with multiple sources

Uploaded by

duhancaraciolo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 55

Maximum flow

Algorithms and Networks

Today

Maximum flow problem


Variants
Applications
Briefly: Ford-Fulkerson; min cut max flow
theorem
Preflow push algorithm
Lift to front algorithm
A&N: Maximum flo

1
The problem

Problem

Variants
Variantsin
in
notation,
notation,e.g.:
e.g.:
Write
Writef(u,v)
f(u,v)==-f(v,u)
-f(v,u)

Directed graph G=(V,E)


Source s V, sink t V.
Capacity c(e) Z+ for each e.
Flow: function f: E N such that

For all e: f(e) c(e)


For all v, except s and t: flow into v equals flow out of v

Flow value: flow out of s


Question: find flow from s to t with maximum
value
A&N: Maximum flo

Maximum flow
Ford-Fulkerson method

Algoritmiek

Possibly (not likely) exponential time


Edmonds-Karp version: O(nm2): augment over
shortest path from s to t

Max Flow Min Cut Theorem


Improved algorithms: Preflow push; scaling
Applications
Variants of the maximum flow problem
A&N: Maximum flo

1
Variants:
Multiple sources and sinks
Lower bounds

Variant
Multiple sources,
multiple sinks
Possible
maximum flow
out of certain
s
sources or into
some sinks
Models logistic
questions

s1

t1
t

G
sk

A&N: Maximum flo

tr

Lower bounds on flow


Edges with minimum and maximum
capacity
For all e: l(e) f(e) c(e)
l(e)
c(e)

A&N: Maximum flo

Flow with Lower Bounds


Look for maximum flow with for each e:
l(e) f(e) c(e)

Problem solved in two phases

Transshipment
Transshipment

First, find admissible flow


Then, augment it to a maximum flow

Admissible flow: any flow f, with


Flow conservation
if v{s,t}, flow into v equals flow out of v

Lower and upper capacity constraints fulfilled:


for each e: l(e) f(e) c(e)

A&N: Maximum flo

Finding admissible flow 1


First, we transform the question to: find an
admissible circulation
Finding admissible circulation is
transformed to: finding maximum flow in
network with new source and new sink
Translated back

A&N: Maximum flo

10

Circulations
Given: digraph G, lower bounds l, upper
capacity bounds d
A circulation fulfills:
For all v: flow into v equals flow out of v
For all (u,v): l(u,v) f(u,v) c(u,v)

Existence of circulation: first step for


finding admissible flow
A&N: Maximum flo

11

Circulation vs. Flow


Model flow network
with circulation
network: add an arc
(t,s) with large
capacity (e.g., sum
over all c(s,v) ), and
ask for a circulation
with f(t,s) as large as
possible

A&N: Maximum flo

f (t,s) = value( f )
12

Finding admissible flow


Find admissible circulation in network with
arc (t,s)
Construction: see previous sheet

Remove the arc (t,s) and we have an


admissible flow

A&N: Maximum flo

13

Finding admissible circulation


Is transformed to: finding a maximum flow
in a new network
New source
New sink
Each arc is replaced by three arcs

A&N: Maximum flo

14

Finding admissible circulation


l(e)
a

c(e)

Do this for
each edge

l(e)
a

New source
S

0
c(e)-l(e)

New sink

l(e)
A&N: Maximum flo

15

Finding admissible flow/circulation


Find maximum flow from S to T
If all edges from S (and hence all edges to
T) use full capacity, we have admissible
flow:
f(u,v) = f(u,v) + l(u,v) for all (u,v) in G

A&N: Maximum flo

16

From admissible flow to


maximum flow
Take admissible flow f (in original G)
Compute a maximum flow f from s to t in
Gf
Here cf (u,v) = c(u,v) f(u,v) l(u,v)

f + f is a maximum flow from s to t that


fulfills upper and lower capacity constraints
Any flow algorithm can be used
A&N: Maximum flo

17

3
Applications

Applications

Logistics (transportation of goods)


Matching
Matrix rounding problem

A&N: Maximum flo

19

Matrix rounding problem


p * q matrix of real numbers D = {dij}, with
row sums ai and column sums bj.
Consistent rounding: round every dij up or
down to integer, such that every row sum and
column sum equals rounded sum of original
matrix
Can be modeled as flow problem with lower
and upper bounds on flow through edges
A&N: Maximum flo

20

Row sum
rounded down,
Sum rounded up

Row
1

Col
1

[ 16,17]

Column sum
rounded down,
Sum rounded up

[ bij , bij

s

Row
p

Col
q

A&N: Maximum flo

21

4
Reminder: Ford-Fulkerson and the
min-cut max flow theorem

Ford-Fulkerson
Residual network Gf
Start with 0 flow
Repeat
Compute residual network
Find path P from s to t in residual network
Augment flow across P
Until no such path P exists
A&N: Maximum flo

23

Max flow min cut theorem


s-t-cut: partition vertices in sets S, T such
that s in S, t in T. Look to edges (v,w) with v
in S, w in T.
Capacity of cut: sum of capacities of edges
from S to T
Flow across cut
Theorem: minimum capacity of s-t-cut
equals maximum flow from s to t.
A&N: Maximum flo

24

5
The preflow push algorithm

Preflow push
Simple implementation: O(n2m)
Better implementation: O(n3)
Algorithm maintains preflow: some flow
out of s which doesnt reach t
Vertices have height
Flow is pushed to lower vertex
Vertices sometimes are lifted
A&N: Maximum flo

26

Preflow
Function f: V * V R

Skew symmetry: f(u,v) = - f(v,u)


Capacity constraints: f(u,v) c(u,v)
Notation: f(V,u)
For all u, except s: f(V,u) 0 (excess flow)
u is overflowing when f(V,u) > 0.
Maintain: e(u) = f(V,u).
A&N: Maximum flo

27

Height function
h: V N:
h(s) = n
h(t) = 0
For all (u,v) Ef (residual network):
h(u) h(v)+1

A&N: Maximum flo

28

Initialize
Set height function h
h(s) = n
Do not change
h(t) = 0
h(v) = 0 for all v except s

for each edge (s,u) do


f(s,u) = c(s,u); f(u,s) = c(s,u)
e[u] = c(s,u);
A&N: Maximum flo

Initial preflow

29

Basic operation 1: Push


Suppose e(u) > 0, cf (u,v)>0, and
h[u]= h[v]+1
Push as much flow across (u,v) as possible
r = min {e[u], cf (u,v)}
f(u,v) = f(u,v) + r;
f(v,u) = f(u,v);
e[u] = e[u] r;
e[v] = e[v] + r.
A&N: Maximum flo

30

Basic operation 2: Lift


When no push can be done from
overflowing vertex (except s,t)
Suppose e[u]>0, and for all (u,v) Ef : h[u]
h[v], u s, u t
Set h[u] = 1 + min {h[v] | (u,v) Ef}

A&N: Maximum flo

31

Preflow push algorithm


Initialize
while push or lift operation possible do
Select an applicable push or lift operation and
perform it

To
Todo:
do:correctness
correctnessproof
proofand
andtime
timeanalysis
analysis

A&N: Maximum flo

32

Lemmas / Invariants
If there is an overflowing vertex (except t),
then a lift or push operation is possible
The height of a vertex never decreases
When a lift operation is done, the height
increases by at least one.
h remains a height function during the
algorithm
A&N: Maximum flo

33

Another invariant and the


correctness
There is no path in Gf from s to t
Proof: the height drops by at most one across
each of the at most n-1 edges of such a path

When the algorithm terminates, the preflow


is a maximum flow from s to t
f is a flow, as no vertex except t has excess
As Gf has no path from s to t, f is a maximum
flow
A&N: Maximum flo

34

Time analysis 1: Lemma


If u overflows then there is a simple path
from u to s in Gf
Intuition: flow must arrive from s to u:
reverse of such flow gives the path
Formal proof skipped

A&N: Maximum flo

35

Number of lifts
For all u: h[u] < 2n
h[s] remains n. When vertex is lifted, it has
excess, hence path to s, with at most n 1
edges, each allowing a step in height of at most
one up.

Each vertex is lifted less than 2n times


Number of lift operations is less than 2n2
A&N: Maximum flo

36

Counting pushes
Saturating pushes and not saturating pushes
Saturating: sends cf(u,v) across (u,v)
Non-saturating: sends e[u] < cf(u,v)

Number of saturating pushes


After saturating push across (u,v), edge (u,v) disappears
from Gf.
Before next push across (u,v), it must be created by push
across (v,u)
Push across (v,u) means that a lift of v must happen
At most 2n lifts per vertex: O(n) sat. pushes across edge
O(nm) saturating pushes

A&N: Maximum flo

37

Non-saturating pushes

h[v]
Look at
Initially = 0. e ( v ) 0
increases by lifts in total at most 2n2
increases by saturating pushes at most by 2n per push, in
total O(n2m)
decreases at least one by a non-saturating push across (u,v)
After push, u does not overflow
v may overflow after push
h(u) > h(v)
At most O(n2m) pushes
A&N: Maximum flo

38

Algorithm
Implement
O(n) per lift operation
O(1) per push

O(n2m) time

A&N: Maximum flo

39

6
Preflow-push fastened:
The lift-to-front algorithm

Lift-to-front algorithm
Variant of preflow push using O(n3) time
Vertices are discharged:
Push from edges while possible
If still excess flow, lift, and repeat until no excess flow

Order in which vertices are discharge:


list,
discharged vertex placed at top of list
Go from left to right through list, until end, then start
anew

A&N: Maximum flo

41

Definition and Lemma


Edge (u,v) is admissible
cf(u,v) > 0, i.e., (u,v) Ef
h(u) = h(v)+1

The network formed by the admissible edges is


acyclic.
If there is a cycle, we get a contradiction by looking at
the heights
If (u,v) is admissible and e[u] > 0, we can do a push across
it. Such a push does not create an admissible edge, but
(u,v) can become not admissible.
A&N: Maximum flo

42

Discharge procedure
Vertices have adjacency list N[u]. Pointer
current[u] gives spot in adjacency list.
Discharge(u)
While e[u] > 0 do
v = current[u];
if v = NIL then {Lift(u); current[u] = head(N[u]);}
elseif cf(u,v) > 0 and h[u] = h[v]+1 then Push(u,v);
else current[u] = next-neighbor[v];
A&N: Maximum flo

43

Discharge indeed discharges


If u is overflowing, then we can do either a
lift to u, or a push out of u
Pushes and Lifts are done when Preflow
push algorithm conditions are met.

A&N: Maximum flo

44

Lift-to-front algorithm
Maintain linked list L of all vertices except s, t.
Lift-to-front(G,s,t)

Initialize preflow and L


for all v do current[v] = head[N(v)];
u is head of L
while u not NIL do
oldheight = h[u];
Discharge(u);
if h[u] > oldheight then move u to front of list L
u = next[u];
A&N: Maximum flo

45

Remarks
Note how we go through L.
Often we start again at almost the start of
L
We end when the entire list is done.
For correctness: why do we know that no
vertex has excess when we are at the end of
L?
A&N: Maximum flo

46

A definition: Topological sort


A directed acyclic graph is a directed graph
without cycles. It has a topological sort:
An ordering of the vertices : V {1, 2, ,
n} (bijective function), such that for all edges
(v,w) E: (v) < (w)

A&N: Maximum flo

47

L is a topological sort of the


network of admissible edges
If (u,v) is an admissible edge, then u is
before v in the list L.
Initially true: no admissible edges
A push does not create admissible edges
After a lift of u, we place u at the start of L
Edges (u,v) will be properly ordered
Edges (v,u) will be destroyed

A&N: Maximum flo

48

Lift-to-front algorithm correctly


computes a flow
The algorithm maintains a preflow.
Invariant of the algorithm: all vertices before the
vertex u in consideration have no excess flow.
Initially true.
Remains true when u is put at start of L.
Any push pushes flow towards the end of L.
L is topological sort of network of admissible edges.

When algorithm terminates, no vertex in L has


excess flow.
A&N: Maximum flo

49

Time analysis - I
O(n2) lift operations. (As in preflow push.)
O(nm) saturating pushes.
Phase of algorithm: steps between two
times that a vertex is placed at start of L,
(and before first such and last such event.)
O(n2) phases; each handling O(n) vertices.
All work except discharges: O(n3).
A&N: Maximum flo

50

Time of discharging
Lifts in discharging: O(n) each,
O(n3) total
Going to next vertex in adjacency
list
O(degree(u)) work between two lifts
of u
O(nm) in total

Conclusion:
Conclusion:
33
O(n
O(n )) time
timefor
for the
the
Lift
Lift to
to front
front algorithm
algorithm

Saturating pushes: O(nm)


Non-saturating pushes: only once
per discharge, so O(n3) in total.
A&N: Maximum flo

51

7
Conclusions

Many other flow algorithms


Push-relabel (variant of preflow push)
O(nm log (n2/m))
Scaling (exercise)

A&N: Maximum flo

53

A useful theorem
Let f be a circulation. Then f is a nonnegative
linear combination of cycles in G.
Proof. Ignore lower bounds. Find a cycle c, with
minimum flow on c r, and use induction with f r * c.

If f is integer, `integer scalared linear


combination.
Corollary: a flow is the linear combination of
cycles and paths from s to t.
Look at the circulation by adding an edge from t to s
and giving it flow value(f).
A&N: Maximum flo

54

Next
Minimum cost flow

A&N: Maximum flo

55

You might also like