Minimum-cost flow problem
The minimum-cost flow problem (MCFP) is an optimization and decision problem to find the cheapest possible way of sending a certain amount of flow through a flow network. A typical application of this problem involves finding the best delivery route from a factory to a warehouse where the road network has some capacity and cost associated. The minimum cost flow problem is one of the most fundamental among all flow and circulation problems because most other such problems can be cast as a minimum cost flow problem and also that it can be solved very efficiently using the network simplex algorithm.
A flow network is a directed graph with a source vertex and a sink vertex , where each edge has capacity , flow and cost , with most minimum-cost flow algorithms supporting edges with negative costs. The cost of sending this flow along an edge is . The problem requires an amount of flow to be sent from source to sink .
The definition of the problem is to minimize the total cost of the flow over all edges:
with the constraints
Capacity constraints: Skew symmetry: Flow conservation: Required flow:
Relation to other problems
A variation of this problem is to find a flow which is maximum, but has the lowest cost among the maximum flow solutions. This could be called a minimum-cost maximum-flow problem and is useful for finding minimum cost maximum matchings.
With some solutions, finding the minimum cost maximum flow instead is straightforward. If not, one can find the maximum flow by performing a binary search on .
A related problem is the minimum cost circulation problem, which can be used for solving minimum cost flow. This is achieved by setting the lower bound on all edges to zero, and then making an extra edge from the sink to the source , with capacity and lower bound , forcing the total flow from to to also be .
The problem can be specialized into two other problems：
- if the capacity constraint is removed, the problem is reduced to the shortest path problem,
- if the costs are all set equal to zero, the problem is reduced to the maximum flow problem.
The minimum cost flow problem can be solved by linear programming, since we optimize a linear function, and all constraints are linear.
Well-known fundamental algorithms (they have many variations):
- Cycle canceling: a general primal method.
- Minimum mean cycle canceling: a simple strongly polynomial algorithm.
- Successive shortest path and capacity scaling: dual methods, which can be viewed as the generalizations of the Ford–Fulkerson algorithm.
- Cost scaling: a primal-dual approach, which can be viewed as the generalization of the push-relabel algorithm.
- Network simplex algorithm: a specialized version of the linear programming simplex method.
- Out-of-kilter algorithm by D. R. Fulkerson
Minimum weight bipartite matching
Given a bipartite graph G = (A ∪ B, E), the goal is to ﬁnd the maximum cardinality matching in G that has minimum cost. Let w: E → R be a weight function on the edges of E. The minimum weight bipartite matching problem or assignment problem is to find a perfect matching M ⊆ E whose total weight is minimized. The idea is to reduce this problem to a network flow problem.
Let G’ = (V’ = A ∪ B, E’ = E). Assign the capacity of all the edges in E’ to 1. Add a source vertex s and connect it to all the vertices in A’ and add a sink vertex t and connect all vertices inside group B’ to this vertex. The capacity of all the new edges is 1 and their costs is 0. It is proved that there is minimum weight perfect bipartite matching in G if and only if there a minimum cost flow in G’. (citation missing) 
- ^ Ravindra K. Ahuja, Thomas L. Magnanti, and James B. Orlin (1993). Network Flows: Theory, Algorithms, and Applications. Prentice-Hall, Inc. ISBN 0-13-617549-X.
- ^ Morton Klein (1967). "A primal method for minimal cost flows with applications to the assignment and transportation problems". Management Science. 14: 205–220. doi:10.1287/mnsc.14.3.205.
- ^ Andrew V. Goldberg and Robert E. Tarjan (1989). "Finding minimum-cost circulations by canceling negative cycles". Journal of the ACM. 36 (4): 873–886. doi:10.1145/76359.76368.
- ^ Jack Edmonds and Richard M. Karp (1972). "Theoretical improvements in algorithmic efficiency for network flow problems". Journal of the ACM. 19 (2): 248–264. doi:10.1145/321694.321699.
- ^ Andrew V. Goldberg and Robert E. Tarjan (1990). "Finding minimum-cost circulations by successive approximation". Math. Oper. Res. 15 (3): 430–466. doi:10.1287/moor.15.3.430.
- ^ James B. Orlin (1997). "A polynomial time primal network simplex algorithm for minimum cost flows". Mathematical Programming. 78: 109–129. doi:10.1007/bf02614365.