Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS223 Advanced Data Structures and Algorithms 1 Maximum Flow Neil Tang 3/30/2010.

Similar presentations


Presentation on theme: "CS223 Advanced Data Structures and Algorithms 1 Maximum Flow Neil Tang 3/30/2010."— Presentation transcript:

1 CS223 Advanced Data Structures and Algorithms 1 Maximum Flow Neil Tang 3/30/2010

2 CS223 Advanced Data Structures and Algorithms 2 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

3 CS223 Advanced Data Structures and Algorithms 3 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.

4 CS223 Advanced Data Structures and Algorithms 4 The Maximum Flow Problem

5 CS223 Advanced Data Structures and Algorithms 5 Applications  Computer networks: Data traffic routing for throughput maximization.  Transportation networks: Road construction and traffic management.  Graph theory: Matching, assignment problems.

6 CS223 Advanced Data Structures and Algorithms 6 Flow Graph and Residual Graph

7 CS223 Advanced Data Structures and Algorithms 7 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.

8 CS223 Advanced Data Structures and Algorithms 8 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:

9 CS223 Advanced Data Structures and Algorithms 9 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:

10 CS223 Advanced Data Structures and Algorithms 10 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:

11 CS223 Advanced Data Structures and Algorithms 11 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.

12 CS223 Advanced Data Structures and Algorithms 12 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|logCap max ) steps, so the time complexity is O(|E| 2 log|V|logCap max ).  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|).

13 13 Another Approach: Linear Programming LP in the standard form CS223 Advanced Data Structures and Algorithms An LP can be solved by existing algorithms in polynomial time.

14 14 Maximum Flow Problem - LP CS223 Advanced Data Structures and Algorithms

15 15 Shortest Path Problem - ILP CS223 Advanced Data Structures and Algorithms

16 16 Maximum Matching in A Bipartite Graph CS223 Advanced Data Structures and Algorithms 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.

17 17 Maximum Matching in A Bipartite Graph CS223 Advanced Data Structures and Algorithms A max-flow based algorithm


Download ppt "CS223 Advanced Data Structures and Algorithms 1 Maximum Flow Neil Tang 3/30/2010."

Similar presentations


Ads by Google