Mathematical optimization 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 efficiently using the network simplex algorithm.
Definition.
A flow network is a directed graph formula_1 with a source vertex formula_2 and a sink vertex formula_3, where each edge formula_4 has capacity formula_5, flow formula_6 and cost formula_7, with most minimum-cost flow algorithms supporting edges with negative costs. The cost of sending this flow along an edge formula_8 is formula_9. The problem requires an amount of flow formula_10 to be sent from source formula_11 to sink formula_12.
The definition of the problem is to minimize the total cost of the flow over all edges:
formula_13
with the constraints
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 formula_10.
A related problem is the minimum cost circulation problem, which can be used for solving minimum cost flow. The minimum cost circulation problem has no source and sink; instead it has costs and lower and upper bounds on each edge, and seeks flow amounts within the given bounds that balance the flow at each vertex and minimize the sum over edges of cost times flow. Any minimum-cost flow instance can be converted into a minimum cost circulation instance by setting the lower bound on all edges to zero, and then making an extra edge from the sink formula_12 to the source formula_11, with capacity formula_17 and lower bound formula_18, forcing the total flow from formula_11 to formula_12 to also be formula_10.
The following problems are special cases of the minimum cost flow problem (we provide brief sketches of each applicable reduction, in turn):
Solutions.
The minimum cost flow problem can be solved by linear programming, since we optimize a linear function, and all constraints are linear.
Apart from that, many combinatorial algorithms exist. Some of them are generalizations of maximum flow algorithms, others use entirely different approaches.
Well-known fundamental algorithms (they have many variations):
Application.
Minimum weight bipartite matching.
Given a bipartite graph "G" = ("A" ∪ "B", "E"), the goal is to find 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′". 
References.
 ;templatestyles src="Reflist/styles.css" / ;