Algorithms: Lecture 12. Chalmers University of Technology

Similar documents
Types of Networks. Internet Telephone Cell Highways Rail Electrical Power Water Sewer Gas

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Algorithms and Theory of Computation. Lecture 11: Network Flow

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

directed weighted graphs as flow networks the Ford-Fulkerson algorithm termination and running time

Undirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11

CS781 Lecture 3 January 27, 2011

Agenda. Soviet Rail Network, We ve done Greedy Method Divide and Conquer Dynamic Programming

Max Flow: Algorithms and Applications

Running Time. Assumption. All capacities are integers between 1 and C.

Breadth-First Search of Graphs

Algorithm Design and Analysis

Algorithm Design and Analysis

Algorithm Design and Analysis

Flows and Cuts. 1 Concepts. CS 787: Advanced Algorithms. Instructor: Dieter van Melkebeek

Two Applications of Maximum Flow

6.046 Recitation 11 Handout

CS 580: Algorithm Design and Analysis

Algorithm Design and Analysis

Single Source Shortest Paths

7.5 Bipartite Matching

We say that a flow is feasible for G (or just feasible if the graph and capacity function in question are obvious) if

Chapter 7. Network Flow. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Discrete Optimization 2010 Lecture 2 Matroids & Shortest Paths

Discrete Wiskunde II. Lecture 5: Shortest Paths & Spanning Trees

10 Max-Flow Min-Cut Flows and Capacitated Graphs 10 MAX-FLOW MIN-CUT

Soviet Rail Network, 1955

Algorithms: COMP3121/3821/9101/9801

Problem set 1. (c) Is the Ford-Fulkerson algorithm guaranteed to produce an acyclic maximum flow?

Graph Algorithms -2: Flow Networks. N. H. N. D. de Silva Dept. of Computer Science & Eng University of Moratuwa

Flow Network. The following figure shows an example of a flow network:

CMPSCI 611: Advanced Algorithms

CMPS 6610 Fall 2018 Shortest Paths Carola Wenk

Part V. Matchings. Matching. 19 Augmenting Paths for Matchings. 18 Bipartite Matching via Flows

Today. Flow review. Augmenting paths. Ford-Fulkerson Algorithm. Intro to cuts (reason: prove correctness)

FINAL EXAM PRACTICE PROBLEMS CMSC 451 (Spring 2016)

Single Source Shortest Paths

CMPS 2200 Fall Carola Wenk Slides courtesy of Charles Leiserson with small changes by Carola Wenk. 10/8/12 CMPS 2200 Intro.

22 Max-Flow Algorithms

Mathematics for Decision Making: An Introduction. Lecture 13

CSE 417. Chapter 4: Greedy Algorithms. Many Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Breadth First Search, Dijkstra s Algorithm for Shortest Paths

Discrete Optimization 2010 Lecture 3 Maximum Flows

1 Matchings in Non-Bipartite Graphs

CS 4407 Algorithms Lecture: Shortest Path Algorithms

Preliminaries. Graphs. E : set of edges (arcs) (Undirected) Graph : (i, j) = (j, i) (edges) V = {1, 2, 3, 4, 5}, E = {(1, 3), (3, 2), (2, 4)}

CSC 373: Algorithm Design and Analysis Lecture 12

Lecture 2: Network Flows 1

Design and Analysis of Algorithms

CS 1501 Recitation. Xiang Xiao

Shortest Path Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Algorithm Design and Analysis

Matching Residents to Hospitals

Parallel Graph Algorithms (con4nued)

Lecture 1. 1 Overview. 2 Maximum Flow. COMPSCI 532: Design and Analysis of Algorithms August 26, 2015

GRAPH ALGORITHMS Week 7 (13 Nov - 18 Nov 2017)

The max flow problem. Ford-Fulkerson method. A cut. Lemma Corollary Max Flow Min Cut Theorem. Max Flow Min Cut Theorem

6. DYNAMIC PROGRAMMING II. sequence alignment Hirschberg's algorithm Bellman-Ford distance vector protocols negative cycles in a digraph

Chapter 7. Network Flow. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Discrete Optimization Lecture 5. M. Pawan Kumar

Lecture 2: Divide and conquer and Dynamic programming

Maximum Flow. Jie Wang. University of Massachusetts Lowell Department of Computer Science. J. Wang (UMass Lowell) Maximum Flow 1 / 27

CSE 326: Data Structures Network Flow. James Fogarty Autumn 2007

Maximum flow problem (part I)

Chapter 7. Network Flow. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Chapter 11. Approximation Algorithms. Slides by Kevin Wayne Pearson-Addison Wesley. All rights reserved.

Dijkstra s Single Source Shortest Path Algorithm. Andreas Klappenecker

Parallel Graph Algorithms (con4nued)

6. DYNAMIC PROGRAMMING II

1 Review for Lecture 2 MaxFlow

Design and Analysis of Algorithms

Network Flows made simple

Internet Routing Example

An example of LP problem: Political Elections

The min cost flow problem Course notes for Optimization Spring 2007

CS675: Convex and Combinatorial Optimization Fall 2014 Combinatorial Problems as Linear Programs. Instructor: Shaddin Dughmi

Introduction to Algorithms

Graph Theory. Thomas Bloom. February 6, 2015

The maximum flow problem

Introduction to Algorithms

Algorithm Design and Analysis

The min cost flow problem Course notes for Search and Optimization Spring 2004

Contents Lecture 4. Greedy graph algorithms Dijkstra s algorithm Prim s algorithm Kruskal s algorithm Union-find data structure with path compression

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Do not turn this page until you have received the signal to start. Please fill out the identification section above. Good Luck!

Maximum flow problem

Dynamic Programming: Shortest Paths and DFA to Reg Exps

CSC Design and Analysis of Algorithms. LP Shader Electronics Example

Introduction to Algorithms

Scribes: Po-Hsuan Wei, William Kuzmaul Editor: Kevin Wu Date: October 18, 2016

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Matroids and Greedy Algorithms Date: 10/31/16

MAS210 Graph Theory Exercises 5 Solutions (1) v 5 (1)

Dynamic Programming: Shortest Paths and DFA to Reg Exps

CSE 202 Homework 4 Matthias Springer, A

The Max Flow Problem

CSE 431/531: Analysis of Algorithms. Dynamic Programming. Lecturer: Shi Li. Department of Computer Science and Engineering University at Buffalo

Analysis of Algorithms. Outline. Single Source Shortest Path. Andres Mendez-Vazquez. November 9, Notes. Notes

Maximum Flow. Reading: CLRS Chapter 26. CSE 6331 Algorithms Steve Lai

Friday, September 21, Flows

Transcription:

Algorithms: Lecture 1 Chalmers University of Technology

Today s Topics Shortest Paths Network Flow Algorithms

Shortest Path in a Graph

Shortest Path Problem Shortest path network. Directed graph G = (V, E). Source s, destination t. Length e = length of edge e, non-negative. Single Source Shortest path problem: find shortest directed path from s to t. Length of path = sum of edge lengths in path 3 3 s 1 0 30 18 11 1 4 1 Length of path s--3--t: = + 3 + + 1 = 48. 7 44 t 4

Dijkstra's Shortest Path Algorithm Find shortest path from s to t. 4 3 s 18 1 0 30 11 1 4 1 7 44 t

Dijkstra's Shortest Path Algorithm S = { } PQ = { s,, 3, 4,,, 7, t } 0 s 1 0 30 18 4 11 1 4 3 1 distance label 7 44 t

Dijkstra's Shortest Path Algorithm S = { } PQ = { s,, 3, 4,,, 7, t } delmin 0 s 1 0 30 18 4 11 1 4 3 1 distance label 7 44 t 7

Dijkstra's Shortest Path Algorithm S = { s } PQ = {, 3, 4,,, 7, t } decrease key X 0 s 1 X 0 30 18 4 11 1 4 3 1 distance label 7 X 1 44 t 8

Dijkstra's Shortest Path Algorithm S = { s } PQ = {, 3, 4,,, 7, t } X delmin 0 s 1 X 0 30 18 4 11 1 4 3 1 distance label 7 X 1 44 t

Dijkstra's Shortest Path Algorithm S = { s, } PQ = { 3, 4,,, 7, t } X 0 s 1 X 0 30 18 4 11 1 4 3 1 7 X 1 44 t 10

Dijkstra's Shortest Path Algorithm S = { s, } PQ = { 3, 4,,, 7, t } decrease key X X 33 0 s 1 X 0 30 18 4 11 1 4 3 1 7 X 1 44 t 11

Dijkstra's Shortest Path Algorithm S = { s, } PQ = { 3, 4,,, 7, t } X X 33 0 s 1 X 0 delmin 30 18 4 11 1 4 3 1 7 X 1 44 t 1

Dijkstra's Shortest Path Algorithm S = { s,, } PQ = { 3, 4,, 7, t } 3 X X 33 X 0 s 1 X 0 30 44 X 18 4 11 1 4 3 1 7 X 1 44 t 13

Dijkstra's Shortest Path Algorithm S = { s,, } PQ = { 3, 4,, 7, t } 3 X X 33X 0 s 1 X 0 30 44 X 18 4 11 1 4 3 1 7 X 1 delmin 44 t

Dijkstra's Shortest Path Algorithm S = { s,,, 7 } PQ = { 3, 4,, t } 3 X X 33X 0 s 1 X 0 30 44 X X 3 18 4 11 1 4 3 1 7 X 1 44 t X 1

Dijkstra's Shortest Path Algorithm S = { s,,, 7 } PQ = { 3, 4,, t } delmin 3 X X 33X 0 s 1 X 0 30 44 X X 3 18 4 11 1 4 3 1 7 X 1 44 t X 1

Dijkstra's Shortest Path Algorithm S = { s,, 3,, 7 } PQ = { 4,, t } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 3 1 7 X 1 44 1 t X X 17

Dijkstra's Shortest Path Algorithm S = { s,, 3,, 7 } PQ = { 4,, t } 3 X X 33X 0 s 1 X 0 30 4 18 44 X 3 X 34 X delmin 11 1 4 3 1 7 X 1 44 1 t X X 18

Dijkstra's Shortest Path Algorithm S = { s,, 3,,, 7 } PQ = { 4, t } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 1

Dijkstra's Shortest Path Algorithm S = { s,, 3,,, 7 } PQ = { 4, t } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 delmin 3 1 7 X 1 44 0 1 X t X X 0

Dijkstra's Shortest Path Algorithm S = { s,, 3, 4,,, 7 } PQ = { t } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 1

Dijkstra's Shortest Path Algorithm S = { s,, 3, 4,,, 7 } PQ = { t } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 delmin 0 1 X t X X

Dijkstra's Shortest Path Algorithm S = { s,, 3, 4,,, 7, t } PQ = { } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 3

Dijkstra's Shortest Path Algorithm S = { s,, 3, 4,,, 7, t } PQ = { } 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 4

Dijkstra's Shortest Path Algorithm S = { s,, 3, 4,,, 7, t } PQ = { } shortest path from s to t 3 X X 33X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X

Dijkstra's Algorithm Dijkstra's algorithm. Maintain a set of explored nodes S for which we have determined the shortest path distance d(u) from s to u. Initialize S = { s }, d(s) = 0. Repeatedly choose unexplored node v which minimizes: p ( v ) = min d( u) + e = ( u, v) : uîs e, shortest path to some u in explored part, followed by a single edge (u, v) S d(u) u e v s

Dijkstra's Algorithm Dijkstra's algorithm. Maintain a set of explored nodes S for which we have determined the shortest path distance d(u) from s to u. Initialize S = { s }, d(s) = 0. Repeatedly choose unexplored node v which minimizes p ( v ) = min d( u) + add v to S, and set d(v) = (v). e = ( u, v) : uîs e, shortest path to some u in explored part, followed by a single edge (u, v) S d(u) u e v s 7

Dijkstra's Algorithm: Proof of Correctness Invariant. For each node u S, d(u) is the length of the shortest s-u path. Pf. (by induction on S ) Base case: S = 1 is trivial. Inductive hypothesis: Assume true for S = k 1. Let v be next node added to S, and let u-v be the chosen edge. The shortest s-u path plus (u, v) is an s-v path of length (v). Consider any s-v path P. We'll see that it's no shorter than (v). Let x-y be the first edge in P that leaves S, and let P' be the s-x path. P is already too long as soon as it leaves S. P' x y s P S u (P) (P') + (x,y) d(x) + (x, y) (y) (v) v nonnegative weights inductive hypothesis defn of (y) Dijkstra chose v instead of y 8

Dijkstra's Algorithm: Implementation To Do: For each unexplored node, explicitly maintain: ( v) min e( u, v): us d( u) e. Next node to explore = node with minimum (v). When exploring v, for each incident edge e = (v, w) update: p(w) = min { p(w), p(v)+ e }.

Implementation & Running Time Dijkstra's Algorithm: S = {}; d[s] = 0; d[v] = infinity for v!= s while S!= V Choose v in V\S with minimum d[v] Add v to S foreach w in the neighborhood of v The running time depends on the implementation of these steps. d[w] = min(d[w], d[v] + (v, w)) endwhile endif 30

Implementation & Running Time Dijkstra's Algorithm: S = {}; d[s] = 0; d[v] = infinity for v!= s while S!= V Choose v in V\S with minimum d[v] Add v to S foreach w in the neighborhood of v d[w] = min(d[w], d[v] + (v, w)) endif O(n) try all candidate pairs: (worst case) every time we are processing edges to all (n-1) neighbours O(n) endwhile Array Based Implementation (n-1) iterations with O(n + n) every time O (n ) 31

Implementation & Running Time Dijkstra's Algorithm: S = {}; PQ with d[s] = 0 and d[v] = infinity for v!= s while PQ is not empty v ExtractMin from PQ Maintain in a PQ O(log n) Add v to S foreach w in the neighborhood of v endif Update value for w in PQ Single update requires O(log n) endwhile Priority Queue Based Implementation It is easy to think how many times do we have to run, altogether. Assuming Adjacency lists are used, for loop runs in-deg(v) for every v!= s. m edges, once for every edge O(m log n) 3

Dijkstra's Algorithm Tree of Shortest paths from s to any u: Take an array parent P of size n: Set P[u]= v, when d[u] gets updated due to v. While setting u (u s) as Explored (ExtratMin from PQ), add the edge (u,parent[u]) to the tree. Space Requirements: A system of shortest paths from s is saved in O(n) space. Applying Dijkstra's algorithm to every source node, we get a system of shortest paths from every node to every other node, stored in O(n ) space, which is optimal. All edge lengths are EQUAL: Breadth First Search. 33

Dijkstra's Algorithm Dijkstra s Algorithm design technique? Greedy? Next node is chosen based on a greedy rule. Dynamic Programming? We consider optimal shortest path for subpaths from s-t. Design techniques are not RIGID classification of efficient algorithms. Take them as general design principles. Single algorithm can combine several. 34

Network Flow Algorithms Some slides contents adapted form: http://homes.cs.washington.edu/~anderson/iucee/slides_41_0/lecture_3.ppt http://elderlab.yorku.ca/~elder/teaching/cse3101/lectures/07%0network%0flow%0algorithms.ppt

Flow Networks Internet Telephone Highways Rail Electrical Power Gas Water 3

Flows Warmup: A network of pipes pipes carry flow Each pipe has a maximum capacity A source in which flow arrives A sink at which flow leaves Only the positive flows in the flow network. Goal: Max Flow Figure courtesy of J. Edmonds 37

Flows Flow network. Abstraction for material flowing through the edges. G = (V, E) = directed graph, no parallel edges. Two distinguished nodes: s = source, in-degree(s) = 0. t = sink, out-degree(t) = 0. c(e) or c(u,v) : capacity of edge e (u,v). f(e) or f(u,v) : flow through edge e (u,v). 7 10 4 1 1 10 source s 3 8 10 t sink capacity 1 4 1 10 4 30 7 38

Flows Def. An s-t flow is a function that satisfies: For each e E: [capacity] For each v V {s, t}: f ( e) f ( e) [conservation] Def. The value of a flow f is: 0 f (e) c(e) e in to v e out of v val( f ) e out of s f ( e) e in to t f ( e). 0 10 4 0 1 1 0 0 10 0 s 3 8 10 t capacity 1 4 0 0 0 1 0 10 flow 0 4 0 30 7 Value = 4 3

Flows Def. An s-t flow is a function that satisfies: For each e E: [capacity] For each v V {s, t}: f ( e) f ( e) [conservation] Def. The value of a flow f is: 0 f (e) c(e) the total flow leaving s = the total flow arriving in t. e in to v e out of v val( f ) e out of s f ( e) e in to t f ( e). 10 10 4 4 0 1 1 0 10 s 3 8 8 3 8 10 t capacity 1 4 0 1 10 1 0 10 flow 11 4 11 30 7 Value = 4 40

Maximum Flow Problem Max flow problem. Find s-t flow of maximum value. 10 10 4 1 0 1 1 0 10 s 4 8 3 8 10 t capacity 1 4 0 4 10 1 0 10 flow 4 30 7 Value = 8 41

Towards a Max Flow Algorithm Greedy algorithm. Start with f(e) = 0 for all edge e E. Find an s-t path P where each edge has f(e) < c(e). Augment flow along path P. Repeat until you get stuck. 1 0 0 0 10 s 30 0 t 10 0 0 0 Flow value = 0 4

Towards a Max Flow Algorithm Greedy algorithm. Start with f(e) = 0 for all edge e E. Find an s-t path P where each edge has f(e) < c(e). Augment flow along path P. Repeat until you get stuck. 1 0 X 0 0 0 10 s 30 X 0 0 t 10 0 X 0 0 0 Flow value = 0 43

Towards a Max Flow Algorithm Greedy algorithm. Start with f(e) = 0 for all edge e E. Find an s-t path P where each edge has f(e) < c(e). Augment flow along path P. Repeat until you get stuck. local optimality global optimality 1 1 0 0 0 10 0 10 0 10 s 30 0 t s 30 10 t greedy = 0 10 0 0 0 opt = 30 10 0 10 0 44

Residual Graph Original edge: e = (u, v) E. Flow f(e), capacity c(e). u 17 capacity v flow Residual edge. "Undo" flow sent. e = (u, v) and e R = (v, u). forward edge residual capacity Residual capacity: u 11 v c(e) f (e) c f (e) if f (e) e E if e R E Backward or reverse edge residual capacity Residual graph: G f = (V, E f ). Residual edges with positive residual capacity. E f = {e : f(e) < c(e)} {e R : f(e) > 0}. 4

Graph G = (V, E ) capacity Example of Residual Graph flow capacity Residual Graph G f = (V, E f ) wrt the flow f, whose value is here P = any simple directed s-t path in G f. Bottleneck b = the smallest residual capacity along P P is called Augmenting path as we can push a flow s to t equal to b on P 4

Computing Max Flow Correcting the Greed: Ford-Fulkerson algorithm Start with f(e) = 0 for all edge e E. Construct residual graph G f (in first iteration it is same as G) Find an s-t augmenting path P in G f with capacity b > 0 Augment flow in G by b If e = (u, v) is a forward edge then increase f (e) in G by b Else (u, v) is a backward edge, and let e = (v, u) be in G decrease f (e) in G by b Repeat until you get stuck. 47

Example G at some intermediate step. Flow achieved is 1 Residual Graph has P with b = 4 No more augmenting s-t paths max flow attained. Val(f) = 3 Stuck, no P possible 48

Example G at some intermediate step. Flow achieved is 1 Residual Graph has P with b = 4 How to verify the claim: No more augmenting s-t paths max flow attained. Val(f) = 3 Is Ford-Fulkerson algorithm correct? Stuck, no P possible Answer lies in: Cut 4

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. 0

The Capacity of a Cut (S,T) Maximum possible flow through the cut(s, T): Sum of capacities c(u,v), where u S and v T c(s,t) = 1+ = T v S u v u c T S c, ), ( ), ( 1

The Net Flow through a Cut (S,T) Net flow through a cut = Flow out Flow in f(s,t) = 1 + 11 4 = 1 S u T v T v S u u v f v u f T S f,, ), ( ), ( ), (

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(s, T) of G. Follows from Capacity constraint 3

Net Flow of a Network The net flow value across any cut(s, T) is the same and equal to the flow value of the network. Follows from Conservation constraint 4

Min-Cut Problem Capacity of the cut = maximum possible flow through the cut = 1 + 7 + 4 = 3 The network has a capacity of at most 3. cut Here, the network does have a capacity of 3, because this is a minimum cut. How to find a cut(s, T) of minimum capacity?

Example: Max-Flow Min-Cut augmenting path Original Network Flow Network Resulting Flow = 4

Example: Max-Flow Min-Cut Flow Network Resulting Flow = 4 Residual Network augmenting path Flow Network Resulting Flow = 11 7

Example: Max-Flow Min-Cut Flow Network Resulting Flow = 11 Residual Network augmenting path Flow Network Resulting Flow = 1 8

Example: Max-Flow Min-Cut Flow Network Resulting Flow = 1 augmenting path Residual Network Flow Network Resulting Flow = 3

Example: Max-Flow Min-Cut Resulting Flow = 3 No augmenting path: Maxflow=3 Residual Network 0

Max-Flow Min-Cut Theorem Let f is a flow in a flow network G=(V,E), with source s and sink t: 1. Since val(f) c(s,t) for all cuts of (S,T) where s S and t T. If val(f) = c(s,t) then c(s,t) must be the min-cut of G.. This implies that f is a maximum flow of G. 3. This implies that G f contains no augmenting paths. If there were augmenting paths this would contradict that we found the maximum flow of G 131 and from 3 we have that the Ford Fulkerson method finds the maximum flow if the residual graph has no augmenting paths. Hence, Max-flow min-cut theorem: max-flow = min-cut. 1

Max-Flow = Min-Cut How to find out the min-cut: When Ford-Fulkerson stops, no directed s-t paths exists in G f S = all v such that s-v path exists in G f T = V\S Clearly (S,T) is a cut. It is also minimum because: For all (u, v) G, u S and v T. No augmenting path f(e) = c e All available capacity is used. For all (v, u) G, v T and u S. f(e) = 0 By the conservation constraint: The net flow across any cut(s, T) is the same and equal to the flow of the network. val(f) = C(S,T).

Analysis Ford-Fulkerson s Max-Flow Initially f (e) = 0 for all e in G O(m) While there is an s-t path in the residual graph G f? Let P be a simple s-t path in G f f' = augment(f, P) Update f to be f O(m) Endwhile Return f Update the residual graph G f to be G f 3

Analysis Let C e out of f s ( e). Then the time can be written as: O(m C) In worst case, each iteration of the while loop increments flow by 1 Note that this running time is not polynomial in input size due to similar reasons as Knapsack Curious to know more? More in Algorithms Adv. Course. 4

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 super-source and a super-sink:

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. 7

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. 8

A maximum matching is a matching of maximum cardinality (maximum number of edges). not maximum maximum

A Maximum Matching No matching of cardinality 4, because only one of v and u can be matched. In the workers-jobs example a max-matching provides work for as many people as possible. v u 70

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. 71

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. s 1 1 1 1 1 GG' 1 1 1 1 1 1 1 1 1 1 t L R 7

L et Solving Bipartite Matching as Max Flow G ( V, E ) be a bipartite graph with vertex partition V L R. Let G ( V, E ) be its corresponding flow netwok r. If M is a matching in G, then there is an integer-valued flow f in G with value f M. Conversey l, 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(intege r f ) 73

Does this mean that max f = max M? Problem: we haven t shown that the max flow f(u,v) is necessarily integer-valued. 74

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.. For all vertices u and v the value f(u,v) of the flow is an integer. So, max M = max f Running Time: Remember: C e out of f s ( e). Here C is at most n, Hence O(m C) becomes O(mn) 7

Example min cut M = 3 max flow = f = 3 7

Conclusion Network flow algorithms allow us to find the maximum bipartite matching fairly easily. Similar techniques are applicable in other combinatorial design problems. Remark about Exercise 3 from week : "witches watching watches It was asked to provide a counterexample for the given greedy algorithm Bipartite Matching exactly solves the same Now you have an algorithm for "witches watching watches 77