• No results found

Max Flow, Min Cut. Maximum Flow and Minimum Cut. Soviet Rail Network, Minimum Cut Problem

N/A
N/A
Protected

Academic year: 2021

Share "Max Flow, Min Cut. Maximum Flow and Minimum Cut. Soviet Rail Network, Minimum Cut Problem"

Copied!
12
0
0

Loading.... (view fulltext now)

Full text

(1)

Princeton University • COS 226 • Algorithms and Data Structures • Spring 2004 • Kevin Wayne • http://www.Princeton.EDU/~cos226

Max Flow, Min Cut

Minimum cut Maximum flow

Max-flow min-cut theorem

Ford-Fulkerson augmenting path algorithm Edmonds-Karp heuristics

Bipartite matching

2 n Network reliability.

n Security of statistical data. n Distributed computing. n Egalitarian stable matching. n Distributed computing. n Many many more . . . Maximum Flow and Minimum Cut

Max flow and min cut.

n Two very rich algorithmic problems.

n Cornerstone problems in combinatorial optimization. n Beautiful mathematical duality.

Nontrivial applications / reductions. n Network connectivity. n Bipartite matching. n Data mining. n Open-pit mining. n Airline scheduling. n Image processing. n Project selection. n Baseball elimination. 3 Soviet Rail Network, 1955

Source: On the history of the transportation and maximum flow problems. Alexander Schrijver in Math Programming, 91: 3, 2002.

4 Network: abstraction for material FLOWING through the edges.

n Directed graph. n Capacities on edges. n Source node s, sink node t.

Min cut problem. Delete "best" set of edges to disconnect t from s. Minimum Cut Problem

capacity s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 sink source

(2)

5 A cut is a node partition (S, T) such that s is in S and t is in T.

n capacity(S, T) = sum of weights of edges leavingS. Cuts s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 Capacity = 30 S 6 A cut is a node partition (S, T) such that s is in S and t is in T.

n capacity(S, T) = sum of weights of edges leavingS. Cuts s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 S Capacity = 62

A cut is a node partition (S, T) such that s is in S and t is in T. n capacity(S, T) = sum of weights of edges leavingS.

Min cut problem. Find an s-t cut of minimum capacity. Minimum Cut Problem

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 S Capacity = 28

Network: abstraction for material FLOWING through the edges. n Directed graph.

n Capacities on edges. n Source node s, sink node t.

Max flow problem. Assign flow to edges so as to:

n Equalize inflow and outflow at every intermediate vertex. n Maximize flow sent from s to t.

Maximum Flow Problem

same input as min cut problem

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 capacity sink source

(3)

9 A flow f is an assignment of weights to edges so that:

n Capacity: 0 £ f(e) £u(e).

n Flow conservation: flow leaving v = flow entering v. Flows s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0 0 4 4 0 4 0 0 0 Value = 4 except at s or t 0 capacity flow 10 A flow f is an assignment of weights to edges so that:

n Capacity: 0 £ f(e) £u(e).

n Flow conservation: flow leaving v = flow entering v. Flows s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 6 6 11 1 10 3 8 8 0 4 0 0 0 Value = 24 11 capacity flow except at s or t 11 Max flow problem: find flow that maximizes net flow into sink.

Maximum Flow Problem

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 4 10 4 8 9 1 0 0 0 0 Value = 28 14 capacity flow 12 Observation 1. Let f be a flow, and let (S, T) be any s-t cut. Then, the net flow sent across the cut is equal to the amount reaching t.

Flows and Cuts

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 6 6 0 10 4 8 8 0 4 0 0 0 S 10 10 Value = 24

(4)

13 10 6 6 10 0 10 4 8 8 0 4 0 0

Observation 1. Let f be a flow, and let (S, T) be any s-t cut. Then, the net flow sent across the cut is equal to the amount reaching t.

Flows and Cuts

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 S 0 10 Value = 24 14 10 6 6 10 0 10 4 8 8 0 4 0 0

Observation 1. Let f be a flow, and let (S, T) be any s-t cut. Then, the net flow sent across the cut is equal to the amount reaching t.

Flows and Cuts

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 0 S 10 Value = 24

Observation 2. Let f be a flow, and let (S, T) be any s-t cut. Then the value of the flow is at most the capacity of the cut.

Flows and Cuts

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 S

Cut capacity = 30 Þ Flow value £30

Max Flow and Min Cut

Observation 3. Let f be a flow, and let (S, T) be an s-t cut whose capacity equals the value of f. Then f is a max flow and (S, T) is a min cut.

Cut capacity = 28 Þ Flow value £28

Flow value = 28 s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 15 4 10 4 8 9 1 0 0 0 0 S 15

(5)

17 Max-Flow Min-Cut Theorem

Max-flow min-cut theorem. (Ford-Fulkerson, 1956): In any network, the value of max flow equals capacity of min cut.

n Proof IOU: we find flow and cut such that Observation 3 applies. Min cut capacity = 28 Û Max flow value = 28

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 15 4 10 4 8 9 1 0 0 0 0 S 15 18 Towards an Algorithm

Find s-t path where each arc has f(e) < u(e) and "augment" flow along it.

s 4 2 5 3 t 4 0 0 0 0 0 0 4 0 4 4 10 13 10 Flow value = 0 flow capacity 19 Towards an Algorithm

Find s-t path where each arc has f(e) < u(e) and "augment" flow along it. n Greedy algorithm: repeat until you get stuck.

s 4 2 5 3 t 4 0 0 0 0 0 0 40 4 4 10 13 10 10 10 10 X X X Flow value = 10

Bottleneck capacity of path = 10

flow

capacity

20 Towards an Algorithm

Find s-t path where each arc has f(e) < u(e) and "augment" flow along it. n Greedy algorithm: repeat until you get stuck.

n Fails: need to be able to "backtrack."

s 4 2 5 3 t 10 13 10 4 4 4 10 6 10 4 4 4 4 4 Flow value = 10 Flow value = 14 s 4 2 5 3 t 4 0 0 0 0 0 0 4 0 4 4 10 13 10 10 10 10 X X X flow capacity

(6)

21 Residual Graph Original graph. n Flow f(e). n Edge e = v-w Residual edge. n Edge e = v-w or w-v. n "Undo" flow sent. Residual graph.

n All the edges that have

strictly positive residual capacity.

v 17 w

6

capacity = u(e)

v 11 w

6

residual capacity = u(e) – f(e)

residual capacity = f(e) flow = f(e)

22 Augmenting Paths

Augmenting path = path in residual graph. n Increase flow along forward edges. n Decrease flow along backward edges.

s 4 2 5 3 t 10 13 10 4 0 0 10 10 10 0 4 0 4 4 s 4 2 5 3 t 10 10 10 4 4 4 4 3 4 4 6 4 4 X X X X X original residual Augmenting Paths

Observation 4. If augmenting path, then not yet a max flow. Q. If no augmenting path, is it a max flow?

Flow value = 14 s 4 2 5 3 t 10 6 10 4 4 4 4 7 residual s 4 2 5 3 t 10 13 10 4 0 0 10 10 10 0 4 0 4 4 original 4 4 6 4 4 X X X X X

Ford-Fulkerson Augmenting Path Algorithm

Ford-Fulkerson algorithm. Generic method for solving max flow.

Questions.

n Does this lead to a maximum flow? yes

n How do we find an augmenting path? s-t path in residual graph n How many augmenting paths does it take?

n How much effort do we spending finding a path?

while (there exists an augmenting path) { Find augmenting path P

Compute bottleneck capacity of P Augment flow along P

(7)

25 Max-Flow Min-Cut Theorem

Augmenting path theorem. A flow f is a max flow if and only if there are no augmenting paths.

We prove both simultaneously by showing the following are equivalent: (i) f is a max flow.

(ii) There is no augmenting path relative to f.

(iii) There exists a cut whose capacity equals the value of f. (i) Þ(ii) equivalent to not (ii) Þnot (i), which was Observation 4 (ii) Þ(iii) next slide

(iii) Þ(i) this was Observation 3

Max-flow min-cut theorem. The value of the max flow is equal to the capacity of the min cut.

26 Proof of Max-Flow Min-Cut Theorem

(ii) Þ(iii). If there is no augmenting path relative to f, then there exists a cut whose capacity equals the value of f. Proof.

n Let f be a flow with no augmenting paths.

n Let S be set of vertices reachable from s in residual graph. –S contains s; since no augmenting paths, S does not contain t –all edges e leaving S in original network have f(e) = u(e) –all edges e entering S in original network have f(e) = 0

T) (S, ) ( ) ( ) ( of out to in of out capacity e u e f e f f S e S e S e = = -=

å

å

å

s t residual network S T 27 Max Flow Network Implementation

Edge in original graph may correspond to 1 or 2 residual edges.

n May need to traverse edge e = v-w in forward or reverse direction. n Flow = f(e), capacity = u(e).

n Insert two copies of each edge, one in adjacency list of v and one in w.

public class Edge {

private int v, w; // from, to

private int cap; // capacity from v to w

private int flow; // flow from v to w

public Edge(int v, int w, int cap) { ... }

public int cap() { return cap; }

public int flow() { return flow; }

public boolean from(int v) { return this.v == v; }

public int other(int v) { return from(v) ? this.w : this.v; }

public int capRto(int v) { return from(v) ? flow : cap - flow; }

public void addflowRto(int v, int d) { flow += from(v) ? -d : d; } }

28 Ford-Fulkerson Algorithm: Implementation

Ford-Fulkerson main loop.

// while there exists an augmenting path, use it

while (augpath()) {

// compute bottleneck capacity

int bottle = INFINITY;

for (int v = t; v != s; v = ST(v))

bottle = Math.min(bottle, pred[v].capRto(v)); // augment flow

for (int v = t; v != s; v = ST(v)) pred[v].addflowRto(v, bottle);

// keep track of total flow sent from s to t value += bottle;

(8)

29 Ford-Fulkerson Algorithm: Analysis

Assumption: all capacities are integers between 1 and U.

Invariant: every flow value and every residual capacities remain an integer throughout the algorithm.

Theorem: the algorithm terminates in at most | f * | £V U iterations.

Corollary: if U = 1, then algorithm runs in £ V iterations.

Integrality theorem: if all arc capacities are integers, then there exists a max flow f for which every flow value is an integer.

not polynomial in input size! 30 1000 0 1 100 100 0 0 0

Choosing Good Augmenting Paths

Use care when selecting augmenting paths.

100 Original Network s 4 2 t 1000 0 s 4 2 t 1 100 100 0 0 0

Choosing Good Augmenting Paths

Use care when selecting augmenting paths.

100 1 1 1 X X X Original Network 1001 100 1 0

Choosing Good Augmenting Paths

Use care when selecting augmenting paths.

100 100 1 1 0 Original Network s 4 2 t

(9)

33 1001 s 4 2 t 1 100 100 1 0

Choosing Good Augmenting Paths

Use care when selecting augmenting paths.

100 1 0 1 X X X 1 0 Original Network 34 s 4 2 t 1 100 100 100 100 0 1 1 1 1

Choosing Good Augmenting Paths

Use care when selecting augmenting paths.

200 iterations possible!

Original Network

35 Choosing Good Augmenting Paths

Use care when selecting augmenting paths. n Some choices lead to exponential algorithms. n Clever choices lead to polynomial algorithms. n Optimal choices for real world problems ???

Design goal is to choose augmenting paths so that: n Can find augmenting paths efficiently.

n Few iterations.

Choose augmenting path with: Edmonds-Karp (1972) n Fewest number of arcs. (shortest path) n Max bottleneck capacity. (fattest path)

36 Shortest Augmenting Path

Shortest augmenting path. n Easy to implement with BFS.

n Finds augmenting path with fewest number of arcs.

while (!q.isEmpty()) { int v = q.dequeue(); IntIterator i = G.neighbors(v); while(i.hasNext()) { Edge e = i.next(); int w = e.other(v);

if (e.capRto(w) > 0) { // is v-w a residual edge?

if (wt[w] > wt[v] + 1) { wt[w] = wt[v] + 1;

pred[w] = e; // keep track of shortest path q.enqueue(w);

} } } }

(10)

37 Shortest Augmenting Path Analysis

Length of shortest augmenting path increases monotonically. n Strictly increases after at most E augmentations.

n At most E V total augmenting paths. n O(E2 V) running time.

38 Fattest Augmenting Path

Fattest augmenting path.

n Finds augmenting path whose bottleneckcapacity is maximum. n Delivers most amount of flow to sink.

n Solve using Dijkstra-style (PFS) algorithm.

Finding a fattest path. O(E log V) per augmentation with binary heap. Fact. O(E log U) augmentations if capacities are between 1 and U.

v 10 w

residual capacity

12 9X 10

if (wt[w] < Math.min(wt[v], e.capRto(w)) { wt[w] = Math.min(wt[v], e.capRto(w)); pred[w] = v;

}

Choosing an Augmenting Path

Choosing an augmenting path.

n Any path will do Þ wide latitude in implementing Ford-Fulkerson. n Generic priority first search.

n Some choices lead to good worst-case performance. – shortest augmenting path

– fattest augmenting path – variation on a theme: PFS n Average case not well understood. Research challenges.

n Practice: solve max flow problems on real networks in linear time. n Theory: prove it for worst-case networks.

History of Worst-Case Running Times

Dantzig

Discoverer

Simplex

Method Asymptotic Time

E V2 U

1951

Year

Ford, Fulkerson Augmenting path E V U †

1955

Edmonds-Karp Shortest path E2 V

1970

Dinitz Improved shortest path E V2

1970

Edmonds-Karp, Dinitz Capacity scaling E2 log U

1972

Dinitz-Gabow Improved capacity scaling E V log U †

1973

Karzanov Preflow-push V3

1974

Sleator-Tarjan Dynamic trees E V log V

1983

Goldberg-Tarjan FIFO preflow-push E V log (V2 / E)

1986

. . . .

. . .

Goldberg-Rao Length function EVE3/2 2/3 log (Vlog (V2 2 / E) log U / E) log U ††

1997

Edmonds-Karp Max capacity E log U (E + V log V) †

1970

(11)

41 An Application

Jon placement.

n Companies make job offers. n Students have job choices. Can we fill every job?

Can we employ every student?

Alice-Adobe Bob-Yahoo Carol-HP Dave-Apple Eliza-IBM Frank-Sun 42 Bipartite Matching Bipartite matching.

n Input: undirectedand bipartite graph G.

n Set of edges M is a matchingif each vertex appears at most once. n Max matching: find a max cardinality matching.

1 3 5 A C E 2 4 B D Matching M 1-B, 3-A, 4-E R L 43 Bipartite Matching Bipartite matching.

n Input: undirected and bipartite graph G.

n Set of edges M is a matchingif each vertex appears at most once. n Max matching: find a max cardinality matching.

1 3 5 A C E 2 4 B D Matching M 1-A, 2-B, 3-C, 4-D R L 44 Reduces to max flow.

n Create a directedgraph G'.

n Direct all arcs from L to R, and give infinite (or unit) capacity. n Add source s, and unit capacity arcs from s to each node in L. n Add sink t, and unit capacity arcs from each node in R to t.

Bipartite Matching R L s 1 3 5 A C E t 2 4 B D 1 1

¥

1 3 5 A C E 2 4 B D G' G

(12)

45 Claim. Matching in G of cardinality k induces flow in G' of value k.

n Given matching M = { 1-B, 3-A, 4-E }of cardinality 3. n Consider flow f that sends 1 unit along each of 3 paths:

s-1-B-t s-3-A-t s-4-E-t. n f is a flow, and has cardinality 3.

Bipartite Matching: Proof of Correctness

R L s 1 3 5 A C E t 2 4 B D 1 1

¥

1 3 5 A C E 2 4 B D G' G 46 Claim. Flow f of value k in G' induces matching of cardinality k in G.

n By integrality theorem, there exists 0/1 valued flow f of value k. n Consider M = set of edges from L to R with f(e) = 1.

–each node in L and R incident to at most one edge in M –|M| = k

Bipartite Matching: Proof of Correctness

R L s 1 3 5 A C E t 2 4 B D 1 1

¥

1 3 5 A C E 2 4 B D G' G Reduction.

n Given an instance of bipartite matching. n Transform it to a max flowproblem. n Solve max flow problem.

n Transform max flow solution to bipartite matching solution. Issues.

n How expensive is transformation? O(E + V)

n Is it better to solve problem directly? O(E V1/2) bipartite matching Bottom line: max flow is an extremely rich problem-solving model.

n Many important practical problems reduce to max flow. n We know good algorithms for solving max flow problems.

References

Related documents

Hadoop – distributed file system, map/reduce HBase – “NoSQL” data store – column-oriented Solr – search server based on Lucene.. All are scalable, flexible, fast,

View Answer Workspace Report Discuss in

Ϯϲ 6KHIILHOG-*RWHWL*:RRG()'HYHORSPHQWRID\HDUKLJKUHVROXWLRQJOREDO GDWDVHWRIPHWHRURORJLFDOIRUFLQJVIRUODQGVXUIDFHPRGHOLQJ -&amp;OLPDWH

The scenario analysis of failure modes is undergone by different scenarios such as with and without emergency spillway and different piping elevations to model dam break and

FRQ15 found that there was a statistically significant preference for convection during SB–noLLJ events to occur over relatively wet soils, but this finding is not sup- ported when

Provider School Street Address AD# Assembly Member Address &amp; Phone Albany Office Address &amp; Phone District Office Email SD# Senate Member Albany Office Addess Phone

The following theorem says that, through the various iterations, the length of the shortest path from s to t in the residual network can only increase, and it does increase at the

from Amsterdam, Aldegrever from Soest, and Pencz from Nuremberg show ideas that were broadly known in the form of popular expressions and visual imagery across the