Network Flow
- in a finite directed graph (also called a network), each edge has a capacity and each edge receives a flow. Flow satisfies 2 constraints:
 - the amount of flow cannot exceed the capacity of the edge.
 - the amount of flow into a node equals the amount of flow out of it except source, which has only outgoing flow, or sink which has only incoming flow.
 - flow network can be used to model
 - traffic in a road system
 - circulation with demands
 - fluid in pipes
 - currents in an electrical circuit
 - etc
 - Max-Flow Problem: following network (from CLRS) has a maximum possible flow from source-0 to sink-5 is 23. how to find the max possible flow in a network?
 
- Bipartite Matching Problem
 - Bipartite graph: each node has no edge for the same layer
 - Min-cost Cut Problem
 - Remove some edges from graph G such that there is no path from s to t after removing the edges (image destroy bridges with minimum cost)
 
Finding Max-Flow (Ford-Fulkerson Algorithm)
Ford-Fulkerson algorithm:
Start with 0 flow.* this FF algorithm description is very much simplified. To implement the algorithm, one has to understand concepts like: residual graph, forward edge, backward edge.
While there exists an augmenting path:
- find an augmenting path
- compute bottleneck capacity
- increase flow on that path by bottleneck capacity
Questions:
- how to find an augmenting path?
 - if FF terminates, does it always compute a max-flow?
 - Does FF always terminate? If so, after how many augmentations?
 
Min-cost Cut
This is a variant of max-flow problem. Basically, the problem says how to remove some edges with min-cost such that no path from s to t. For the network from CLRS book, the min-cost cut as follows:- solution
 - max-flow min-cut theorem says: (max flow) = (min-cut).
 - from above example, we know the max flow is 23, the min-cut is 12 + 7 + 4 = 23
 - CLRS book has proof about this theorem
 - sometimes min-cost cut also calls minimum s-t cut (s-t: source-terminal/sink)
 - similar to: (min vertex cover) = (max independent set), for a bipartite graph (Konig Theorem)
 - one can use FF algorithm to find max-flow, but how to find min-cost cut?
 - one answer is to use residual graph
 - run FF algorithm and consider the final residual graph
 - collect all reachable vertices from source (obviously, this set does not include t)
 - min-cost cut edges are those edges from reachable vertices to unreachable vertices
 - min-cost cut problem is different with min-cut problem mentioned in Randomized Algorithm
 - randomized min-cut problem is about undirected graph, this is about directed graph
 - randomized min-cut problem is cutting minimum number of edges of G to disconnect the graph. min-cost cut is about disconnecting s-t, and is about min-cost of edges not about edge numbers.
 - min-cut problem is much harder than min-cost cut problem discussed here!
 
[TODO] Min-cost Max-flow
finding a cheapest possible way of sending a mount of flow through a network.




Your website is really cool and this is a great inspiring article. Thank you so much. How To Get Traffic To My Website Or Blog
ReplyDelete