0% found this document useful (0 votes)
464 views56 pages

07 Network Flow Algorithms

Maximum flow reached

Uploaded by

can-inlife
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
0% found this document useful (0 votes)
464 views56 pages

07 Network Flow Algorithms

Maximum flow reached

Uploaded by

can-inlife
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1/ 56

The Maximum Network Flow

Problem
Network Flows

CSE 3101 2
Types of Networks

• Internet
• Telephone
• Cell
• Highways
• Rail
• Electrical Power
• Water
• Sewer
• Gas
• …

CSE 3101 3
Maximum Flow Problem

• How can we maximize the flow in a network from a source or set of


sources to a destination or set of destinations?
• The problem reportedly rose to prominence in relation to the rail
networks of the Soviet Union, during the 1950's. The US wanted to
know how quickly the Soviet Union could get supplies through its rail
network to its satellite states in Eastern Europe.
• In addition, the US wanted to know which rails it could destroy most
easily to cut off the satellite states from the rest of the Soviet Union.
It turned out that these two problems were closely related, and that
solving the max flow problem also solves the min cut problem of
figuring out the cheapest way to cut off the Soviet Union from its
satellites.

Source: lbackstrom, The Importance of Algorithms, at www.topcoder.com

CSE 3101 4
•Instance:
Network Flow
•A Network is a directed graph G
•Edges represent pipes that carry flow
•Each edge (u,v) has a maximum capacity c(u,v)
•A source node s in which flow arrives
•A sink node t out which flow leaves

Goal:
Max Flow

Figure courtesy of J. Edmonds

CSE 3101 5
The Problem
• Use a graph to model material that flows through conduits.
• Each edge represents one conduit, and has a capacity, which is
an upper bound on the flow rate, in units/time.
• Can think of edges as pipes of different sizes.
• Want to compute max rate that we can ship material from a
designated source to a designated sink.

CSE 3101 6
What is a Flow Network?

• Each edge (u,v) has a nonnegative capacity c(u,v).


• If (u,v) is not in E, assume c(u,v)=0.
• We have a source s, and a sink t.
• Assume that every vertex v in V is on some path from s to t.
• e.g., c(s,v1)=16; c(v1,s)=0; c(v2,v3)=0

CSE 3101 7
What is a Flow in a Network?

• For each edge (u,v), the flow f(u,v) is a real-valued


function that must satisfy 3 conditions:
Capacity constraint: u ,v V , f (u ,v )  c (u ,v )

Skew symmetry: u ,v V , f (u ,v )  f (v , u )

Flow conservation: u V  {s ,t }, f (u ,v )  0
v V

 Notes:
 The skew symmetry condition implies that f(u,u)=0.

 We show only the positive flows in the flow network.

CSE 3101 8
Example of a Flow:
capacity
flow
capacity

• f(v2, v1) = 1, c(v2, v1) = 4.


• f(v1, v2) = -1, c(v1, v2) = 10.
• f(v3, s) + f(v3, v1) + f(v3, v2) + f(v3, v4) + f(v3, t) =
0 + (-12) + 4 + (-7) + 15 = 0
CSE 3101 9
The Value of a flow

• The value of a flow is given by

| f |  f ( s, v)  f (v, t )
vV vV
 This is the total flow leaving s = the total flow arriving in t.

CSE 3101 10
Example:

|f| = f(s, v1) + f(s, v2) + f(s, v3) + f(s, v4) + f(s, t) =
11 + 8 + 0 + 0 + 0 = 19

|f|= f(s, t) + f(v1, t) + f(v2, t) + f(v3, t) + f(v4, t) =


0 + 0 + 0 + 15 + 4 = 19

CSE 3101 11
A flow in a network

• We assume that there is only flow in one direction at a time.

• Sending 7 trucks from Edmonton to Calgary and 3 trucks from


Calgary to Edmonton has the same net effect as sending 4
trucks from Edmonton to Calgary.

CSE 3101 12
Multiple Sources Network
• We have several sources and several targets.
• Want to maximize the total flow from all sources to all targets.
• Reduce to max-flow by creating a supersource and a supersink:

CSE 3101 13
Residual Networks

• The residual capacity of an edge (u,v) in a network with a flow f is


given by:

c f (u, v)  c(u , v)  f (u , v)

• The residual network of a graph G induced by a flow f is the graph including only the edges with positive
residual capacity, i.e.,

Gf  (V , Ef ), where Ef  {(u,v )  V  V : cf (u,v )  0}

CSE 3101 14
Example of Residual Network

Flow Network:

Residual Network:

CSE 3101 15
Augmenting Paths

• An augmenting path p is a simple path from s to t on the


residual network.
• We can put more flow from s to t through p.
• We call the maximum capacity by which we can increase the
flow on p the residual capacity of p.

c f ( p)  min{c f (u, v) : (u, v) is on p}

CSE 3101 16
End of Lecture 14

April 22, 2009


Augmenting Paths

Network:

Residual
Network:

Augmenting
path The residual capacity of this augmenting path is 4.

CSE 3101 18
Computing Max Flow

• Classic Method:
– Identify augmenting path
– Increase flow along that path
– Repeat

CSE 3101 19
Ford-Fulkerson Method

CSE 3101 20
Example

Flow(1) Residual(1)
No more augmenting paths  max flow attained.

Flow(2) Residual(2) Cut


CSE 3101 21
Cuts of Flow Networks
A cut (S,T ) of a flow network is a partition of V into S and T  V  S
such that s  S and t  T .

CSE 3101 22
The Net Flow through a Cut (S,T)

f (S , T )   f (u, v)
uS ,vT

• f(S,T) = 12 – 4 + 11 = 19

CSE 3101 23
The Capacity of a Cut (S,T)

c( S , T )   c(u, v)
uS ,vT

• c(S,T)= 12+ 0 + 14 = 26

CSE 3101 24
Augmenting Paths – example
• Capacity of the cut
= maximum possible flow through the cut
= 12 + 7 + 4 = 23

Flow(2)

cut
• The network has a capacity of at most 23.
• In this case, the network does have a capacity of 23, because this
is a minimum cut.
CSE 3101 25
Net Flow of a Network
• The net flow across any cut is the same and equal to
the flow of the network |f|.

CSE 3101 26
Bounding the Network Flow

• The value of any flow f in a flow network G is


bounded from above by the capacity of any cut of G.

CSE 3101 27
Max-Flow Min-Cut Theorem

• If f is a flow in a flow network G=(V,E), with source s


and sink t, then the following conditions are equivalent:
1. f is a maximum flow in G.
2. The residual network Gf contains no augmented paths.
3. |f| = c(S,T) for some cut (S,T) (a min-cut).

CSE 3101 28
The Basic Ford-Fulkerson Algorithm

CSE 3101 29
Example
augmenting path

Original Network

Flow Network

Resulting Flow = 4

CSE 3101 30
Example

Resulting Flow = 4
Flow Network

augmenting path

Residual Network

Flow Network Resulting Flow = 11

CSE 3101 31
Example

Resulting Flow = 11
Flow Network

augmenting path

Residual Network

Flow Network Resulting Flow = 19

CSE 3101 32
Example

Resulting Flow = 19
Flow Network

augmenting path

Residual Network

Flow Network Resulting Flow = 23

CSE 3101 33
Example

Resulting
Flow = 23

No augmenting path:
Maxflow=23

Residual Network

CSE 3101 34
Analysis

O(E)
?

O(E)

CSE 3101 35
Analysis
• If capacities are all integer, then each augmenting path
raises |f| by ≥ 1.
• If max flow is f*, then need ≤ |f*| iterations  time is
O(E|f*|).
• Note that this running time is not polynomial in input
size. It depends on |f*|, which is not a function of |V| or |
E|.
• If capacities are rational, can scale them to integers.
• If irrational, FORD-FULKERSON might never terminate!

CSE 3101 36
The Basic Ford-Fulkerson Algorithm

• With time O ( E |f*|), the algorithm is not polynomial.


• This problem is real: Ford-Fulkerson may perform
very badly if we are unlucky:

|f*|=2,000,000

CSE 3101 37
Run Ford-Fulkerson on this example

Augmenting Path

Residual Network

CSE 3101 38
Run Ford-Fulkerson on this example

Augmenting Path

Residual Network

CSE 3101 39
Run Ford-Fulkerson on this example

• Repeat 999,999 more times…


• Can we do better than this?

CSE 3101 40
The Edmonds-Karp Algorithm

• A small fix to the Ford-Fulkerson algorithm makes it work in polynomial time.


• Select the augmenting path using breadth-first search on residual network.
• The augmenting path p is the shortest path from s to t in the residual
network (treating all edge weights as 1).
• Runs in time O(V E2).

CSE 3101 41
The Edmonds-Karp Algorithm - example

• The Edmonds-Karp algorithm halts in only 2 iterations


on this graph.

CSE 3101 42
Further Improvements

• Push-relabel algorithm ([CLRS, 26.4]) – O(V2 E).


• The relabel-to-front algorithm ([CLRS, 26.5) – O(V3).
• (We will not cover these)

CSE 3101 43
An Application of Max Flow:

Maximum Bipartite Matching


Maximum Bipartite Matching

 A bipartite graph is a graph


G=(V,E) in which V can be
divided into two parts L and R
such that every edge in E is
between a vertex in L and a
vertex in R.

 e.g. vertices in L represent


skilled workers and vertices in
R represent jobs. An edge
connects workers to jobs they
can perform.

CSE 3101 45
• A matching in a graph is a subset M of E, such that for all
vertices v in V, at most one edge of M is incident on v.

CSE 3101 46
• A maximum matching is a matching of maximum cardinality
(maximum number of edges).

not maximum maximum

CSE 3101 47
A Maximum Matching

• No matching of cardinality 4,
because only one of v and u
can be matched.

v
• In the workers-jobs example
a max-matching provides
work for as many people as
possible.

CSE 3101 48
Solving the Maximum Bipartite Matching Problem

• Reduce the maximum bipartite matching problem on graph G to the


max-flow problem on a corresponding flow network G’.

• Solve using Ford-Fulkerson method.

CSE 3101 49
Corresponding Flow Network
• To form the corresponding flow network G' of the bipartite graph G:
– Add a source vertex s and edges from s to L.
– Direct the edges in E from L to R.
– Add a sink vertex t and edges from R to t.
– Assign a capacity of 1 to all edges.
• Claim: max-flow in G’ corresponds to a max-bipartite-matching on G.

GG’
1
1
1 1
1
1 1
1
1
1 1
s 1 1 t
1 1

L R
CSE 3101 50
Solving Bipartite Matching as Max Flow
Let G  (V , E ) be a bipartite graph with vertex partition V  L  R .

Let G   (V , E ) be its corresponding flow network.

If M is a matching in G ,

then there is an integer-valued flow f in G  with value | f || M | .

Conversely, if f is an integer-valued flow in G ,


then there is a matching M in G with cardinality | M || f | .

Thus max | M | max(integer |f|)

CSE 3101 51
Does this mean that max |f| = max |M|?

• Problem: we haven’t shown that the max flow f(u,v) is necessarily


integer-valued.

CSE 3101 52
Integrality Theorem

• If the capacity function c takes on only integral values, then:


1. The maximum flow f produced by the Ford-Fulkerson method has
the property that |f| is integer-valued.
2. For all vertices u and v the value f(u,v) of the flow is an integer.

• So max|M| = max |f|

CSE 3101 53
Example

min cut

|M| = 3  max flow =|f|= 3


CSE 3101 54
Conclusion

• Network flow algorithms allow us to find the maximum


bipartite matching fairly easily.

• Similar techniques are applicable in other combinatorial


design problems.

CSE 3101 55
Example

• In a department there are n courses and m instructors.


• Every instructor has a list of courses he or she can teach.
• Every instructor can teach at most 3 courses during a year.

• The goal: find an allocation of courses to the instructors subject to


these constraints.

CSE 3101 56

You might also like