In
combinatorial optimization
Combinatorial optimization is a subfield of mathematical optimization that consists of finding an optimal object from a finite set of objects, where the set of feasible solutions is discrete or can be reduced to a discrete set. Typical combi ...
, network flow problems are a class of computational problems in which the input is 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 res ...
(a graph with numerical capacities on its edges), 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 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 ...
, 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
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 rou ...
, 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 The multi-commodity flow problem is a network flow problem with multiple commodities (flow demands) between different source and sink nodes.
Definition
Given a flow network \,G(V,E), where edge (u,v) \in E has capacity \,c(u,v). There are \,k comm ...
, 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
In computer science and optimization theory, the max-flow min-cut theorem states that in a flow network, the maximum amount of flow passing from the ''source'' to the ''sink'' is equal to the total weight of the edges in a minimum cut, i.e., the ...
equates the value of a maximum flow to the value of a
minimum cut
In graph theory, a minimum cut or min-cut of a graph is a cut (a partition of the vertices of a graph into two disjoint subsets) that is minimal in some metric.
Variations of the minimum cut problem consider weighted graphs, directed graphs, term ...
, 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.
Approximate max-flow min-cut theorems provide an extension of this result to multi-commodity flow problems. The
Gomory–Hu tree
In combinatorial optimization, the Gomory–Hu tree of an undirected graph with capacities is a weighted tree that represents the minimum ''s''-''t'' cuts for all ''s''-''t'' pairs in the graph. The Gomory–Hu tree can be constructed in maximum ...
of an undirected flow network provides a concise representation of all minimum cuts between different pairs of terminal vertices.
Algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
s for constructing flows include
*
Dinic's algorithm Dinic's algorithm or Dinitz's algorithm is a strongly polynomial algorithm for computing the maximum flow in a flow network, conceived in 1970 by Israeli (formerly Soviet) computer scientist Yefim (Chaim) A. Dinitz. The algorithm runs in O(V^2 E) ti ...
, a strongly polynomial algorithm for maximum flow
*The
Edmonds–Karp algorithm
In computer science, the Edmonds–Karp algorithm is an implementation of the Ford–Fulkerson method for computing the maximum flow in a flow network in O(, V, , E, ^2) time. The algorithm was first published by Yefim Dinitz (whose name is also ...
, a faster strongly polynomial algorithm for maximum flow
*The
Ford–Fulkerson algorithm, a greedy algorithm for maximum flow that is not in general strongly polynomial
*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 ...
, a method based on linear programming but specialized for network flow
*The
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 ...
for minimum-cost flow
*The
push–relabel maximum flow algorithm In mathematical optimization, the push–relabel algorithm (alternatively, preflow–push algorithm) is an algorithm for computing maximum flows in a flow network. The name "push–relabel" comes from the two basic operations used in the algorithm. ...
, one of the most efficient known techniques for maximum flow
Otherwise the problem can be formulated as a more conventional
linear program
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
or similar and solved using a general purpose optimization solver.
{{sia
Graph algorithms
Combinatorial optimization
Directed graphs