0% found this document useful (0 votes)
29 views60 pages

1 FordFulkerson

The document discusses minimum cuts, maximum flows, and the Ford-Fulkerson algorithm. It explains that minimum cuts are cuts that separate a source vertex s from a target vertex t with minimum capacity. Maximum flows are flows of maximum value, where the value is the amount of flow coming out of s and into t. The Ford-Fulkerson algorithm can be used to find both minimum cuts and maximum flows in a graph.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views60 pages

1 FordFulkerson

The document discusses minimum cuts, maximum flows, and the Ford-Fulkerson algorithm. It explains that minimum cuts are cuts that separate a source vertex s from a target vertex t with minimum capacity. Maximum flows are flows of maximum value, where the value is the amount of flow coming out of s and into t. The Ford-Fulkerson algorithm can be used to find both minimum cuts and maximum flows in a graph.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 60

Lecture 1

max flows, min cuts, and Ford-Fulkerson


The plan for today
• Minimum s-t cuts
• Maximum s-t flows
• The Ford-Fulkerson Algorithm
• Finds min cuts and max flows!
• Applications
• Why do we want to find these things?

Lucky the lackadaisical lemur


• A cut is a partition of the vertices into two nonempty
parts.

Part 1 Part 2
• Graphs are directed and edges have “capacities” (weights)
• We have a special “source” vertex s and “sink” vertex t.
• s has only outgoing edges*
• t has only incoming edges*
3
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
10
*at least for this class
An s-t cut
is a cut which separates s from t

3
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
10
An s-t cut
is a cut which separates s from t

3
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
10
An s-t cut
is a cut which separates s from t
• An edge crosses the cut if it goes from s’s side to t’s side.

3
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
10
An s-t cut
is a cut which separates s from t
• An edge crosses the cut if it goes from s’s side to t’s side.
• The cost (or capacity) of a cut is the sum of the
capacities of the edges that cross the cut.
This cut has cost
3 4 + 2 + 10 = 16
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
this edge does not
cross the cut; it’s going 10
in the wrong direction.
An minimum s-t cut
is a cut which separates s from t
with minimum capacity.
• Question: how do we find a minimum s-t cut?
This cut has cost
4 + 3 + 4 = 11
3
4
4 2 6
6
2 4
s t
3
2 6
3 4
6
10
Example where this comes up
• 1955 map of rail
networks from the Soviet
this says
Union to Eastern Europe.
“the bottleneck”
• Declassified in 1999.
• 44 edges, 105 vertices

• The US wanted to cut off


routes from suppliers in
Russia to Eastern Europe
as efficiently as possible.
These numbers
are capacities.
• In 1955, Ford and
Fulkerson at the RAND
corporation gave an
algorithm which finds the
optimal s-t cut.
Schriver 2002
Flows
• In addition to a capacity, each edge has a flow
• (unmarked edges in the picture have flow 0)
• The flow on an edge must be less that its capacity.
• At each vertex, the incoming flows must equal the outgoing
flows.
4 units in, 3
1+1+2 = 4 units out. 2
2 4
4 1 6
2 6 1
4
2 4
s 1 2 t
3
2 1+1 = 2 units in, 6
3
2 units out. 4
6 Think of this as
meaning “send 2
10 units of stuff along
this edge.”
Because of conservation of
Flows flows at vertices,

• The value of a flow is: stuff you put in


=
• The amount of stuff coming out of s
stuff you take out.
• The amount of stuff flowing into t
• These are the same!

3
2
2 4
4 1 6
2 6 1
4
2 4
s 1 2 t
3
2 6
3 4
6

The value of 10
this flow is 4.
A maximum flow
is a flow of maximum value.
• This example flow is pretty wasteful, I’m not utilizing
the capacities very well.
3
2
2 4
4 1 6
2 6 1
4
2 4
s 1 2 t
3
2 6
3 4
6

The value of 10
this flow is 4.
A maximum flow
is a flow of maximum value.
• This one is maximal.
• It has value 11.
3
3
3 4
4 6
4
2 6 1

2 4
s 2 3 4 t
3
5 2 1 6
3 4
6 4
5
10
That’s the same as the
minimum cut in this graph!
A maximum flow
is a flow of maximum value.
• This one is maximal.
• It has value 11.
3
3
3 4
4 6
4
2 6 1

2 4
s 1 3 4 t
3
6 2 2 6
3 4
6 4
6
10
Example
• 1955 map of rail
networks from the Soviet
Union to Eastern Europe.
• Declassified in 1999.
• 44 edges, 105 vertices

• The Soviet Union wants


to route supplies from
suppliers in Russia to
These numbers Eastern Europe as
are capacities. efficiently as possible.

These numbers
are flows.

Schriver 2002
Theorem
Max-flow min-cut theorem
The value of a max flow from s to t Intuition: in a max flow,
is equal to the min cut better fill up,
and this is the bottleneck.
the cost of a min s-t cut.
3
3
3 4
4 6
4
2 6 1

2 4
s 2 3 4 t
3
5 2 1 6
3 4
6 4
5
10
Ford-Fulkerson algorithm
• Usually we state the algorithm first and then prove
that it works.
• Today we’re going to just start with the proof, and
this will inspire the algorithm.

Outline of algorithm:
• Start with zero flow
• We will maintain a “residual graph” Gf
• A path from s to t in Gf will give us a Assume for today that we
way to improve our flow. don’t have edges like this,
although it’s not necessary.
• We will continue until there are no s-t
paths left.
Tool: Residual networks
Say we have a flow � �, � − � �, � �� �, � ∈ �
�% �, � = ) � �, � �� �, � ∈ �
a 0 ����
2 �(�, �) is the flow on edge �, � .
c(�, �) is the capacity on edge �, �


2
3 6
4 1
t
s
8
1 3 2
a
b 3
Call the flow � 2
Call the graph � 0
1 5
1 t
Create a new residual s 7 1
network from this flow:
1 b 2
Call this graph �%
Tool: Residual networks
Say we have a flow
a
Forward edges are the
2 amount that’s left.
6
2 Backwards edges are the
3
4 1
amount that’s been used.
t
s
8
1 3 2
a
b 3
Call the flow �
2
Call the graph �
1 5
1 t
Create a new residual s 7 1
network from this flow:
1 b 2
Call this graph �%
Why do we care
about residual networks?
• t is not reachable from s in �% ⇔ f is a max flow.
Lemma:

Example: s is reachable from t in this


example, so not a max flow.

2
2 3
3 6 2
4 1 1 5
t
s 8 s 1 t
1 3 2 7 1
Call the flow � 1 2
Call the graph � Call this graph �%
Why do we care
about residual networks?
• t is not reachable from s in �% ⇔ f is a max flow.
Lemma:

To see that this flow is not


Example: s is reachable from t in this
maximal, notice that we can example, so not a max flow.
improve it by sending one
more unit more stuff along Now update the residual graph…
this path:

2
2 3
43 6 2
4 21 1 5
t
s 8 s 1 t
1 3 32 7 1
Call the flow � 1 2
Call the graph � Call this graph �%
Why do we care
about residual networks?
• t is not reachable from s in �% ⇔ f is a max flow.
Lemma:

Example:
To see that this flow is not
maximal, notice that we can Now we get this residual graph:
improve it by sending one
more unit more stuff along
this path:

2
2 4
43 6 2
4 21 0 4
t
s 8 s 2 t
1 3 32 7 0
Call the flow � 1 3
Call the graph � Call this graph �%
Why do we care
about residual networks?
• t is not reachable from s in �% ⇔ f is a max flow.
Lemma:

Example:
Now we get this residual graph:
Now we can’t reach t from s.
So the lemma says that f is a
max flow.
2
2 4
43 6 2
4 21
t 4
s 8 s 2 t
1 3 32 7
Call the flow � 1 3
Call the graph � Call this graph �%
Before: flow value is 2
2
2 1
1 6 2
4 1 3 5
t
s 3 s 1 t
1 3 0 3 3
Call the flow � 1
Call the graph � Call this graph �%

After: 2 in, 2 out

2 flow value is 3
2 2
12 6 2
4 10 2 6
s t
3 s t
1 3 01 3 2
Call the flow � 1 1
Call the graph � 1 in, 1 out Call this graph �%

Still a legit flow, but with a bigger value!


• t is not reachable from s in �% ⇔ f is a max flow

• This inspires an algorithm:


• Ford-Fulkerson(G):
• � ← all zero flow.
• �% ← �
• while t is reachable from s in �%
• Find a path P from s to t in �%
• � ← increaseFlow(P,f)
// eg, use BFS

• update �%
• return f
How do we choose which paths to use?
• The analysis we did still works no matter how we
choose the paths.
• That is, the algorithm will be correct if it terminates.
• However, the algorithm may not be efficient!!!
• May take a long time to terminate
• (Or may actually never terminate?)

• We need to be careful with our path selection to make


sure the algorithm terminates quickly.
• Using BFS leads to the Edmonds-Karp algorithm. (today)
• There’s another way in the notes. (optional)
Example of Ford-Fulkerson
3 0
4
4 0 0
0 6
s 0 2 0 4 0 t
3
0
3 0
6 0 4
0
10
3
4 4
6
3 4
s t
2
3
6 4
10
Example of Ford-Fulkerson
3 0
4
4 0 0
0 6
s 0 2 0 4 0 t
3
0
3 0
6 0 4
0
10
3
4 4
6
3 4
s t
2
3
6 4
10
Example of Ford-Fulkerson
3 0
4
4 4 0
4 6
s 0 2 0 4 4 t
3
0
3 0
6 0 4
0
10
3
4
4 2
4
3 4
s t
2
3
6 4
10
Example of Ford-Fulkerson
3 0
4
4 4 0
4 6
s 0 2 0 4 4 t
3
0
3 0
6 0 4
0
10
3
4
4 2
4
3 4
s t
2
3
6 4
10
Example of Ford-Fulkerson
3 0
4
4 4 0
4 6
s 0 2 0 4 4 t
3
4
3 0
6 4 4
4
10
3
4
4 2
4
3 4
s t
2
4 3 4
2 4
6
Example of Ford-Fulkerson We will remove flow
from this edge.
3 0
4
4 4 0
4 6
s 0 2 0 4 4 t
3
4
3 0
6 4 4
4
10
Notice that we’re
going back along one
3
of the backwards 4
edges we added. 4 2
4
s
3 t
2 4
4 3 4
2 4
6
Example of Ford-Fulkerson We will remove flow
from this edge.
3 2
4
4 2 2
4 6
s 2 2 2 4 4 t
3
4
3 0
6 4 4
4
10
Notice that we’re
going back along one
1
of the backwards 2 2
edges we added. 4 4 2
2 2
s
1 t
4
4 3 2
4
2 4
6
Example of Ford-Fulkerson We will remove flow
from this edge AGAIN.
3 2
4
4 2 2
4 6
s 2 2 2 4 4 t
3
4
3 0
6 4 4
4
10
1
2 2
4 4 2
2
s
2 1 t
4
4 3 2
4
2 4
6
Example of Ford-Fulkerson We will remove flow
from this edge AGAIN.
3 3
4
4 1 3
4 6
s 2 2 3 4 4 t
3
5
3 1
6 4 4
5
10

3 1
4 5 3
1
s
2 t
4
5 2 3
1 4
1 5
5
Example of Ford-Fulkerson
3 3
4
4 1 3
4 6
s 2 2 3 4 4 t
3
5
3 1
6 4 4
5
10
3
1
4 5 3
1
s
2 t
3 4
5 2 4
1
1 5
5
Example of Ford-Fulkerson
3 3
4
4 1 3
4 6
s 2 2 3 4 4 t
3
5 Max flow and min
3 1 cut are both 11.
6 4 4
5
10
3
1
4 5 3
1
s
2 t
3 4
There’s no path 5 2 4
from s to t, and
1
1 5
here’s the cut to
prove it. 5
What have we learned?
• Max s-t flow is equal to min s-t cut!
• The USSR and the USA were trying to
solve the same problem…
• The Ford-Fulkerson algorithm can
find the min-cut/max-flow.
• Repeatedly improve your flow along
an augmenting path.
• How long does this take???
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
0
0
0 1
t
s
C
0 C 0
a
b
C
C
1 t
s
C C
b
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
0
0
0 1
t
s
C
0 C 0
a
b
C
C
1 t
s
C C
b
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
1
0
1 1
t
s
C
1 C 0
a 1
b

C
C-1
1
The edge (b,a) disappeared s 1 t
from the residual graph!
C
C-1 b
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
1
0
1 1
t
s
C
1 C 0
a 1
b

C
C-1
1
t
s 1
C
C-1 b
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
1
1
0 1
t
s
C
1 C 1
a 1
b 1

C-1 C-1
The edge (b,a) re-appeared 1 t
s 1 1
in the residual graph!
C-1 b
C-1
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
1
1
0 1
t
s
C
1 C 1
a 1
b 1

C-1 C-1
1 t
s 1 1

C-1 b
C-1
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
2
1
1 1
t
s
C
2 C 1
a 2
b 1

C-1 C-2
1
The edge (b,a) disappeared s 2 t
1
from the residual graph!
C-2 b
C-1
Why should we be concerned?
Suppose we just picked paths arbitrarily.
Choose a really
a
C big number C.
C
2
1 This will go on for C steps,
1 1 adding flow along (b,a) and
t
s
C then subtracting it again.
2 C 1
a 2
b 1

C-1 C-2
1
The edge (b,a) disappeared s 2 t
1
from the residual graph!
C-2 b
C-1
Doing Ford-Fulkerson with BFS is called
the Edmonds-Karp algorithm.
Theorem
• If you use BFS, the Ford-Fulkerson algorithm runs in
time O(nm2). Doesn’t have anything to do with the edge weights!

• We will skip the proof in class.


• You can check it out in the notes if you are interested.
• It will not be on the exam.

• Basic idea:
• The number of times you remove an edge from the residual
graph is O(n).
• This is the hard part
• There are at most m edges.
• Each time we remove an edge we run BFS, which takes time
O(n+m).
• Actually, O(m), since we don’t need to explore the whole graph, just
the stuff reachable from s.
One more useful thing
• If all the capacities are integers, then the flows in
any max flow are also all integers.
• When we update flows in Ford-Fulkerson, we’re only
ever adding or subtracting integers.
• Since we started with 0 (an integer), everything stays
integral.
But wait, there’s more!
• Min-cut and max-flow are not just useful for the
USA and the USSR in 1955.
• An important algorithmic primitive!
• The Ford-Fulkerson algorithm is the basis for many
other graph algorithms.
• For the rest of today, we’ll see a few:
• Maximum bipartite matching
• Integer assignment problems

Some of the following material shamelessly stolen from Jeff Erickson’s excellent lecture notes:
http://jeffe.cs.illinois.edu/teaching/algorithms/2009/notes/17-maxflowapps.pdf
Maximum matching in bipartite graphs

• Different students only


want certain items of
Stanford swag (depending
on fit, style, etc).

• How can we make as


many students as possible
happy?

Stanford Students Stanford Swag


Maximum matching in bipartite graphs

• Different students only


want certain items of
Stanford swag (depending
on fit, style, etc).

• How can we make as


many students as possible
happy?

Stanford Students Stanford Swag


All edges have
Solution via max flow capacity 1.

s t

Stanford Students Stanford Swag


All edges have
Solution via max flow capacity 1.
1

1
1
1
1
s 1 t
1
1
1
1
1
1

Stanford Students Stanford Swag


Solution via max flow All edges have
why does this work? capacity 1.
4. The value of the
1. Because the
flow is the size of the
capacities are all 1 matching.
integers, so are the
flows – so they are 1
either 0 or 1. 1
1
1 Value of this
s 1 t
flow is 4.
1
1
1
1
1
1

2. Stuff in = stuff out 5. We conclude that


means that the number 3. Thus, the edges with flow on the max flow
of items assigned to them form a matching. (And, any corresponds to a
each student 0 or 1. matching gives a flow). maximal matching.
(And vice versa).
A slightly more complicated example:
assignment problems
• One set X
• Example: Stanford students
• Another set Y
• Example: tubs of ice cream
• Each x in X can participate in c(x) matches.
• Student x can only eat 4 scoops of ice cream.
• Each y in Y can only participate in c(y) matches.
• Tub of ice cream y only has 10 scoops in it.
• Each pair (x,y) can only be matched c(x,y) times.
• Student x only wants 3 scoops of flavor y
• Student x’ doesn’t want any scoops of flavor y’
• Goal: assign as many matches as possible.
How can we serve as much ice cream as possible?
Example
This person wants 4
scoops of ice cream, at 1 6
most 1 of chocolate 4
and at most 3 coffee. 3

3
3
3
1

1 1 10
5
10 3
10
This person is vegan 2
and not that hungry; 2
they only want two
6
scoops of the sorbet.
Stanford Students Tubs of ice cream
Solution via max flow
1

3
6
4
3 3
3
1
s 1 10
t
1
10
5
3
2
10 6
2

Stanford Students Tubs of ice cream


Give this person 1
Solution via max flow scoop of this ice cream.

1
1
3 4
4 3 6
4
3 3
3 3
3 3
1
s 1 10
1 1 3 t
1
7 10 1
5
1 3
2 6
2
2 10 6
2 6

Stanford Students Tubs of ice cream


No more than 3
scoops of sorbet
Solution via max flow can be assigned.

1 1
3 4
4 3 6
4
3 3
3 3 3
3
1
s 1 10
1 1 3 t
1
7 10 1
5 3
1
2 6
2
This student can 6
2 10
have flow at most
10 going in, and so 2 6
at most 10 going
out, so at most 10
scoops assigned.
As before, flows correspond to assignments, and
max flows correspond to max assignments.

You might also like