/
CSEP 521 Applied Algorithms CSEP 521 Applied Algorithms

CSEP 521 Applied Algorithms - PowerPoint Presentation

lindy-dunigan
lindy-dunigan . @lindy-dunigan
Follow
343 views
Uploaded On 2020-01-18

CSEP 521 Applied Algorithms - PPT Presentation

CSEP 521 Applied Algorithms Richard Anderson Lecture 8 Network Flow Announcements Reading for this week 68 71 72 7374 will not be covered Next week 75712 Final exam March 18 630 pm At UW ID: 773138

graph flow algorithm problem flow graph problem algorithm capacity residual maximum find path paths network ford cut edges augmenting

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "CSEP 521 Applied Algorithms" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

CSEP 521Applied Algorithms Richard Anderson Lecture 8 Network Flow

Announcements Reading for this week 6.8, 7.1, 7.2 [7.3-7.4 will not be covered] Next week: 7.5-7.12 Final exam, March 18, 6:30 pm. At UW. 2 hours In class (CSE 303 / CSE 305) Comprehensive 67% post midterm, 33% pre midterm

Bellman-Ford Shortest Paths Algorithm Computes shortest paths from a starting vertex Allows negative cost edges Negative cost cycles identified Runtime O(nm) Easy to code

Bellman Ford Algorithm, Version 2 foreach w M[0, w] = infinity; M[0, v] = 0; for i = 1 to n-1 foreach w M[i, w] = min(M[i-1, w], min x (M[i-1,x] + cost[x,w]))

Bellman Ford Algorithm, Version 3 foreach w M[w] = infinity; M[v] = 0; for i = 1 to n-1 foreach w M[w] = min(M[w], min x (M[x] + cost[x,w]))

Bellman Ford Example Algorithm 2 i v 1 v 2 v 3 v 4 0123 Algorithm 3iv1v2v3v40123 v1 v2 v3 v4 2 1 -3 2 1

Finding the longest path in a graph S t 2 2 2 1 -3 -8 2 -3 4 4 -1 6 -1 -4

Foreign Exchange Arbitrage USD EUR CAD USD ------ 0.8 1.2 EUR 1.2 ------ 1.6 CAD 0.8 0.6 ----- USD CAD EUR 1.2 1.2 0.6 USD CAD EUR 0.8 0.8 1.6

Network Flow

Outline Network flow definitions Flow examples Augmenting Paths Residual Graph Ford Fulkerson Algorithm Cuts Maxflow-MinCut Theorem

Network Flow Definitions Capacity Source, Sink Capacity Condition Conservation Condition Value of a flow

Flow Example u s t v 20 20 30 10 10

Flow assignment and the residual graph u s t v 15 /20 20 /20 15 /30 0 /10 5 /10 u s t v 5 15 10 5 20 15 15 5

Network Flow Definitions Flowgraph: Directed graph with distinguished vertices s (source) and t (sink) Capacities on the edges, c(e) >= 0 Problem, assign flows f(e) to the edges such that: 0 <= f(e) <= c(e) Flow is conserved at vertices other than s and t Flow conservation: flow going into a vertex equals the flow going out The flow leaving the source is a large as possible

Flow Example a s d b c f e g h i t 20 5 20 20 20 20 20 5 5 5 20 5 10 20 5 20 20 5 20 20 5 5 10 30

Find a maximum flow a s d b c f e g h i t 25 5 20 20 20 30 20 5 5 5 20 5 10 20 5 20 10 5 20 20 5 5 20 30 Value of flow: Construct a maximum flow and indicate the flow value

Find a maximum flow a s d b c f e g h i t 25 5 20 20 20 30 20 5 5 5 20 5 10 20 5 20 10 5 20 20 5 5 20 30 Discussion slide 20 20 20 20 25 5 5 20 20 20 10 15 20 30 5 15 MAX FLOW 65

Augmenting Path Algorithm Augmenting path Vertices v 1 ,v 2 ,…,v k v 1 = s, v k = tPossible to add b units of flow between vj and vj+1 for j = 1 … k-1ust v 10/20 15/20 10/30 0/10 5/10

Find two augmenting paths s t 2/5 0/1 3/4 3/3 2/4 1/3 3/3 3/3 2/2 3/4 1/3 3/3 2/2 3/3 1/3 1/3 2/2 1/3

Residual Graph Flow graph showing the remaining capacity Flow graph G, Residual Graph G R G: edge e from u to v with capacity c and flow f G R : edge e’ from u to v with capacity c – f G R : edge e’’ from v to u with capacity f

Residual Graph u s t v 15/20 20/20 15/30 0/10 5/10 u s t v 5 15 10 5 20 15 15 5

Build the residual graph s d e g h t 3/5 2/4 3/3 1/5 1/5 1/1 1/1 3/3 2/5 s d e g h t Residual graph:

Augmenting Path Lemma Let P = v 1 , v 2 , …, v k be a path from s to t with minimum capacity b in the residual graph. b units of flow can be added along the path P in the flow graph. u s tv 15/20 20/20 15/30 0/10 5/10 u s t v 5 15 10 5 20 15 15 5

Proof Add b units of flow along the path P What do we need to verify to show we have a valid flow after we do this?

Ford-Fulkerson Algorithm (1956) while not done Construct residual graph G R Find an s-t path P in G R with capacity b > 0 Add b units along in G If the sum of the capacities of edges leaving S is at most C, then the algorithm takes at most C iterations

Cuts in a graph Cut: Partition of V into disjoint sets S, T with s in S and t in T. Cap(S,T): sum of the capacities of edges from S to T Flow(S,T): net flow out of S Sum of flows out of S minus sum of flows into S Flow(S,T) <= Cap(S,T)

What is Cap(S,T) and Flow(S,T) a s d b c f e g h i t 15 /25 5 /5 20 /20 20 /20 20 /20 25 /30 20 /20 5 /5 20 /20 0 /5 20 /20 15 /20 10 /10 20 /20 5 /5 20 /20 30 /30 S={s, a, b, e, h}, T = {c, f, i, d, g, t} 0 /5 0 /20 0 /5 0 /5 0 /5 0 /5 0 /10

Minimum value cut u s t v 40 40 10 10 10

Find a minimum value cut s t 6 6 10 7 3 5 3 6 2 4 5 8 5 4 8

MaxFlow – MinCut Theorem Let S, T be a cut, and F a flow Cap(S,T) >= Flow(S,T) If Cap(S,T) = Flow(S,T) S, T must be a minimum cut F must be a maximum flow The amazing Ford-Fulkerson theorem shows that there is always a cut that matches a flow, and also shows how their algorithm finds the flow

MaxFlow – MinCut Theorem There exists a flow which has the same value of the minimum cut Proof: Consider a flow where the residual graph has no s-t path with positive capacity Let S be the set of vertices in G R reachable from s with paths of positive capacity s t

Let S be the set of vertices in GR reachable from s with paths of positive capacity s t u v S T Cap(u,v) = 0 in G R Cap(u,v) = Flow(u,v) in G Flow(v,u) = 0 in G What can we say about the flows and capacity between u and v?

Max Flow - Min Cut Theorem Ford-Fulkerson algorithm finds a flow where the residual graph is disconnected, hence FF finds a maximum flow. If we want to find a minimum cut, we begin by looking for a maximum flow.

Performance The worst case performance of the Ford-Fulkerson algorithm is horrible u s t v 1000 1000 1 1000 1000

Better methods of finding augmenting paths Find the maximum capacity augmenting path O(m 2 log(C)) time algorithm for network flow Find the shortest augmenting path O(m 2 n) time algorithm for network flow Find a blocking flow in the residual graph O(mnlog n) time algorithm for network flow

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

Problem Reduction Reduce Problem A to Problem B Convert an instance of Problem A to an instance of Problem B Use a solution of Problem B to get a solution to Problem A Practical Use a program for Problem B to solve Problem A Theoretical Show that Problem B is at least as hard as Problem A

Problem Reduction Examples Reduce the problem of finding the Maximum of a set of integers to finding the Minimum of a set of integers Find the maximum of: 8, -3, 2, 12, 1, -6 Construct an equivalent minimization problem

Undirected Network Flow Undirected graph with edge capacities Flow may go either direction along the edges (subject to the capacity constraints) u s t v 10 10 5 20 20 Construct an equivalent flow problem

Bipartite Matching A graph G=(V,E) is bipartite if the vertices can be partitioned into disjoints sets X,Y A matching M is a subset of the edges that does not share any vertices Find a matching as large as possible

Application A collection of teachers A collection of courses And a graph showing which teachers can teach which courses RA PB CC DG AK 303 321 326 401 421

Converting Matching to Network Flow t s

Finding edge disjoint paths s t Construct a maximum cardinality set of edge disjoint paths

Theorem The maximum number of edge disjoint paths equals the minimum number of edges whose removal separates s from t