Maximum flow problem

Last updated

Flow network for the problem: Each human (ri) is willing to adopt a cat (wi1) and/or a dog (wi2). However each pet (pi) has a preference for only a subset of the humans. Find any matching of pets to humans such that the maximum number of pets are adopted by one of its preferred humans. Pets flow.svg
Flow network for the problem: Each human (ri) is willing to adopt a cat (wi1) and/or a dog (wi2). However each pet (pi) has a preference for only a subset of the humans. Find any matching of pets to humans such that the maximum number of pets are adopted by one of its preferred humans.

In optimization theory, maximum flow problems involve finding a feasible flow through a flow network that obtains the maximum possible flow rate.

Contents

The maximum flow problem can be seen as a special case of more complex network flow problems, such as the circulation problem. The maximum value of an s-t flow (i.e., flow from source s to sink t) is equal to the minimum capacity of an s-t cut (i.e., cut severing s from t) in the network, as stated in the max-flow min-cut theorem.

History

The maximum flow problem was first formulated in 1954 by T. E. Harris and F. S. Ross as a simplified model of Soviet railway traffic flow. [1] [2] [3]

In 1955, Lester R. Ford, Jr. and Delbert R. Fulkerson created the first known algorithm, the Ford–Fulkerson algorithm. [4] [5] In their 1955 paper, [4] Ford and Fulkerson wrote that the problem of Harris and Ross is formulated as follows (see [1] p. 5):

Consider a rail network connecting two cities by way of a number of intermediate cities, where each link of the network has a number assigned to it representing its capacity. Assuming a steady state condition, find a maximal flow from one given city to the other.

In their book Flows in Networks, [5] in 1962, Ford and Fulkerson wrote:

It was posed to the authors in the spring of 1955 by T. E. Harris, who, in conjunction with General F. S. Ross (Ret.), had formulated a simplified model of railway traffic flow, and pinpointed this particular problem as the central one suggested by the model [11].

where [11] refers to the 1955 secret report Fundamentals of a Method for Evaluating Rail net Capacities by Harris and Ross [3] (see [1] p. 5).

Over the years, various improved solutions to the maximum flow problem were discovered, notably the shortest augmenting path algorithm of Edmonds and Karp and independently Dinitz; the blocking flow algorithm of Dinitz; the push-relabel algorithm of Goldberg and Tarjan; and the binary blocking flow algorithm of Goldberg and Rao. The algorithms of Sherman [6] and Kelner, Lee, Orecchia and Sidford, [7] [8] respectively, find an approximately optimal maximum flow but only work in undirected graphs.

In 2013 James B. Orlin published a paper describing an algorithm. [9]

In 2022 Li Chen, Rasmus Kyng, Yang P. Liu, Richard Peng, Maximilian Probst Gutenberg, and Sushant Sachdeva published an almost-linear time algorithm running in for the minimum-cost flow problem of which for the maximum flow problem is a particular case. [10] [11] For the single-source shortest path (SSSP) problem with negative weights another particular case of minimum-cost flow problem an algorithm in almost-linear time has also been reported. [12] [13] Both algorithms were deemed best papers at the 2022 Symposium on Foundations of Computer Science. [14] [15]

Definition

A flow network, with source s and sink t. The numbers next to the edges are the capacities. Simpe flow network.svg
A flow network, with source s and sink t. The numbers next to the edges are the capacities.

First we establish some notation:

Definition. The capacity of an edge is the maximum amount of flow that can pass through an edge. Formally it is a map

Definition. A flow is a map that satisfies the following:

Remark. Flows are skew symmetric: for all

Definition. The value of flow is the amount of flow passing from the source to the sink. Formally for a flow it is given by:

Definition. The maximum flow problem is to route as much flow as possible from the source to the sink, in other words find the flow with maximum value.

Note that several maximum flows may exist, and if arbitrary real (or even arbitrary rational) values of flow are permitted (instead of just integers), there is either exactly one maximum flow, or infinitely many, since there are infinitely many linear combinations of the base maximum flows. In other words, if we send units of flow on edge in one maximum flow, and units of flow on in another maximum flow, then for each we can send units on and route the flow on remaining edges accordingly, to obtain another maximum flow. If flow values can be any real or rational numbers, then there are infinitely many such values for each pair .

Algorithms

The following table lists algorithms for solving the maximum flow problem. Here, and denote the number of vertices and edges of the network. The value refers to the largest edge capacity after rescaling all capacities to integer values (if the network contains irrational capacities, may be infinite).

MethodYearComplexityDescription
Linear programming Constraints given by the definition of a legal flow. See the linear program here.
Ford–Fulkerson algorithm 1955As long as there is an open path through the residual graph, send the minimum of the residual capacities on that path.
Edmonds–Karp algorithm 1970A specialization of Ford–Fulkerson, finding augmenting paths with breadth-first search.
Dinic's algorithm 1970In each phase the algorithms builds a layered graph with breadth-first search on the residual graph. The maximum flow in a layered graph can be calculated in time, and the maximum number of phases is . In networks with unit capacities, Dinic's algorithm terminates in time.
MKM (Malhotra, Kumar, Maheshwari) algorithm [16] 1978A modification of Dinic's algorithm with a different approach to constructing blocking flows. Refer to the original paper.
Dinic's algorithm with dynamic trees1983The dynamic trees data structure speeds up the maximum flow computation in the layered graph to .
General push–relabel algorithm [17] 1986The push relabel algorithm maintains a preflow, i.e. a flow function with the possibility of excess in the vertices. The algorithm runs while there is a vertex with positive excess, i.e. an active vertex in the graph. The push operation increases the flow on a residual edge, and a height function on the vertices controls through which residual edges can flow be pushed. The height function is changed by the relabel operation. The proper definitions of these operations guarantee that the resulting flow function is a maximum flow.
Push–relabel algorithm with FIFO vertex selection rule [17] 1988Push-relabel algorithm variant which always selects the most recently active vertex, and performs push operations while the excess is positive and there are admissible residual edges from this vertex.
Push–relabel algorithm with maximum distance vertex selection rule [18] 1988Push-relabel algorithm variant which always selects the most distant vertex from or (i.e. the highest label vertex) but otherwise proceeds as the FIFO algorithm.
Push-relabel algorithm with dynamic trees [17] 1988The algorithm builds limited size trees on the residual graph regarding to the height function. These trees provide multilevel push operations, i.e. pushing along an entire saturating path instead of a single edge.
KRT (King, Rao, Tarjan)'s algorithm [19] 1994
Binary blocking flow algorithm [20] 1998
James B Orlin's + KRT (King, Rao, Tarjan)'s algorithm [9] 2013Orlin's algorithm solves max-flow in time for while KRT solves it in for .
Kathuria-Liu-Sidford algorithm [21] 2020Interior point methods and edge boosting using -norm flows. Builds on earlier algorithm of Madry, which achieved runtime . [22]
BLNPSSSW / BLLSSSW algorithm [23]

[24]

2020Interior point methods and dynamic maintenance of electric flows with expander decompositions.
Gao-Liu-Peng algorithm [25] 2021Gao, Liu, and Peng's algorithm revolves around dynamically maintaining the augmenting electrical flows at the core of the interior point method based algorithm from [Mądry JACM ‘16]. This entails designing data structures that, in limited settings, return edges with large electric energy in a graph undergoing resistance updates.
Chen, Kyng, Liu, Peng, Gutenberg and Sachdeva's algorithm [10] 2022

The exact complexity is not stated clearly in the paper, but appears to be

Chen, Kyng, Liu, Peng, Gutenberg and Sachdeva's algorithm solves maximum flow and minimum-cost flow in almost linear time by building the flow through a sequence of approximate undirected minimum-ratio cycles, each of which is computed and processed in amortized time using a dynamic data structure.
Bernstein, Blikstad, Saranurak, Tu [26] 2024 randomized algorithm when the edge capacities come from the set The algorithm is a variant of the push-relabel algorithm by introducing the weighted variant. The paper establishes a weight function on directed and acyclic graphs (DAG), and attempts to imitate it on general graphs using directed expander hierarchies, which induce a natural vertex ordering that produces the weight function similar to that of the DAG special case. The randomization aspect (and subsequently, the factor) comes from the difficulty in applying directed expander hierarchies to the computation of sparse cuts, which do not allow for natural dynamic updating.

For additional algorithms, see Goldberg & Tarjan (1988).

Integral flow theorem

The integral flow theorem states that

If each edge in a flow network has integral capacity, then there exists an integral maximal flow.

The claim is not only that the value of the flow is an integer, which follows directly from the max-flow min-cut theorem, but that the flow on every edge is integral. This is crucial for many combinatorial applications (see below), where the flow across an edge may encode whether the item corresponding to that edge is to be included in the set sought or not.

Application

Multi-source multi-sink maximum flow problem

Fig. 4.1.1. Transformation of a multi-source multi-sink maximum flow problem into a single-source single-sink maximum flow problem Multi-source multi-sink flow problem.svg
Fig. 4.1.1. Transformation of a multi-source multi-sink maximum flow problem into a single-source single-sink maximum flow problem

Given a network with a set of sources and a set of sinks instead of only one source and one sink, we are to find the maximum flow across . We can transform the multi-source multi-sink problem into a maximum flow problem by adding a consolidated source connecting to each vertex in and a consolidated sink connected by each vertex in (also known as supersource and supersink) with infinite capacity on each edge (See Fig. 4.1.1.).

Maximum cardinality bipartite matching

Fig. 4.3.1. Transformation of a maximum bipartite matching problem into a maximum flow problem Maximum bipartite matching to max flow.svg
Fig. 4.3.1. Transformation of a maximum bipartite matching problem into a maximum flow problem

Given a bipartite graph , we are to find a maximum cardinality matching in , that is a matching that contains the largest possible number of edges. This problem can be transformed into a maximum flow problem by constructing a network , where

  1. contains the edges in directed from to .
  2. for each and for each .
  3. for each (See Fig. 4.3.1).

Then the value of the maximum flow in is equal to the size of the maximum matching in , and a maximum cardinality matching can be found by taking those edges that have flow in an integral max-flow.

Minimum path cover in directed acyclic graph

Given a directed acyclic graph , we are to find the minimum number of vertex-disjoint paths to cover each vertex in . We can construct a bipartite graph from , where

  1. .

Then it can be shown that has a matching of size if and only if has a vertex-disjoint path cover containing edges and paths, where is the number of vertices in . Therefore, the problem can be solved by finding the maximum cardinality matching in instead.

Assume we have found a matching of , and constructed the cover from it. Intuitively, if two vertices are matched in , then the edge is contained in . Clearly the number of edges in is . To see that is vertex-disjoint, consider the following:

  1. Each vertex in can either be non-matched in , in which case there are no edges leaving in ; or it can be matched, in which case there is exactly one edge leaving in . In either case, no more than one edge leaves any vertex in .
  2. Similarly for each vertex in – if it is matched, there is a single incoming edge into in ; otherwise has no incoming edges in .

Thus no vertex has two incoming or two outgoing edges in , which means all paths in are vertex-disjoint.

To show that the cover has size , we start with an empty cover and build it incrementally. To add a vertex to the cover, we can either add it to an existing path, or create a new path of length zero starting at that vertex. The former case is applicable whenever either and some path in the cover starts at , or and some path ends at . The latter case is always applicable. In the former case, the total number of edges in the cover is increased by 1 and the number of paths stays the same; in the latter case the number of paths is increased and the number of edges stays the same. It is now clear that after covering all vertices, the sum of the number of paths and edges in the cover is . Therefore, if the number of edges in the cover is , the number of paths is .

Maximum flow with vertex capacities

Fig. 4.4.1. Transformation of a maximum flow problem with vertex capacities constraint into the original maximum flow problem by node splitting Node splitting.svg
Fig. 4.4.1. Transformation of a maximum flow problem with vertex capacities constraint into the original maximum flow problem by node splitting

Let be a network. Suppose there is capacity at each node in addition to edge capacity, that is, a mapping such that the flow has to satisfy not only the capacity constraint and the conservation of flows, but also the vertex capacity constraint

In other words, the amount of flow passing through a vertex cannot exceed its capacity. To find the maximum flow across , we can transform the problem into the maximum flow problem in the original sense by expanding . First, each is replaced by and , where is connected by edges going into and is connected to edges coming out from , then assign capacity to the edge connecting and (see Fig. 4.4.1). In this expanded network, the vertex capacity constraint is removed and therefore the problem can be treated as the original maximum flow problem.

Maximum number of paths from s to t

Given a directed graph and two vertices and , we are to find the maximum number of paths from to . This problem has several variants:

1. The paths must be edge-disjoint. This problem can be transformed to a maximum flow problem by constructing a network from , with and being the source and the sink of respectively, and assigning each edge a capacity of . In this network, the maximum flow is iff there are edge-disjoint paths.

2. The paths must be independent, i.e., vertex-disjoint (except for and ). We can construct a network from with vertex capacities, where the capacities of all vertices and all edges are . Then the value of the maximum flow is equal to the maximum number of independent paths from to .

3. In addition to the paths being edge-disjoint and/or vertex disjoint, the paths also have a length constraint: we count only paths whose length is exactly , or at most . Most variants of this problem are NP-complete, except for small values of . [27]

Closure problem

A closure of a directed graph is a set of vertices C, such that no edges leave C. The closure problem is the task of finding the maximum-weight or minimum-weight closure in a vertex-weighted directed graph. It may be solved in polynomial time using a reduction to the maximum flow problem.

Real world applications

Baseball elimination

Construction of network flow for baseball elimination problem Baseball Elimination Problem.png
Construction of network flow for baseball elimination problem

In the baseball elimination problem there are n teams competing in a league. At a specific stage of the league season, wi is the number of wins and ri is the number of games left to play for team i and rij is the number of games left against team j. A team is eliminated if it has no chance to finish the season in the first place. The task of the baseball elimination problem is to determine which teams are eliminated at each point during the season. Schwartz [28] proposed a method which reduces this problem to maximum network flow. In this method a network is created to determine whether team k is eliminated.

Let G = (V, E) be a network with s,tV being the source and the sink respectively. One adds a game nodeij – which represents the number of plays between these two teams. We also add a team node for each team and connect each game node {i, j} with i < j to V, and connects each of them from s by an edge with capacity rij – which represents the number of plays between these two teams. We also add a team node for each team and connect each game node {i, j} with two team nodes i and j to ensure one of them wins. One does not need to restrict the flow value on these edges. Finally, edges are made from team node i to the sink node t and the capacity of wk + rkwi is set to prevent team i from winning more than wk + rk. Let S be the set of all teams participating in the league and let

.

In this method it is claimed team k is not eliminated if and only if a flow value of size r(S − {k}) exists in network G. In the mentioned article it is proved that this flow value is the maximum flow value from s to t.

Airline scheduling

In the airline industry a major problem is the scheduling of the flight crews. The airline scheduling problem can be considered as an application of extended maximum network flow. The input of this problem is a set of flights F which contains the information about where and when each flight departs and arrives. In one version of airline scheduling the goal is to produce a feasible schedule with at most k crews.

To solve this problem one uses a variation of the circulation problem called bounded circulation which is the generalization of network flow problems, with the added constraint of a lower bound on edge flows.

Let G = (V, E) be a network with s,tV as the source and the sink nodes. For the source and destination of every flight i, one adds two nodes to V, node si as the source and node di as the destination node of flight i. One also adds the following edges to E:

  1. An edge with capacity [0, 1] between s and each si.
  2. An edge with capacity [0, 1] between each di and t.
  3. An edge with capacity [1, 1] between each pair of si and di.
  4. An edge with capacity [0, 1] between each di and sj, if source sj is reachable with a reasonable amount of time and cost from the destination of flight i.
  5. An edge with capacity [0, ] between s and t.

In the mentioned method, it is claimed and proved that finding a flow value of k in G between s and t is equal to finding a feasible schedule for flight set F with at most k crews. [29]

Another version of airline scheduling is finding the minimum needed crews to perform all the flights. To find an answer to this problem, a bipartite graph G' = (AB, E) is created where each flight has a copy in set A and set B. If the same plane can perform flight j after flight i, iA is connected to jB. A matching in G' induces a schedule for F and obviously maximum bipartite matching in this graph produces an airline schedule with minimum number of crews. [29] As it is mentioned in the Application part of this article, the maximum cardinality bipartite matching is an application of maximum flow problem.

Circulation–demand problem

There are some factories that produce goods and some villages where the goods have to be delivered. They are connected by a networks of roads with each road having a capacity c for maximum goods that can flow through it. The problem is to find if there is a circulation that satisfies the demand. This problem can be transformed into a maximum-flow problem.

  1. Add a source node s and add edges from it to every factory node fi with capacity pi where pi is the production rate of factory fi.
  2. Add a sink node t and add edges from all villages vi to t with capacity di where di is the demand rate of village vi.

Let G = (V, E) be this new network. There exists a circulation that satisfies the demand if and only if :

Maximum flow value(G).

If there exists a circulation, looking at the max-flow solution would give the answer as to how much goods have to be sent on a particular road for satisfying the demands.

The problem can be extended by adding a lower bound on the flow on some edges. [30]

Image segmentation

Source image of size 8x8. Maxflow imagesegmentation image.png
Source image of size 8x8.
Network built from the bitmap. The source is on the left, the sink on the right. The darker an edge is, the bigger is its capacity. ai is high when the pixel is green, bi when the pixel is not green. The penalty pij are all equal. Maxflow imagesegmentation network.png
Network built from the bitmap. The source is on the left, the sink on the right. The darker an edge is, the bigger is its capacity. ai is high when the pixel is green, bi when the pixel is not green. The penalty pij are all equal.

In their book, Kleinberg and Tardos present an algorithm for segmenting an image. [32] They present an algorithm to find the background and the foreground in an image. More precisely, the algorithm takes a bitmap as an input modelled as follows: ai ≥ 0 is the likelihood that pixel i belongs to the foreground, bi ≥ 0 in the likelihood that pixel i belongs to the background, and pij is the penalty if two adjacent pixels i and j are placed one in the foreground and the other in the background. The goal is to find a partition (A, B) of the set of pixels that maximize the following quantity

,

Indeed, for pixels in A (considered as the foreground), we gain ai; for all pixels in B (considered as the background), we gain bi. On the border, between two adjacent pixels i and j, we loose pij. It is equivalent to minimize the quantity

because

Minimum cut displayed on the network (triangles VS circles). Maxflow imagesegmentation result.png
Minimum cut displayed on the network (triangles VS circles).

We now construct the network whose nodes are the pixel, plus a source and a sink, see Figure on the right. We connect the source to pixel i by an edge of weight ai. We connect the pixel i to the sink by an edge of weight bi. We connect pixel i to pixel j with weight pij. Now, it remains to compute a minimum cut in that network (or equivalently a maximum flow). The last figure shows a minimum cut.

Extensions

1. In the minimum-cost flow problem , each edge (u,v) also has a cost-coefficientauv in addition to its capacity. If the flow through the edge is fuv, then the total cost is auvfuv. It is required to find a flow of a given size d, with the smallest cost. In most variants, the cost-coefficients may be either positive or negative. There are various polynomial-time algorithms for this problem.

2. The maximum-flow problem can be augmented by disjunctive constraints: a negative disjunctive constraint says that a certain pair of edges cannot simultaneously have a nonzero flow; a positive disjunctive constraints says that, in a certain pair of edges, at least one must have a nonzero flow. With negative constraints, the problem becomes strongly NP-hard even for simple networks. With positive constraints, the problem is polynomial if fractional flows are allowed, but may be strongly NP-hard when the flows must be integral. [33]

Related Research Articles

<span class="mw-page-title-main">Shortest path problem</span> Computational problem of graph theory

In graph theory, the shortest path problem is the problem of finding a path between two vertices in a graph such that the sum of the weights of its constituent edges is minimized.

The Ford–Fulkerson method or Ford–Fulkerson algorithm (FFA) is a greedy algorithm that computes the maximum flow in a flow network. It is sometimes called a "method" instead of an "algorithm" as the approach to finding augmenting paths in a residual graph is not fully specified or it is specified in several implementations with different running times. It was published in 1956 by L. R. Ford Jr. and D. R. Fulkerson. The name "Ford–Fulkerson" is often also used for the Edmonds–Karp algorithm, which is a fully defined implementation of the Ford–Fulkerson method.

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 smallest total weight of the edges which if removed would disconnect the source from the sink.

<span class="mw-page-title-main">Bellman–Ford algorithm</span> Algorithm for finding the shortest paths in graphs

The Bellman–Ford algorithm is an algorithm that computes shortest paths from a single source vertex to all of the other vertices in a weighted digraph. It is slower than Dijkstra's algorithm for the same problem, but more versatile, as it is capable of handling graphs in which some of the edge weights are negative numbers. The algorithm was first proposed by Alfonso Shimbel, but is instead named after Richard Bellman and Lester Ford Jr., who published it in 1958 and 1956, respectively. Edward F. Moore also published a variation of the algorithm in 1959, and for this reason it is also sometimes called the Bellman–Ford–Moore 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 time. The algorithm was first published by Yefim Dinitz in 1970, and independently published by Jack Edmonds and Richard Karp in 1972. Dinitz's algorithm includes additional techniques that reduce the running time to .

<span class="mw-page-title-main">Flow network</span> Directed graph where edges have a capacity

In graph theory, a flow 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 research, a directed graph is called a network, the vertices are called nodes and the edges are called arcs. A flow must satisfy the restriction that the amount of flow into a node equals the amount of flow out of it, unless it is a source, which has only outgoing flow, or sink, which has only incoming flow. A network can be used to model traffic in a computer network, circulation with demands, fluids in pipes, currents in an electrical circuit, or anything similar in which something travels through a network of nodes.

In computer science, a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge (u,v) from vertex u to vertex v, u comes before v in the ordering. For instance, the vertices of the graph may represent tasks to be performed, and the edges may represent constraints that one task must be performed before another; in this application, a topological ordering is just a valid sequence for the tasks. Precisely, a topological sort is a graph traversal in which each node v is visited only after all its dependencies are visited. A topological ordering is possible if and only if the graph has no directed cycles, that is, if it is a directed acyclic graph (DAG). Any DAG has at least one topological ordering, and algorithms are known for constructing a topological ordering of any DAG in linear time. Topological sorting has many applications, especially in ranking problems such as feedback arc set. Topological sorting is possible even when the DAG has disconnected components.

<span class="mw-page-title-main">Centrality</span> Degree of connectedness within a graph

In graph theory and network analysis, indicators of centrality assign numbers or rankings to nodes within a graph corresponding to their network position. Applications include identifying the most influential person(s) in a social network, key infrastructure nodes in the Internet or urban networks, super-spreaders of disease, and brain networks. Centrality concepts were first developed in social network analysis, and many of the terms used to measure centrality reflect their sociological origin.

In graph theory, a cut is a partition of the vertices of a graph into two disjoint subsets. Any cut determines a cut-set, the set of edges that have one endpoint in each subset of the partition. These edges are said to cross the cut. In a connected graph, each cut-set determines a unique cut, and in some cases cuts are identified with their cut-sets rather than with their vertex partitions.

In mathematical optimization, the push–relabel 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. Throughout its execution, the algorithm maintains a "preflow" and gradually converts it into a maximum flow by moving flow locally between neighboring nodes using push operations under the guidance of an admissible network maintained by relabel operations. In comparison, the Ford–Fulkerson algorithm performs global augmentations that send flow following paths from the source all the way to the sink.

<span class="mw-page-title-main">Kőnig's theorem (graph theory)</span> Theorem showing that maximum matching and minimum vertex cover are equivalent for bipartite graphs

In the mathematical area of graph theory, Kőnig's theorem, proved by Dénes Kőnig, describes an equivalence between the maximum matching problem and the minimum vertex cover problem in bipartite graphs. It was discovered independently, also in 1931, by Jenő Egerváry in the more general case of weighted graphs.

Maximum cardinality matching is a fundamental problem in graph theory. We are given a graph G, and the goal is to find a matching containing as many edges as possible; that is, a maximum cardinality subset of the edges such that each vertex is adjacent to at most one edge of the subset. As each edge will cover exactly two vertices, this problem is equivalent to the task of finding a matching that covers as many vertices as possible.

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.

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. In variants of the problem, there are multiple commodities flowing through the network, and a cost on the flow.

The multi-commodity flow problem is a network flow problem with multiple commodities between different source and sink nodes.

In theoretical computer science and network routing, Suurballe's algorithm is an algorithm for finding two disjoint paths in a nonnegatively-weighted directed graph, so that both paths connect the same pair of vertices and have minimum total length. The algorithm was conceived by John W. Suurballe and published in 1974. The main idea of Suurballe's algorithm is to use Dijkstra's algorithm to find one path, to modify the weights of the graph edges, and then to run Dijkstra's algorithm a second time. The output of the algorithm is formed by combining these two paths, discarding edges that are traversed in opposite directions by the paths, and using the remaining edges to form the two paths to return as the output. The modification to the weights is similar to the weight modification in Johnson's algorithm, and preserves the non-negativity of the weights while allowing the second instance of Dijkstra's algorithm to find the correct second path.

Approximate max-flow min-cut theorems are mathematical propositions in network flow theory. Approximate max-flow min-cut theorems deal with the relationship between maximum flow rate ("max-flow") and minimum cut ("min-cut") in a multi-commodity flow problem. The theorems have enabled the development of approximation algorithms for use in graph partition and related problems.

<span class="mw-page-title-main">Stoer–Wagner algorithm</span> Recursive algorithm in graph theory

In graph theory, the Stoer–Wagner algorithm is a recursive algorithm to solve the minimum cut problem in undirected weighted graphs with non-negative weights. It was proposed by Mechthild Stoer and Frank Wagner in 1995. The essential idea of this algorithm is to shrink the graph by merging the most intensive vertices, until the graph only contains two combined vertex sets. At each phase, the algorithm finds the minimum - cut for two vertices and chosen at its will. Then the algorithm shrinks the edge between and to search for non - cuts. The minimum cut found in all phases will be the minimum weighted cut of the graph.

Cederbaum's theorem defines hypothetical analog electrical networks which will automatically produce a solution to the minimum s–t cut problem. Alternatively, simulation of such a network will also produce a solution to the minimum s–t cut problem. This article gives basic definitions, a statement of the theorem and a proof of the theorem. The presentation in this article closely follows the presentation of the theorem in the original publication.

A central problem in algorithmic graph theory is the shortest path problem. One of the generalizations of the shortest path problem is known as the single-source-shortest-paths (SSSP) problem, which consists of finding the shortest paths from a source vertex to all other vertices in the graph. There are classical sequential algorithms which solve this problem, such as Dijkstra's algorithm. In this article, however, we present two parallel algorithms solving this problem.

References

  1. 1 2 3 Schrijver, A. (2002). "On the history of the transportation and maximum flow problems". Mathematical Programming. 91 (3): 437–445. CiteSeerX   10.1.1.23.5134 . doi:10.1007/s101070100259. S2CID   10210675.
  2. Gass, Saul I.; Assad, Arjang A. (2005). "Mathematical, algorithmic and professional developments of operations research from 1951 to 1956". An Annotated Timeline of Operations Research. International Series in Operations Research & Management Science. Vol. 75. pp. 79–110. doi:10.1007/0-387-25837-X_5. ISBN   978-1-4020-8116-3.
  3. 1 2 Harris, T. E.; Ross, F. S. (1955). "Fundamentals of a Method for Evaluating Rail Net Capacities" (PDF). Research Memorandum. Archived from the original (PDF) on 8 January 2014.
  4. 1 2 Ford, L. R.; Fulkerson, D. R. (1956). "Maximal flow through a network". Canadian Journal of Mathematics . 8: 399–404. doi: 10.4153/CJM-1956-045-5 .
  5. 1 2 Ford, L.R., Jr.; Fulkerson, D.R., Flows in Networks, Princeton University Press (1962).
  6. Sherman, Jonah (2013). "Nearly Maximum Flows in Nearly Linear Time". Proceedings of the 54th Annual IEEE Symposium on Foundations of Computer Science. pp. 263–269. arXiv: 1304.2077 . doi:10.1109/FOCS.2013.36. ISBN   978-0-7695-5135-7. S2CID   14681906.
  7. Kelner, J. A.; Lee, Y. T.; Orecchia, L.; Sidford, A. (2014). "An Almost-Linear-Time Algorithm for Approximate Max Flow in Undirected Graphs, and its Multicommodity Generalizations" (PDF). Proceedings of the Twenty-Fifth Annual ACM-SIAM Symposium on Discrete Algorithms. p. 217. arXiv: 1304.2338 . doi:10.1137/1.9781611973402.16. ISBN   978-1-61197-338-9. S2CID   10733914. Archived from the original (PDF) on 3 March 2016.
  8. Knight, Helen (7 January 2014). "New algorithm can dramatically streamline solutions to the 'max flow' problem". MIT News. Retrieved 8 January 2014.
  9. 1 2 Orlin, James B. (2013). "Max flows in O(nm) time, or better". Proceedings of the forty-fifth annual ACM symposium on Theory of Computing. pp. 765–774. CiteSeerX   10.1.1.259.5759 . doi:10.1145/2488608.2488705. ISBN   9781450320290. S2CID   207205207.
  10. 1 2 Chen, L.; Kyng, R.; Liu, Y.P.; Gutenberg, M.P.; Sachdeva, S. (2022). "Maximum Flow and Minimum-Cost Flow in Almost-Linear Time". arXiv: 2203.00671 [cs.DS].
  11. Klarreich, Erica (8 June 2022). "Researchers Achieve 'Absurdly Fast' Algorithm for Network Flow". Quanta Magazine. Retrieved 8 June 2022.
  12. Bernstein, Aaron; Nanongkai, Danupon; Wulff-Nilsen, Christian (30 October 2022). "Negative-Weight Single-Source Shortest Paths in Near-linear Time". arXiv: 2203.03456 [cs.DS].
  13. Brubaker, Ben (18 January 2023). "Finally, a Fast Algorithm for Shortest Paths on Negative Graphs". Quanta Magazine. Retrieved 25 January 2023.
  14. "FOCS 2022". focs2022.eecs.berkeley.edu. Retrieved 25 January 2023.
  15. Santosh, Nagarakatte. "FOCS 2022 Best Paper Award for Prof. Aaron Bernstein's Paper". www.cs.rutgers.edu. Retrieved 25 January 2023.
  16. Malhotra, V.M.; Kumar, M. Pramodh; Maheshwari, S.N. (1978). "An algorithm for finding maximum flows in networks" (PDF). Information Processing Letters. 7 (6): 277–278. doi:10.1016/0020-0190(78)90016-9.
  17. 1 2 3 Goldberg, A. V.; Tarjan, R. E. (1988). "A new approach to the maximum-flow problem". Journal of the ACM . 35 (4): 921. doi: 10.1145/48014.61051 . S2CID   52152408.
  18. Cheriyan, J.; Maheshwari, S. N. (1988). "Analysis of preflow push algorithms for maximum network flow". Foundations of Software Technology and Theoretical Computer Science. Lecture Notes in Computer Science. Vol. 338. pp. 30–48. doi:10.1007/3-540-50517-2_69. ISBN   978-3-540-50517-4. ISSN   0302-9743.
  19. King, V.; Rao, S.; Tarjan, R. (1994). "A Faster Deterministic Maximum Flow Algorithm". Journal of Algorithms. 17 (3): 447–474. doi:10.1006/jagm.1994.1044. S2CID   15493.
  20. Goldberg, A. V.; Rao, S. (1998). "Beyond the flow decomposition barrier". Journal of the ACM . 45 (5): 783. doi: 10.1145/290179.290181 . S2CID   96030.
  21. Kathuria, T.; Liu, Y.P.; Sidford, A. (16–19 November 2020). Unit Capacity Maxflow in Almost Time. Durham, NC, USA: IEEE. pp. 119–130.
  22. Madry, Aleksander (9–11 October 2016). Computing Maximum Flow with Augmenting Electrical Flows. New Brunswick, New Jersey: IEEE. pp. 593–602.
  23. Brand, J. vd; Lee, Y.T.; Nanongkai, D.; Peng, R.; Saranurak, T.; Sidford, A.; Song, Z.; Wang, D. (16–19 November 2020). Bipartite Matching in Nearly-linear Time on Moderately Dense Graphs. Durham, NC, USA: IEEE. pp. 919–930.
  24. Brand, J. vd; Lee, Y.T.; Liu, Y.P.; Saranurak, T.; Sidford, A; Song, Z.; Wang, D. (2021). "Minimum Cost Flows, MDPs, and ℓ1-Regression in Nearly Linear Time for Dense Instances". arXiv: 2101.05719 [cs.DS].
  25. Gao, Y.; Liu, Y.P.; Peng, R. (2021). "Fully Dynamic Electrical Flows: Sparse Maxflow Faster Than Goldberg-Rao". arXiv: 2101.07233 [cs.DS].
  26. Bernstein, A.; Blikstad, J.; Saranurak, T.; Tu, T. (2024). "Maximum Flow by Augmenting Paths in Time". arXiv: 2406.03648 [cs.DS].
  27. Itai, A.; Perl, Y.; Shiloach, Y. (1982). "The complexity of finding maximum disjoint paths with length constraints". Networks. 12 (3): 277–286. doi:10.1002/net.3230120306. ISSN   1097-0037.
  28. Schwartz, B. L. (1966). "Possible Winners in Partially Completed Tournaments". SIAM Review . 8 (3): 302–308. Bibcode:1966SIAMR...8..302S. doi:10.1137/1008062. JSTOR   2028206.
  29. 1 2 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein (2001). "26. Maximum Flow". Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill. pp. 643–668. ISBN   978-0-262-03293-3.{{cite book}}: CS1 maint: multiple names: authors list (link)
  30. Carl Kingsford. "Max-flow extensions: circulations with demands" (PDF).
  31. "Project imagesegmentationwithmaxflow, that contains the source code to produce these illustrations". GitLab. Archived from the original on 22 December 2019. Retrieved 22 December 2019.
  32. "Algorithm Design". pearson.com. Retrieved 21 December 2019.
  33. Schauer, Joachim; Pferschy, Ulrich (1 July 2013). "The maximum flow problem with disjunctive constraints". Journal of Combinatorial Optimization. 26 (1): 109–119. CiteSeerX   10.1.1.414.4496 . doi:10.1007/s10878-011-9438-7. ISSN   1382-6905. S2CID   6598669.

Further reading