170 likes | 422 Views
Maximum Flow Neil Tang 3/30/2010. Class Overview. The maximum flow problem Applications A greedy algorithm which does not work The Ford-Fulkerson algorithm Implementation and time complexity Another approach: linear programming An Application: maximum matching in a bipartite graph.
E N D
Maximum Flow Neil Tang3/30/2010 CS223 Advanced Data Structures and Algorithms
Class Overview • The maximum flow problem • Applications • A greedy algorithm which does not work • The Ford-Fulkerson algorithm • Implementation and time complexity • Another approach: linear programming • An Application: maximum matching in a bipartite graph CS223 Advanced Data Structures and Algorithms
The Maximum Flow Problem • The weight of a link (a.k.a link capacity) indicates the maximum amount of flow allowed to pass through this link. • The maximum flow problem: Given a weighted directed graph G, a source node s and a sink node t, find the maximum amount of flow that can pass from s to t and a corresponding feasible link flow allocation. • Flow feasibility: Both the flow conservation constraint and the capacity constraint must be satisfied. CS223 Advanced Data Structures and Algorithms
The Maximum Flow Problem CS223 Advanced Data Structures and Algorithms
Applications • Computer networks: Data traffic routing for throughput maximization. • Transportation networks: Road construction and traffic management. • Graph theory: Matching, assignment problems. CS223 Advanced Data Structures and Algorithms
Flow Graph and Residual Graph CS223 Advanced Data Structures and Algorithms
Basic Idea • Keep finding s-t augmenting paths until no such paths can be found in the residual graph. • Update the flow and residual graph according to the augmenting path in each step. CS223 Advanced Data Structures and Algorithms
A Greedy Algorithm which Does Not Work Find an augmenting path s-a-d-t with flow value 3 and update the flow and residual graphs as follows: CS223 Advanced Data Structures and Algorithms
The Ford-Fulkerson Algorithm Find an augmenting path s-a-d-t with flow value 3 and update the flow and residual graphs as follows: CS223 Advanced Data Structures and Algorithms
The Ford-Fulkerson Algorithm Find an augmenting path s-b-d-a-c-t with flow value 2 and update the flow and residual graphs as follows: CS223 Advanced Data Structures and Algorithms
The Implementation and Time Complexity • If all the link capacities are integers, then the time complexity of the Ford-Fulkerson algorithm is bounded by O(f|E|), where f is the max flow. • A bad example for random path selection. CS223 Advanced Data Structures and Algorithms
The Implementation and Time Complexity • In each step, find an augmenting path which allows largest the increase in flow using a modified Dijkstra’s algorithm. It has been proved that it terminates after O(|E|logCapmax) steps, so the time complexity is O(|E|2log|V|logCapmax). • The Edmonds-Karp algorithm: In each step, find an augmenting path with minimum number of edges using BFS. It has been proved that it terminates after O(|E||V|) steps. So the time complexity is O(|E|2|V|). CS223 Advanced Data Structures and Algorithms
Another Approach: Linear Programming LP in the standard form An LP can be solved by existing algorithms in polynomial time. CS223 Advanced Data Structures and Algorithms
Maximum Flow Problem - LP CS223 Advanced Data Structures and Algorithms
Shortest Path Problem - ILP CS223 Advanced Data Structures and Algorithms
Maximum Matching in A Bipartite Graph • A matching (a.k.a. independent edge set): a set of edges without common • vertices. • The maximum matching problem: find the matching with the maximum number of edges. CS223 Advanced Data Structures and Algorithms
Maximum Matching in A Bipartite Graph • A max-flow based algorithm CS223 Advanced Data Structures and Algorithms