Reference articles on history, science, culture and more
Encyclopedia

Minimum-cost flow problem

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.

01Definition

A flow network is a directed graph G=(V,E) with a source vertex s\in V and a sink vertex t\in V, where each edge (u,v)\in E has capacity c(u,v)>0, flow f(u,v) and cost a(u,v), with most minimum-cost flow algorithms supporting edges with negative costs. The cost of sending this flow along an edge (u,v) is f(u,v)\cdot a(u,v). The problem requires an amount of flow d to be sent from source s to sink t.

The definition of the problem is to minimize the total cost of the flow over all edges:

\sum _{(u,v)\in E}a(u,v)\cdot f(u,v)

with the constraints

Capacity constraints:\,f(u,v)\leq c(u,v)
Skew symmetry:\,f(u,v)=-f(v,u)
Flow conservation:\,\sum _{w\in V}f(u,w)=0{\text{ for all }}u\neq s,t
Required flow:\,\sum _{w\in V}f(s,w)=d{\text{ and }}\sum _{w\in V}f(w,t)=d
Reducing Minimum weight bipartite matching to minimum cost max flow problem
Reducing Minimum weight bipartite matching to minimum cost max flow problem

02Relation 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 d.

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 t to the source s, with capacity c(t,s)=d and lower bound l(t,s)=d, forcing the total flow from s to t to also be d.

The following problems are special cases of the minimum cost flow problem (we provide brief sketches of each applicable reduction, in turn):

  • Shortest path problem (single-source). Require that a feasible solution to the minimum cost flow problem sends one unit of flow from a designated source s to a designated sink t. Give all edges infinite capacity.
  • Maximum flow problem. Choose a large demand d (large enough to exceed the maximum flow; for instance, the sum of capacities out of the source vertex) Set the costs of all edges in the maximum flow instance to zero, and introduce a new edge from source to sink with unit cost and capacity d.
  • Assignment problem. Suppose that each partite set in the bipartition has n vertices, and denote the bipartition by (X,Y). Give each x\in X supply 1/n and give each y\in Y demand 1/n. Each edge is to have unit capacity.

03Solutions

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):

Cycle canceling algorithms

These algorithms are iterative and like the Ford-Fulkerson algorithm they define a residual graph. If there is flow f(u,v) on arc e=(u,v), then its residual capacity is defined to be c(e)-f(e) and its residual cost is a(e). The reverse arc (which has negative flow value) has a negative cost -a(e). The algorithms then start with an arbitrary feasible flow and iteratively improve the cost of the solution by pushing flow around negative-cost cycles. In the Minimum mean cycle canceling, the algorithm selects a cycle that has minimum mean cost (the ratio of the total cycle cost to the number of arcs). Such a cycle can be found in polynomial time (by binary search using the Bellman-Ford algorithm) and the total number of iterations has been proven to be polynomial.

Almost-linear time algorithm

A deterministic almost-linear time algorithm is known to solve the minimum-cost flow problem on directed graphs. That is, on a graph with m edges and polynomially bounded demands, costs, and capacities, the algorithm runs in time m^{1+o(1)}.

04Application

Minimum weight bipartite matching

Given a bipartite graph G = (AB, E), the goal is to find the maximum cardinality matching in G that has minimum cost. Let w: ER be a weight function on the edges of E. The minimum weight bipartite matching problem or assignment problem is to find a perfect matching ME whose total weight is minimized. The idea is to reduce this problem to a network flow problem.

Let G = (V = AB, 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.

Watch videos about Minimum-cost flow problemExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Minimum-cost flow problem, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.

Continue exploring

Related topics

LEMON (C++ library)

LEMON is an open source graph library written in the C++ language providing implementations of common data structures and algorithms with focus on combinatorial optimization tasks connected mainly with graphs and networks. The library is part of the COIN-OR project.

GNU Linear Programming Kit

The GNU Linear Programming Kit is a software package intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library.

Network flow problem

In combinatorial optimization, network flow problems are a class of computational problems in which the input is a flow network, and the goal is to construct a flow, numerical values on each edge that respect the capacity constraints and that have incoming flow equal to outgoing flow at all vertices except for certain designated terminals. Specific types of network flow problems include: The maximum flow problem, in which the goal is to maximize the total amount of flow out of the source terminals and into the sink terminals The minimum-cost flow problem, in which the edges have costs as well as capacities and the goal is to achieve a given amount of flow (or a maximum flow) that has the minimum possible cost The multi-commodity flow problem, in which one must construct multiple flows for different commodities whose total flow amounts together respect the capacities Nowhere-zero flow, a type of flow studied in combinatorics in which the flow amounts are restricted to a finite set of nonzero values The max-flow min-cut theorem equates the value of a maximum flow to the value of a minimum cut, a partition of the vertices of the flow network that minimizes the total capacity of edges crossing from one side of the partition to the other.