# Network Flow

The Maximum Flow Problem and The Ford-Fulkerson Algorithm

Types of Networks
         

Internet Telephone Cell Highways Rail Electrical Power Water Sewer Gas …

The US wanted to know how quickly the Soviet Union could get supplies through its rail network to its satellite states in Eastern Europe. The Importance of Algorithms. The algorithm was subsequently named the FordFulkerson algorithm.Maximum Flow Problem    How can we maximize the flow in a network from a source or set of sources to a destination of set of destinations? The problem reportedly rose to prominence in relation to the rail networks of the Soviet Union. at www. named Ford and Fulkerson. and that solving the max flow problem also solves the min cut problem of figuring out the cheapest way to cut off the Soviet Union from its satellites. ◦ It turned out that these two problems were closely related. and is one of the more famous algorithms in computer science.topcoder. during the 1950's.  Source: lbackstrom.com The first efficient algorithm for finding the maximum flow was conceived by two Computer Scientists. . In addition. the US wanted to know which rails it could destroy most easily to cut off the satellite states from the rest of the Soviet Union.

v> •A source node s in which flow arrives •A sink node t out which flow leaves Goal: Max Flow .v> has a maximum capacity c<u.Network Flow •A Network is a directed graph G •Edges represent pipes that carry flow •Each edge <u.

Network Flow  The network flow problem is as follows: ◦ Given a connected directed graph G  with non-negative integer weights. called the source and the sink. s and t. 16 4 a 10 12 b 20 7 4 9 s 13 t ◦ 2 different vertices.  (where each edge stands for the capacity of that edge). c 14 d Each edge stands for the capacity of that edge. ◦ Find the maximum amount of some commodity that can flow through the network .  such that the source only has out-edges and the sink only has in-edges.

and the sink is where it ends up. ◦ The source is where the liquid is pouring from. ◦ Each edge weight specifies the maximal amount of liquid that can flow through that pipe per second. ◦ Given that information. what is the most liquid that can flow from source to sink per second.Network Flow  One way to imagine the situation is imagining each edge as a pipe that allows a certain flow of a liquid per second. . in the steady state? a 16 4 10 12 b 20 7 4 9 s 13 t c 14 d Each edge stands for the capacity of that edge.

Network Flow a 16 4 10 12 b 20 12/16 a t 0/4 12/12 b 19/20 9 0/9 s 13 7 4 s 0/10 7/7 4/4 t c 14 d 11/13 c 11/14 d This graph contains the capacities of each edge in the graph. the network flow is  . or into the sink. Here is an example of a flow in the graph.  For the situation above. The flow of the network is defined as the flow from the source.

. we must have the sum of flow coming into a vertex equal to the flow coming out of a vertex. ◦ For the situation above. each flow must be less than or equal to the capacity of the edge.  The Capacity Rule: ◦ Also. the network flow is 23. for each vertex in the graph except the source and the sink. or into the sink.a 16 4 10 12 b 20 12/16 a 0/4 12/12 b 19/20 0/9 9 s 13 7 4 t s 0/10 7/7 4/4 t 11/13 c 14 d c 11/14 d capacities  flow The Conservation Rule: ◦ In order for the assignment of flows to be valid.  The flow of the network is defined as the flow from the source.

we will use the following terms: ◦ Residual capacity – is simply an edge’s unused capacity. a 0/16 0/4 0/12 b 0/20 0/9 Using the notation: used / capacity. c 0/14 d . so all of the residual capacities will be just the original capacity.  Initially none of the capacities will have been used. 0/7 0/4 s 0/13 0/10 t Residual Capacity: capacity .Network Flow  In order to determine the maximum flow of a network.used.

c 0/14 d . which will end up being the max excess flow we can push down that path. a 0/16 0/4 0/12 b 0/20 0/9 Using the notation: used / unused. 0/7 0/4 s 0/13 0/10 t Residual Capacity: unused .used.Network Flow ◦ Residual capacity of a path – the minimum of the residual capacities of the edges on that path. ◦ Augmenting path – defined as one where you have a path from the source to the sink where every edge has a non-zero residual capacity.

t in the graph below: ◦ And add the flow to that path. 0/9 s 4/13 0/13 0/10 0/7 4/4 0/4 t ◦ 4 in this case.d.Ford-Fulkerson Algorithm While there exists an augmenting path Add the appropriate flow to that augmenting path  So we’re going to arbitrarily choose the augmenting path s. 0/12 a 0/16 0/4 b 0/20 ◦ Residual capacity of a path – the minimum of the residual capacities of the edges on that path. which is the limiting factor for this path’s flow. c 4/14 0/14 d .c.

Ford-Fulkerson Algorithm While there exists an augmenting path Add the appropriate flow to that augmenting path  Choose another augmenting path (one where you have a path from the source to the sink where every edge has a non-zero residual capacity.b. which is the limiting factor for this path’s flow.) ◦ s.t 12/12 0/12 a 12/16 0/16 0/4 b 12/20 0/20 ◦ Residual capacity of a path – the minimum of the residual capacities of the edges on that path.a. c 4/14 d . 0/9 s 4/13 0/10 0/7 4/4 t ◦ 12 in this case.

t 12/12 a 12/16 0/4 b 12/20 19/20 ◦ Residual capacity of a path – the minimum of the residual capacities of the edges on that path. 4/13 11/13 c 4/14 11/14 d .) ◦ s. b.c. d. which is the limiting factor for this path’s flow. 0/9 s 0/10 0/7 7/7 4/4 t ◦ 7 in this case.Ford-Fulkerson Algorithm While there exists an augmenting path Add the appropriate flow to that augmenting path  Choose another augmenting path (one where you have a path from the source to the sink where every edge has a non-zero residual capacity.

Ford-Fulkerson Algorithm While there exists an augmenting path Add the appropriate flow to that augmenting path  Are there any more augmenting paths? ◦ No! We’re done ◦ The maximum flow = 19 + 4 = 23 12/12 a 12/16 0/4 b 19/20 0/9 s 0/10 7/7 4/4 t 11/13 c 11/14 d .

a subgraph with all edges of full capacity removed is called a residual graph.) ◦ This graph.  It is difficult to analyze the true running time of this algorithm because it is unclear exactly how many augmenting paths can be found in an arbitrary flow network. ◦ Thus. at worst-case. each augmenting path adds 1 to the flow of a network. and each search for an augmenting path takes O(E) time. the algorithm takes O(|f|E) time. where E is the number of edges in the graph. ◦ In the worst case. where |f| is .Ford-Fulkerson Algorithm Runtime an augmenting path While there exists Add the appropriate flow to that augmenting path  We can check the existence of an augmenting path by doing a graph traversal on the network (with all full capacity edges removed.

its total running time is O(VE2). Thus. the augmenting path suggested is the augmenting path with the minimal number of edges.  (We can find this using BFS. The idea is to try to choose good augmenting paths.) . since this finds all paths of a certain length before moving on to longer paths.Edmonds-Karp Algorithm  This algorithm is a variation on the FordFulkerson method which is intended to increase the speed of the first algorithm. ◦ The total number of iterations of the algorithm using this strategy is O(VE).  ◦ In this algorithm.

◦ This might be applicable if you wanted to get a greater throughput of data in a network and you wanted to figure out where in the network you needed to add a router that could handle more data per unit of time.Network Flow  Consider a network flow problem where the goal was to figure out how to change the capacities to increase the maximum flow in the network. .

◦ For example. s v1  v2  …  vn  t. where each edge has extra capacity EXCEPT for the edge vi  vi+1.Network Flow  How to increase the maximum flow of a network. ◦ Let’s say you restrict your search in your network (that is already at max flow) to paths that have at most one edge that is being used to capacity. What is a simple fix to add extra capacity to one of the edges that will add maximum flow to the network?  How much will this simple fix add?  .

Network Flow  Take a look at the extra capacity available through each of the other edges ◦ ◦ ◦ ◦ s → v1. . because then some other edge would become the bottleneck. …. Take the minimum of these values. v1 → v2. Adding more than this would do no good. vi+1 → vi+2. add this much capacity to the edge vi → vi+1. vi-1 → vi. vn → t. …. Then.  This just adds enough capacity so that the original edge is no more of a bottleneck than the “second worst” edge in this particular path.

edu/~dmarino/ucf/cop350 3/lectures/  Additional material from the textbook:  Data Structures and Algorithm Analysis in Java (Second Edition) by Mark Allen Weiss  J Elder’s Network Flow slides.References Slides adapted from Arup Guha’s Computer Science II Lecture notes: http://www.cs.ucf. York University .