The minimum-cost flow problem (MCFP) is an
optimization
Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criterion, from some set of available alternatives. It is generally divided into two subfi ...
and
decision problem
In computability theory and computational complexity theory, a decision problem is a computational problem that can be posed as a yes–no question of the input values. An example of a decision problem is deciding by means of an algorithm wheth ...
to find the cheapest possible way of sending a certain amount of flow through a
flow network
In graph theory, a flow network (also known as a transportation network) is a directed graph where each edge has a capacity and each edge receives a flow. The amount of flow on an edge cannot exceed the capacity of the edge. Often in operations re ...
. 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 In mathematical optimization, the network simplex algorithm is a graph theoretic specialization of the simplex algorithm. The algorithm is usually formulated in terms of a minimum-cost flow problem. The network simplex method works very well in p ...
.
Definition
A flow network is a
directed graph
In mathematics, and more specifically in graph theory, a directed graph (or digraph) is a graph that is made up of a set of vertices connected by directed edges, often called arcs.
Definition
In formal terms, a directed graph is an ordered pa ...
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
:
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
In computer science, binary search, also known as half-interval search, logarithmic search, or binary chop, is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the ...
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 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
to a designated sink
. Give all edges infinite capacity.
*
Maximum flow problem
In optimization theory, maximum flow problems involve finding a feasible flow through a flow network that obtains the maximum possible flow rate.
The maximum flow problem can be seen as a special case of more complex network flow problems, such ...
. Let all nodes have zero demand, and let the cost associated with traversing any edge be zero. Now, introduce a new edge
from the current sink
to the current source
. Stipulate that the per-unit cost of sending flow across edge
equals
, and permit
infinite capacity. (This reduction is also mentioned in
Circulation problem The circulation problem and its variants are a generalisation of network flow problems, with the added constraint of a lower bound on edge flows, and with flow conservation also being required for the source and sink (i.e. there are no special node ...
).
*
Assignment problem
The assignment problem is a fundamental combinatorial optimization problem. In its most general form, the problem is as follows:
:The problem instance has a number of ''agents'' and a number of ''tasks''. Any agent can be assigned to perform any ta ...
. Suppose that each partite set in the bipartition has
vertices, and denote the bipartition by
. Give each
supply
and give each
demand
. Each edge is to have unit capacity.
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, for a comprehensive survey, see . Some of them are generalizations of
maximum flow algorithms, others use entirely different approaches.
Well-known fundamental algorithms (they have many variations):
* ''Cycle canceling'': a general primal method.
* ''Cut canceling'': a general dual method.
* ''Minimum mean cycle canceling'': a simple
strongly polynomial
In computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations performed by t ...
algorithm.
* ''Successive shortest path'' and ''capacity scaling'': dual methods, which can be viewed as the generalization 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 In mathematical optimization, the network simplex algorithm is a graph theoretic specialization of the simplex algorithm. The algorithm is usually formulated in terms of a minimum-cost flow problem. The network simplex method works very well in p ...
'': a specialized version of the
linear programming simplex method
In mathematical optimization, Dantzig's simplex algorithm (or simplex method) is a popular algorithm for linear programming.
The name of the algorithm is derived from the concept of a simplex and was suggested by T. S. Motzkin. Simplices are n ...
.
* ''
Out-of-kilter algorithm The out-of-kilter algorithm is an algorithm that computes the solution to the minimum-cost flow problem in a flow network
In graph theory, a flow network (also known as a transportation network) is a directed graph where each edge has a capacity ...
'' by
D. R. Fulkerson
Application
Minimum weight bipartite matching
Given a
bipartite graph , 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 whose total weight is minimized. The idea is to reduce this problem to a network flow problem.
Let . 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′''.
See also
*
LEMON (C++ library)
{{Infobox Software
, logo =
, released = {{start date, 2004, 9, 30
, latest release version = 1.3.1
, latest release date = {{start date, 2014, 7, 7
, programming language = C++
, operating system = Cross-platform
, platform = GNU C ...
*
GNU Linear Programming Kit
The GNU Linear Programming Kit (GLPK) 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 for ...
*
Network flow problem
In combinatorial optimization, network flow problems are a class of computational problems in which the input is a flow network (a graph with numerical capacities on its edges), and the goal is to construct a flow, numerical values on each edge t ...
References
#
#
#
#
#
#
#
# {{cite journal
, author = James B. Orlin
, author-link = James B. Orlin
, title = A polynomial time primal network simplex algorithm for minimum cost flows
, journal = Mathematical Programming
, volume = 78
, issue = 2
, pages = 109–129
, year = 1997
, doi=10.1007/bf02614365
, hdl = 1721.1/2584
, hdl-access = free
External links
LEMON C++ library with several maximum flow and minimum cost circulation algorithms
Network flow problem
Mathematical problems