Fact-checked by Grok 2 weeks ago

Maximum flow problem

The maximum flow problem is a central challenge in and network optimization, where the objective is to determine the largest possible amount of flow that can be transmitted from a designated vertex to a vertex in a known as a , while respecting limits on each edge and ensuring flow conservation at intermediate vertices. A consists of vertices connected by edges, each with a non-negative representing the maximum flow it can carry, and the value of a flow is the net amount leaving the (or entering the ). The problem originated in the mid-20th century amid military and logistical research, particularly efforts to model transportation networks during the Cold War. In 1955, T.E. Harris and F.S. Ross formulated an early version in a classified RAND Corporation report analyzing Soviet railway capacities for potential interdiction, computing a maximum flow of 163,000 tons per day across a 44-vertex network. This inspired L.R. Ford Jr. and D.R. Fulkerson, who developed the foundational framework in their 1956 paper, introducing the augmenting path method to iteratively increase flow until no further augmentation is possible. Their work, expanded in a 1962 RAND monograph, established the problem as a cornerstone of combinatorial optimization. A pivotal result is the , which asserts that the maximum flow value equals the minimum capacity of any cut separating the source from the sink—a partition of vertices into source-side and sink-side sets where the cut capacity is the sum of capacities of edges crossing from source-side to sink-side. This duality not only provides a certificate of optimality but also underpins efficient algorithms; the original Ford-Fulkerson method guarantees convergence for integer capacities, while the Edmonds-Karp variant using achieves polynomial time complexity of O(VE²), where V is the number of vertices and E the number of edges. More advanced algorithms, such as Dinic's, further improve performance to near-linear time in practice. Beyond theory, the maximum flow problem finds broad applications in modeling real-world systems, including traffic in transportation networks to maximize vehicle throughput, airline scheduling for crew assignments via bipartite matching reductions, and communication protocols in computer networks to optimize data packet transmission without exceeding bandwidth limits. It also supports edge-disjoint path computations for resilient and minimum-cost flow variants for economic , influencing fields from to bioinformatics.

Fundamentals

Flow Networks

A flow network is a G = (V, E) with a distinguished vertex s \in V and vertex t \in V, where each edge (u, v) \in E is assigned a nonnegative real-valued c(u, v) \geq 0, representing the maximum amount of flow that can traverse that edge. for non-edges are taken as zero. This structure models scenarios where commodities like or move from to through capacitated channels, as originally formalized in the context of network capacities. A flow f in the network is a function f: E \to \mathbb{R}_{\geq 0} that satisfies two key properties: capacity constraints, where $0 \leq f(u, v) \leq c(u, v) for all (u, v) \in E (with f(u, v) = 0 if (u, v) \notin E); and conservation, where for every intermediate u \in V \setminus \{s, t\}, the total into u equals the total out of u, i.e., \sum_{(v, u) \in E} f(v, u) = \sum_{(u, w) \in E} f(u, w). The value of the , denoted |f|, is the net amount leaving the source or entering the sink, given by |f| = \sum_{(s, v) \in E} f(s, v) = \sum_{(w, t) \in E} f(w, t), which remains consistent due to conservation across the network. To facilitate flow augmentation, the residual graph G_f = (V, E_f) is constructed relative to a given f, capturing remaining capacities for potential increases. For each pair u, v \in V, the residual capacity c_f(u, v) is defined as c(u, v) - f(u, v) + f(v, u), where f(w, z) = 0 if (w, z) \notin E; an edge (u, v) appears in E_f if c_f(u, v) > 0. Forward residuals represent unused capacity on original edges, while backward residuals (possibly adding new edges) allow flow reduction to reroute through alternative paths. Consider a simple flow network with vertices V = \{s, a, b, t\} and edges E = \{(s, a), (s, b), (a, b), (a, t), (b, t)\} with capacities c(s, a) = 10, c(s, b) = 10, c(a, b) = 2, c(a, t) = 8, c(b, t) = 9. A sample valid flow might assign f(s, a) = 8, f(s, b) = 9, f(a, b) = 0, f(a, t) = 8, f(b, t) = 9, satisfying capacity limits and conservation (net zero at a and b), yielding |f| = 17. In the corresponding residual graph, forward residual capacities include c_f(s, a) = 2, c_f(s, b) = 1, c_f(a, t) = 0, c_f(b, t) = 0, and a backward edge (a, s) with c_f(a, s) = 8.

Problem Statement

The maximum flow problem is a fundamental optimization task in graph theory and combinatorial optimization, seeking to determine the greatest possible rate at which material, or flow, can be transmitted from a designated source vertex to a designated sink vertex in a capacitated network. Formally, given a directed graph G = (V, E) with vertex set V, edge set E, a source s \in V, a sink t \in V, and a capacity function c: E \to \mathbb{R}_{\geq 0} assigning nonnegative capacities to edges, the goal is to find a flow f: E \to \mathbb{R}_{\geq 0} of maximum value |f| that respects the network's constraints. A valid flow f must satisfy two properties: capacity constraints, ensuring $0 \leq f(u,v) \leq c(u,v) for every edge (u,v) \in E (and f(u,v) = 0 if (u,v) \notin E); and flow conservation, ensuring \sum_{(w, v) \in E} f(w,v) = \sum_{(v, w) \in E} f(v,w) for every vertex v \in V \setminus \{s, t\}. The value of the flow is defined as |f| = \sum_{(s,w) \in E} f(s,w), which equals \sum_{(w,t) \in E} f(w,t) by conservation. The decision version of the maximum flow problem, relevant for complexity analysis, asks whether there exists a feasible flow f with value |f| \geq k for a given k \in \mathbb{R}_{\geq 0}. This version is solvable in polynomial time, as the itself admits efficient algorithms. Regarding feasibility, the zero flow—where f(u,v) = 0 for all edges—always constitutes a valid flow satisfying all constraints, yielding |f| = 0; however, the maximum flow may be zero in networks lacking any directed from s to t, or positive otherwise depending on the capacities along augmenting paths. The maximum flow problem admits a natural formulation as a linear program, highlighting its place within optimization theory. Specifically, it can be expressed as: \begin{align*} \text{maximize} \quad & \sum_{v: (s,v) \in E} f(s,v) \\ \text{subject to} \quad & \sum_{u: (u,v) \in E} f(u,v) = \sum_{w: (v,w) \in E} f(v,w) \quad \forall v \in V \setminus \{s, t\}, \\ & 0 \leq f(e) \leq c(e) \quad \forall e \in E. \end{align*} This LP captures the conservation of flow at intermediate vertices and respect for edge capacities. For illustration, consider a small with vertices \{s, a, b, t\} and directed edges s \to a ( 4), s \to b ( 2), a \to t ( 3), and b \to t ( 3). In this network, the maximum flow value is 5 units, achieved by sending 3 units along s \to a \to t and 2 units along s \to b \to t, without violating or .

Algorithms

Ford–Fulkerson Method

The Ford–Fulkerson method is an for computing the maximum flow in a capacitated by iteratively augmenting the current flow along paths in the residual graph until no further augmentation is possible. Introduced by Lester R. Ford Jr. and Delbert R. Fulkerson in their 1956 paper, the method provides a general framework that relies on the existence of augmenting paths to increase the flow value systematically. It assumes a G = (V, E) with source s, sink t, and nonnegative capacities c(u,v) for each edge (u,v) \in E, starting from an initial zero flow f. Central to the method is the concept of the residual graph G_f = (V, E_f), which captures the remaining for potential flow adjustments given the current flow f. For each original (u,v) \in E, the forward residual is c_f(u,v) = c(u,v) - f(u,v), and if f(u,v) > 0, a backward (v,u) is added with residual c_f(v,u) = f(u,v). An augmenting is defined as a P from s to t in G_f where every has positive residual c_f(e) > 0. The residual of the P, denoted c_f(P), is the minimum residual over all s in P. In each iteration, the algorithm identifies an augmenting path P using any search method, such as (DFS) or (BFS), and performs an augmentation step. This step computes the bottleneck capacity c_f(P) and updates the flow by adding c_f(P) to f along forward edges of P and subtracting c_f(P) along backward edges, thereby increasing the total flow value by c_f(P). The residual graph is then updated to reflect these changes. The process repeats until no augmenting path exists in G_f, at which point the current flow f is a maximum flow, as the absence of such a path implies the flow cannot be increased further. The following pseudocode outlines the Ford–Fulkerson method, where PathExists and BottleNeck functions implement path finding and capacity computation, respectively (e.g., via DFS or BFS):
FORD-FULKERSON(G, s, t)
    initialize flow f to 0 for all edges
    while there exists an s-t path P in the residual graph G_f do
        c_f(P) ← BottleNeck(P)  // minimum residual capacity along P
        augment f along P by c_f(P)
    return f
If all capacities are integers, the method produces an integral maximum flow, as each augmentation increases the flow by at least 1. The of the –Fulkerson method depends on the choice of path-finding strategy and the input capacities; in the worst case, it can require an number of augmentations relative to the input size, leading to running time. For instance, with unit capacities in certain graphs, the number of augmenting paths can grow ly. Assuming each path search takes O(|E|) time, the overall complexity is O(|E| \cdot F), where F is the maximum flow value, but F can be in the number of vertices.

Edmonds–Karp Algorithm

The is a specific implementation of the Ford–Fulkerson method that computes the maximum flow in a by repeatedly finding augmenting paths using (BFS) to select the shortest path in terms of the number of edges in the residual graph. This choice ensures polynomial-time termination, unlike the general Ford–Fulkerson method, which may select longer paths leading to exponential slowdown in the worst case if capacities are chosen adversarially. The algorithm maintains the residual graph and augments the flow along the discovered path until no augmenting path exists from the source to the sink. In each iteration, BFS is performed on the residual graph starting from , assigning levels (distances in edges) to reachable vertices and identifying a path to the if possible. The capacity along this path—the minimum residual capacity of its edges—determines the flow increment. Upon augmentation, the algorithm updates the residual capacities: for each forward edge in the path, the residual capacity decreases by the value, while the corresponding backward edge's residual capacity increases by the same amount to allow reversal. If multiple shortest paths exist at the same level, BFS selects one based on the order of exploration (e.g., first-labeled-first-scanned), but any such path suffices for the complexity bound, as the key property is the minimality in edge count. The time complexity of the Edmonds–Karp algorithm is O(VE^2), where V is the number of vertices and E is the number of edges. Each BFS traversal takes O(E) time to explore the residual graph using an adjacency list representation. The total number of augmentations is bounded by O(VE): the shortest-path distance (in edges) from the source to the sink in the residual graph is non-decreasing across augmentations, starting from at most 1 and reaching at most V-1; for each fixed distance \ell, at most O(E) augmentations can occur before the distance increases, as each such augmentation saturates at least one edge that bridges two consecutive levels, and each residual edge can become critical (the bottleneck) at most O(V) times due to level increases preventing reuse without distance growth. This contrasts with the general Ford–Fulkerson method, which lacks such a bound and can require exponentially many augmentations. The space complexity is O(V + E), primarily for storing the adjacency list of the residual graph and tracking current flows. The algorithm was first published by and Karp in their paper. To illustrate, consider a with s, t, and vertices u, v: edges s \to u (capacity 3), s \to v (capacity 2), u \to v (capacity 2), u \to t (capacity 2), v \to t (capacity 3).
  • Iteration 1: BFS finds s \to u \to t (length 2, bottleneck \min(3,2)=2). Augment by 2; residuals: s\to u=1, u\to t=0; add t\to u=2, u\to s=2. Flow=2.
  • Iteration 2: BFS finds s \to v \to t (length 2, bottleneck \min(2,3)=2). Augment by 2; residuals: s\to v=0, v\to t=1; add t\to v=2, v\to s=2. Flow=4.
  • Iteration 3: BFS finds s \to u \to v \to t (length 3, bottleneck \min(1,2,1)=1). Augment by 1; residuals: s\to u=0, u\to v=1, v\to t=0; add/update backwards t\to v=3, v\to u=1, u\to s=3. Flow=5 (maximum).
This trace shows path selection evolving with residual updates and flow increases.

Dinic's Algorithm

, introduced by E. A. Dinic in , is an efficient method for solving the maximum flow problem in flow networks by layering the residual graph and computing blocking flows in phases. Unlike earlier augmenting path algorithms that find one path at a time, it organizes the search to discover multiple edge-disjoint paths simultaneously within a structured , leading to faster . The core of the algorithm involves constructing a level graph from the current residual network using (BFS) starting from the source s. Each v receives a level l(v) equal to the shortest path distance from s in the residual graph, measured by the number of edges. Only residual edges (u, v) where l(v) = l(u) + 1 are retained in the level graph, ensuring all paths from s to the sink t are shortest paths of length l(t). If l(t) is undefined after BFS, no augmenting path exists, and the algorithm terminates with the current flow as maximum. In the subsequent blocking flow phase, the algorithm finds a maximal set of edge-disjoint augmenting paths in the level graph using (DFS) traversals from s. Each DFS explores paths respecting level increases of exactly one per edge, augmenting flow along them until an edge is saturated or no further extension is possible. Multiple such DFS calls are performed, advancing through unsaturated edges, until no additional path reaches t; this saturates a blocking flow in the level graph, preventing any non-extendable paths. The full algorithm iterates these phases: build the level graph via BFS, then compute a blocking flow via repeated DFS, updating the residual network after each augmentation, until BFS cannot reach t. This process guarantees the maximum flow upon termination, as each phase strictly shortens potential augmenting paths in subsequent levels. The time complexity is O(V^2 E) for general capacitated graphs, where V is the number of vertices and E the number of edges, arising from O(V) phases (due to non-decreasing level of t) and O(VE) per phase for BFS and DFS traversals. For unit-capacity networks, it improves to O(V^3) or better in practice, often outperforming its bounds on real-world instances.

Pseudocode Outline

The following outlines the key components in pseudocode, assuming a residual capacity matrix cap and infinity INF. Level Graph Construction (BFS):
level = [array](/page/Array) of size V, initialized to -1
level[s] = 0
queue = empty [queue](/page/Queue)
enqueue s

while queue is not empty:
    u = dequeue()
    for each neighbor v of u where cap[u][v] > 0:
        if level[v] == -1:
            level[v] = level[u] + 1
            enqueue v

return level[t] != -1  // True if path exists
Blocking Flow Computation (Repeated DFS):
function dfs(u, flow):
    if u == t:
        return flow
    for each unsaturated neighbor v from current edge iterator (where level[v] == level[u] + 1 and cap[u][v] > 0):
        pushed = dfs(v, min(flow, cap[u][v]))
        if pushed > 0:
            cap[u][v] -= pushed
            cap[v][u] += pushed  // Update reverse edge
            return pushed
    level[u] = -1  // Optional: mark as visited to avoid re-exploration
    return 0

// In main blocking flow loop:
total_flow = 0
while true:
    pushed = dfs(s, INF)
    if pushed == 0:
        break
    total_flow += pushed
Full Algorithm:
initialize cap[u][v] = capacity of edge (u,v), cap[v][u] = 0 for reverses
max_flow = 0

while BFS builds level graph and level[t] != -1:
    // Reset edge iterators or use visited markers for DFS
    blocking_flow = compute blocking flow as above
    max_flow += blocking_flow
This structure ensures efficient path discovery without revisiting saturated subgraphs.

Illustrative Example

Consider a flow network with vertices s, a, b, c, t and edges: s → a (cap. 4), s → b (cap. 6), a → c (cap. 5), b → c (cap. 3), a → t (cap. 2), b → t (cap. 8), c → t (cap. 7). In the first phase, BFS yields level graph: l(s)=0, l(a)=l(b)=1, l(c)=2, l(t)=3. The blocking flow augments 2 along s-a-t, 3 along s-b-c-t, and 1 along s-a-c-t (saturating a-c), totaling 6 units. Residual updates reduce s-a to 2, s-b to 3, etc. Second phase: New levels l(s)=0, l(a)=1, l(b)=1, l(t)=2 (direct paths). Blocking flow augments 2 along s-a-t and 3 along s-b-t, totaling 5 more units for a maximum flow of 11. This demonstrates multiple augmentations per phase, avoiding single-path inefficiency.

Push–Relabel Algorithm

The push–relabel algorithm, also known as the preflow–push algorithm, computes the maximum in a by maintaining a preflow and iteratively adjusting it through local push and relabel operations. Unlike path-augmenting methods, it avoids explicit path searches by allowing temporary violations of flow conservation at intermediate vertices, enabling more efficient local updates. Introduced by and Tarjan, this framework has become a for high-performance maximum flow implementations due to its ability to handle dense graphs effectively. A preflow extends the notion of a flow by relaxing conservation at non-source and non-sink vertices, permitting an excess of incoming flow over outgoing flow at those nodes. Formally, for a flow network G = (V, E) with capacities c: V \times V \to \mathbb{R}_{\geq 0}, source s, and sink t, a preflow f satisfies the capacity constraints $0 \leq f(u,v) \leq c(u,v) for all (u,v) \in E and skew symmetry f(v,u) = -f(u,v) for all u,v \in V, but conservation holds only for v \in V \setminus \{s, t\} up to the excess e_f(v) = \sum_{u \in V} f(u,v), where e_f(v) \geq 0 for v \neq s, t. The excess represents "unbalanced" flow that must eventually be pushed toward the sink. Residual capacities are referenced as in standard flow networks, with r_f(u,v) = c(u,v) - f(u,v) if (u,v) \in E and f(u,v) > 0, or c(v,u) + f(v,u) otherwise. To guide the flow adjustments, the algorithm assigns a label (or height) d(v) to each vertex v \in V, serving as a distance estimate from v to the sink in the residual graph. Initially, d(s) = |V|, d(t) = 0, and d(v) = 0 for all other v. An edge (v, w) in the residual graph is admissible if r_f(v, w) > 0 and d(v) = d(w) + 1, ensuring pushes occur "downhill" in the label structure. The push operation selects an active vertex v (where e_f(v) > 0 and v \neq s, t) with an admissible outgoing edge (v, w), and transfers \delta = \min(e_f(v), r_f(v, w)) units of flow from v to w, updating f(v, w) += \delta, f(w, v) -= \delta, e_f(v) -= \delta, and e_f(w) += \delta. If no admissible edge exists from v, the relabel operation updates d(v) to \min \{ d(w) + 1 \mid (v, w) \in E_f \} , where E_f denotes residual edges from v, provided e_f(v) > 0. These operations maintain the property that d(v) \leq |V| for all v and d(u) \leq d(v) + 1 for residual edges (u, v). The generic algorithm initializes a preflow by saturating all outgoing edges from the source: set f(s, v) = c(s, v) for neighbors v of s, resulting in e_f(v) = c(s, v) for those v and zero elsewhere except at s. It then repeatedly selects an active and applies pushes until none remain (or relabels if necessary) until all excesses are resolved, at which point the preflow becomes a valid maximum flow. The basic version, selecting active vertices arbitrarily, runs in O(|V|^2 |E|) time, as there are at most O(|V|^2) relabels (each increasing a label by at least 1, bounded by |V|) and O(|V| |E|) pushes (each reducing total excess by at least 1, initially bounded by the sum of capacities). With the selection rule (processing vertices in the order they become active) or highest-label selection (prioritizing vertices with maximum d(v)), the time improves to O(|V|^3), as these strategies bound the number of operations more tightly. and Tarjan further refined implementations using dynamic trees for O(|V| |E| \log(|V|^2 / |E|)) time, though the O(|V|^3) variants are often preferred for practicality. Consider a small flow network with vertices s, v, w, t and edges s \to v (capacity 1), s \to w (capacity 1), v \to w (capacity 1), v \to t (capacity 1), w \to t (capacity 1). After initialization, the preflow sets f(s,v) = 1, f(s,w) = 1, yielding excesses e_f(v) = 1, e_f(w) = 1, and labels d(s) = 4, d(v) = d(w) = d(t) = 0. Assume selection order starts with v: Relabel v to d(v) = 1 (min over residual to t or w). Suppose it pushes to w (admissible r(v,w)=1 >0, d(w)=0 =1-1): \delta = \min(1,1)=1, push 1 from v to w; now e_f(v)=0, e_f(w)=2. Next, select w: No admissible (to t: d(w)=0 \neq 0+1); relabel w to 1 (min to t). Now admissible to t (r(w,t)=1 >0, d(t)=0=1-1); push \delta = \min(2,1)=1 to t; e_f(w)=1. Still active w: No admissible to t (saturated); to v=1 >0, but d(v)=1 \neq 0+1; relabel w to d(v)+1=2. Now admissible to v (d(v)=1=2-1); push 1 from w to v; e_f(w)=0, e_f(v)=1. Select v (excess 1, d(v)=1): Admissible to t (r(v,t)=1 >0); push 1 to t; e_f(v)=0. No active nodes; total flow=2 (maximum, by min-cut of edges to t capacity 2). This illustrates local pushes and relabels resolving excess without full paths. The push–relabel framework offers advantages in parallelization, as push and relabel operations on distinct active vertices can often be performed concurrently with careful on shared capacities, leading to scalable implementations on multi-core systems. Additionally, its local operations enhance efficiency by minimizing long-range memory accesses compared to path-based algorithms, making it particularly effective for dense graphs in practice.

Theoretical Results

Max-Flow Min-Cut Theorem

In a G = (V, E) with source s and sink t, an s-t cut is a of the set V into two disjoint subsets S and T such that s \in S and t \in T. The of this cut, denoted c(S, T), is the sum of the capacities of all edges directed from S to T: c(S, T) = \sum_{\substack{u \in S \\ v \in T}} c(u, v). This represents the total amount of that can potentially cross from the source side to the sink side along those edges. The , first proved by and Fulkerson, states that in any , the value of the maximum s-t equals the of the minimum s-t cut, taken over all possible s-t cuts. Formally, if f_{\max} denotes the maximum value and \delta = \min_{(S,T)} c(S, T), then f_{\max} = \delta. This duality establishes a fundamental equivalence between the optimization problems of maximizing and minimizing cut . The proof of the theorem relies on two key components: weak duality and . Weak duality holds for any feasible f and any s-t cut (S, T), where the value |f| satisfies |f| \leq c(S, T). This arises because the net leaving S (which equals |f| by flow conservation) cannot exceed the total of edges crossing from S to T, as any backward across the cut would be accounted for but bounded by forward capacities. Strong duality is established using the residual graph G_f of a flow f. If f is a maximum flow, then G_f contains no augmenting path from s to t. Define S as the set of vertices reachable from s in G_f, with T = V \setminus S (so t \in T). This (S, T) forms an s-t cut where f saturates every from S to T (no residual forward) and carries no flow from T to S (no residual backward across the cut). Consequently, |f| = c(S, T), and since weak duality implies |f| \leq \min c(S, T), this cut must be minimum, proving f_{\max} = \delta. Ford and Fulkerson derived the in the context of their , which iteratively augments flow along in the residual graph until no such path exists. The absence of an augmenting path signals termination, and the analysis shows that the final flow equals the min-cut capacity, providing both an algorithmic method and the theoretical foundation for optimality. This insight emerged from studying network flows in transportation problems, where the theorem guarantees to the global maximum. To illustrate, consider a network with edges s \to a (capacity 3), s \to b (capacity 1), a \to t (capacity 1), b \to t (capacity 2), and a \to b (capacity 1). The Ford-Fulkerson algorithm yields a maximum flow of 3 via augmenting paths s-a-t (1), s-b-t (1), and s-a-b-t (1). In the final residual graph, the set S = \{s, a\} (vertices reachable from s) defines the min-cut (S, T) with T = \{b, t\}, and the cut capacity is c(s, b) + c(a, b) + c(a, t) = 1 + 1 + 1 = 3, matching the flow value. The theorem's implications extend to verification: once a maximum flow is computed, the corresponding min-cut from the residual graph serves as a of optimality, as no flow can surpass the cut's . This duality not only bounds the flow problem but also enables efficient checks for solution quality in practice.

Integral Flow Theorem

The Integral Flow Theorem states that if all capacities in a are integers, then there exists a maximum in which the flow value on every edge is an . This result guarantees that the maximum flow value itself is an , providing a characterization of the optimum in networks with integral capacities. A proof sketch relies on the : starting from the zero flow, each augmenting path found via or has a bottleneck capacity that is the minimum of values along the path, hence an ; repeated augmentations thus yield an -valued maximum upon termination. An important extension is the flow decomposition theorem: any -valued can be decomposed into a collection of source-to-sink paths and directed cycles, where each path or cycle carries a positive , and the total is the sum of the path flows minus any circulating flows in cycles (which do not affect the net value). For a maximum , the decomposition consists solely of paths since cycles can be eliminated without decreasing the value. This integrality has key consequences, including combinatorial interpretations of maximum flows as unions of edge-disjoint paths and the ability to solve the problem exactly without dealing with fractions, which is crucial for applications requiring allocations. Additionally, the connects to : the constraint matrix for the maximum flow formulation is totally unimodular, ensuring that all vertices of the feasible are integer points when capacities are integers, thus yielding integer optimal solutions. As an illustrative example, consider a flow network with source s, sink t, and edges s to a (capacity 3), s to b (capacity 2), a to t (capacity 1), b to t (capacity 2); a maximum flow of value 3 decomposes into one path s-a-t with flow 1 and one path s-b-t with flow 2, summing to the total.

Combinatorial Applications

Bipartite Matching

The maximum cardinality matching problem in can be solved using the maximum flow framework. Consider a G = (U \cup W, E), where U and W are disjoint sets and E consists of edges between them. To model this as a , introduce a s and connect it to every in U with edges of 1; similarly, connect every in W to a t with edges of 1. The original edges in E are directed from U to W and assigned 1. In this construction, each unit of flow from s to t corresponds to selecting an edge in E that pairs a unique in U to a unique in W, respecting the unit that prevent overuse of any . The value of the maximum flow in this network equals the size of the maximum matching in G. This equivalence follows from the : any cut separating s from t must "cover" all possible matching edges either by including source-to-U edges (limiting available left vertices), sink-from-W edges (limiting available right vertices), or U-to-W edges, with the minimum such cut bounding the flow and thus the matching size. Moreover, the integral flow theorem guarantees an integral maximum exists, given integer capacities, ensuring the flow decomposes into unit paths that directly yield an integer matching without fractional assignments. To compute the matching, apply a maximum flow algorithm such as the Edmonds-Karp algorithm, which iteratively finds shortest augmenting paths using until no path from s to t remains unsaturated. Each augmenting path increases the matching by one edge, and the resulting edges from U to W with positive form the maximum matching. As a key corollary, this -based approach proves König's theorem: in a , the size of the maximum matching equals the size of the minimum . The in the constructed network identifies a , as the vertices on the source side of the cut (excluding s) and sink side (excluding t) cover all edges, and the cut matches the value. The Edmonds-Karp algorithm achieves this in O(VE) time for bipartite matching, where V = |U| + |W| + 2 and E includes the added edges; the maximum flow value is at most \min(|U|, |W|) \leq V/2, yielding at most O(V) augmentations, each requiring O(E) time for BFS. This reduction linking bipartite matching to flows emerged in the 1950s alongside advances in network flows.

Vertex Capacities

In flow networks where vertices impose capacity constraints in addition to edges, the total inflow to a vertex v cannot exceed a specified c(v), reflecting real-world restrictions such as processing power or storage bounds. This variant extends the standard maximum flow problem by adding the constraint \sum_{u: (u,v) \in E} f(u,v) \leq c(v) for each non-source, non-sink v, while preserving edge capacities and conservation. To solve this using standard edge-capacity algorithms, a common reduction transforms the by splitting each v (except s and t) into two vertices v_{in} and v_{out}. An edge (v_{in}, v_{out}) is added with capacity c(v), all original incoming edges to v are redirected to v_{in}, and all outgoing edges from v are redirected from v_{out}. The and remain unsplit. This modified network has only edge capacities, and computing its maximum flow yields the maximum flow value of the original vertex-capacitated network. In the resulting flow, the value on each split edge (v_{in}, v_{out}) equals the total flow processed through v in the original . Consider a simple with vertices s, a, b, t, edges s \to a ( 3), s \to b ( 2), a \to t ( 4), b \to t ( 3), and vertex c(a) = 2, c(b) = 3. After splitting, a becomes a_{in}, a_{out} with (a_{in}, a_{out}) 2, and edges s \to a_{in} (3), a_{out} \to t (4); similarly for b. The maximum in this split network is 4 (e.g., of 2 through s \to a_{in} \to a_{out} \to t and 2 through s \to b_{in} \to b_{out} \to t), matching the original constrained where a's usage is limited to 2. This technique models scenarios like processor loads in task scheduling, where vertices represent with limited execution , or storage nodes in supply chains with bounded holding limits. The increases the number of vertices to O(V) and edges by O(V), so standard algorithms like Edmonds–Karp run in adjusted time O(V(E + V)^2), while faster methods like Dinic's achieve O(V^2(E + V)). If all original capacities (edge and vertex) are integers, the reduction preserves integrality: the maximum flow in the split network is integer-valued, per the integral flow theorem applied to the edge-capacitated instance.

Path Covers and Number of Paths

In directed acyclic graphs (DAGs), the minimum path cover problem involves finding the smallest number of vertex-disjoint paths that together include every vertex exactly once. This problem can be reduced to a maximum flow computation by constructing a flow network where each vertex v \in V is split into an "in" copy v_{\text{in}} and an "out" copy v_{\text{out}}, with an edge of capacity 1 from v_{\text{in}} to v_{\text{out}}. A source s connects to each v_{\text{in}} with capacity 1, each v_{\text{out}} connects to a sink t with capacity 1, and for every original edge (u, v) \in E, an edge from u_{\text{out}} to v_{\text{in}} with capacity 1 is added. The value of the maximum flow in this network equals |V| minus the size of the minimum path cover, as each unit of flow corresponds to linking vertices into paths, and unsaturated source or sink edges indicate path starts or ends. Once the maximum flow is computed, the integer flow can be decomposed into paths using standard flow decomposition techniques, where each path in the decomposition corresponds to a segment of the cover, and isolated vertices form singleton paths. For example, consider a DAG with vertices \{1, 2, 3, 4\} and edges (1,2), (2,4), (3,4). The yields a maximum flow of 2 (e.g., flow paths s \to 1_{\text{in}} \to 1_{\text{out}} \to 2_{\text{in}} \to 2_{\text{out}} \to t and s \to 3_{\text{in}} \to 3_{\text{out}} \to 4_{\text{in}} \to 4_{\text{out}} \to t), implying $4 - 2 = 2 paths: one covering $1 \to 2 and another covering $3 \to 4. This reduction runs in polynomial time, with particularly efficient on the unit-capacity network, achieving O(\sqrt{|V|} |E|) time due to the bounded number of blocking flow phases. The maximum flow framework also addresses finding the maximum number of edge-disjoint or vertex-disjoint paths between specified source s and sink t vertices. By , the maximum number of edge-disjoint s- t paths equals the minimum number of edges whose removal disconnects s from t, which by the equals the maximum flow value when all edges have unit capacity 1. For vertex-disjoint paths, the graph is transformed by splitting each non-s, non-t vertex into in and out copies connected by a capacity-1 edge, with original edges rerouted accordingly; the resulting unit-capacity maximum flow then yields the desired number. These reductions highlight the versatility of maximum flow in combinatorial path problems. While efficient for DAGs, the minimum path cover problem becomes NP-hard in general directed graphs with cycles, as it generalizes to harder covering constraints without acyclicity. Similarly, variants with edge weights (e.g., minimizing total path weight) are NP-hard even on DAGs, requiring dynamic programming or other methods beyond standard maximum flow.

Closure Problems

The closure problem involves finding a of in a that maximizes the sum of weights while satisfying the property: if a is included in the , all reachable from it via directed must also be included. weights can be positive, negative, or zero, reflecting benefits or costs associated with selecting the . This problem can be solved by reducing it to a maximum flow problem in a modified flow network. Given a directed graph G = (V, A) with vertex weights b_v for v \in V, introduce a source s and a sink t. Add edges from s to each vertex v with b_v > 0, with capacity b_v; add edges from each vertex u with b_u < 0 to t, with capacity -b_u; and assign infinite capacity to all original edges in A. The minimum s-t cut in this network corresponds to the maximum-weight closed set, where the source side of the cut (excluding s) forms the closed set. Specifically, the capacity of the minimum cut equals the sum of all positive weights minus the weight of the maximum closure, so the maximum flow value is this constant minus the optimal closure weight. A representative example is the selection problem, where vertices represent projects with (positive weights) or costs (negative weights), and directed indicate prerequisites: an from project u to prerequisite v enforces that selecting u requires selecting v. The maximum identifies the optimal subset of projects to maximize net while respecting dependencies. The problem is solvable in time using any maximum , such as the Edmonds–Karp or push–relabel methods, due to the equivalence with the min-cut problem. This reduction extends to decision graphs modeling and costs under implication constraints, enabling optimization in combinatorial settings like .

Real-World Applications

Baseball Elimination

The baseball elimination problem applies the maximum flow problem to determine whether a in a league can no longer mathematically achieve first place, given the current win totals and remaining games schedule. This scenario models the constraints on possible win distributions among teams, where each remaining game contributes exactly one win to some in the league. By constructing a that represents the remaining inter-team games excluding the candidate , the maximum flow computation verifies if all those games can be assigned without any other surpassing the maximum possible wins for the candidate . To check if team k is eliminated, the flow network includes vertices for the source s, the sink t, each other team i \neq k, and each pair of other teams \{i, j\} with i < j and i, j \neq k. Edges from s to each pair node \{i, j\} have capacity equal to the number of remaining games g_{ij} between teams i and j. Each pair node connects to its two team nodes i and j with infinite capacity, allowing the win from any game between them to be attributed to either team. Finally, edges from each team node i to t have capacity w_k + g_k - w_i, where w_k and w_i are the current wins of teams k and i, and g_k is the total remaining games for team k (representing the maximum additional wins team i can afford without exceeding team k's possible total of w_k + g_k). The total capacity out of the source equals the sum of all g_{ij} over pairs excluding k. Team k is eliminated if the maximum flow value is strictly less than this total, indicating that it is impossible to assign wins from those games without violating the win limits for at least one other team. A representative teaching example involves National League standings used in algorithms courses: Atlanta with 83 wins and 8 games remaining, Philadelphia with 80 wins and 3 remaining, New York with 78 wins and 6 remaining, and Montreal with 77 wins and 3 remaining. To check if Philadelphia (k) is eliminated (max 83 wins), the network for other teams (Atlanta, New York, Montreal) has source connected to pair nodes Atlanta-New York (cap. 6) and Atlanta-Montreal (cap. 1), total 7; each pair to teams with infinite capacity; and teams to sink: Atlanta (cap. 0), New York (cap. 5), Montreal (cap. 6). The max flow is 6 < 7, so Philadelphia is eliminated, as the wins cannot be assigned without Atlanta exceeding 83. The minimum cut in this network provides insight into the reason for elimination: it partitions the graph such that the cut capacity equals the flow, and the teams on the source side of the cut (excluding pairs) form a subset whose collective maximum wins exceed what is possible if they lose all games to the candidate team, highlighting the blocking set of games or teams. This interpretation aids in explaining eliminations to fans or analysts, showing specific outcomes needed for impossibility. The problem was first formally modeled using maximum flow by B. L. Schwartz in 1966, building on earlier informal discussions of elimination in baseball from the 1950s, and has been popularized in seminal combinatorial optimization texts like those by Ahuja, Magnanti, and Orlin. Given the small size of these networks—O(n^2) edges for n teams—they can often be solved by hand using the Ford-Fulkerson method or visualized with simple diagrams, though modern implementations use efficient algorithms like preflow-push for larger hypothetical leagues. This application demonstrates how maximum flow captures the integral nature of wins (each game yields one unit) and the non-commodity constraints on total outcomes.

Airline and Circulation Scheduling

The maximum flow problem finds significant application in scheduling, where are modeled as vertices in a and flight routes as directed edges with capacities representing constraints such as available seats, availability, or limits. To assess route feasibility, a super-source is connected to origin with supply capacities, and a super-sink to destination with capacities; the maximum value then indicates the maximum sustainable passenger or throughput across the network. This approach extends the basic max-flow formulation to handle multiple sources and sinks, ensuring balanced operations while respecting edge capacities. A practical example involves an airline network with hub constraints, such as a central airport limiting connections to 10 flights per hour. Vertices represent airports (e.g., A, B, C as ), edges denote direct flights with capacities (e.g., 50 seats from A to B), and the super-source supplies 200 passengers from peripheral cities while the super-sink demands 200 at destinations. the max flow reveals if 200 passengers can be routed without exceeding hub limits; if the flow equals 200, the schedule is feasible, otherwise bottlenecks (min-cuts) identify capacity shortfalls. Hub constraints can incorporate vertex capacities by splitting , as discussed in vertex capacities models. Circulation-demand problems generalize these applications by requiring a balanced (inflow equals outflow at each ) subject to demands (net supply or ) and bounds (lower and upper ). These arise in scheduling scenarios like rotations or freight , where planes must return to bases () while meeting minimum flight requirements (lower bounds). To solve, the problem reduces to a max- instance: add a super-source with edges to supply nodes ( equal to supply amount) and a super-sink with edges from nodes ( equal to ); for lower bounds, set an initial along those edges, adjust demands by the imbalance, and reduce accordingly. A feasible circulation exists if the resulting max equals the total -supply difference. In real-world operations, circulation models optimize crew assignments by treating flight legs as edges in a time-expanded , with capacities of 1 per crew and demands for coverage at each leg; this ensures efficient rotations while minimizing flights. Similarly, for freight scheduling, it balances cargo loads across cycles with port demands, implicitly handling time windows through layered graphs. These formulations are implemented in by major airlines for profitability and efficiency. The scales with network size, typically involving thousands of vertices for daily schedules, but efficient algorithms like Dinic's achieve polynomial time O(V^2 E), enabling solutions for large-scale instances in reasonable time.

Image Segmentation

In , the maximum flow problem enables graph cut-based by modeling the task as partitioning pixels into foreground and background regions while minimizing an energy function that incorporates both data-driven and smoothness priors. This approach treats the image as a , where the corresponds to an optimal segmentation boundary, leveraging the duality between maximum flow and minimum cut to ensure global optimality for binary labels. The construction represents each as a , with edges between neighboring pixels assigned capacities that penalize discontinuities based on differences or other similarity measures to enforce spatial . Additional vertices for the source (representing foreground) and (representing background) connect to each with capacities reflecting unary terms, such as the likelihood of a belonging to either class derived from color models or user scribbles. The total energy minimized by the min-cut is the sum of these costs (for properties) and costs (for regularity), ensuring the segmentation balances fidelity to observed image features with coherent labeling. To reduce the energy minimization to a maximum flow computation, unary terms are directly encoded as infinite-capacity edges from pixels to or if hard constraints apply, or finite capacities otherwise, while interaction terms between pixels are modeled as weighted edges that are cut only if labels differ. This construction guarantees that any finite-capacity s-t cut separates the graph into source-connected (foreground) and sink-connected (background) components, with the cut value exactly matching the segmentation energy. A representative example is interactive foreground , where user-provided seeds near the object initialize strong connections for foreground pixels and connections for , guiding the max-flow to propagate labels across the and delineate the object boundary via the min-cut. In such cases, the resulting robustly handles occlusions and varying illumination by optimizing the global energy rather than local decisions. For implementation on large images with millions of pixels, the push-relabel algorithm proves highly efficient due to its ability to handle high-degree vertices and dense graphs common in vision tasks, outperforming augmenting path methods in empirical benchmarks on segmentation problems. While segmentation achieves exact global minima, extensions to multi-label scenarios—such as segmenting multiple objects—employ approximate techniques like alpha-expansion, which iteratively solve graph cut subproblems to minimize energies with non-submodular potentials, maintaining strong local optimality guarantees. These methods focus primarily on cases for precision in applications like precise boundary detection. In practice, graph cut segmentation via maximum flow finds extensive use in for tasks such as tumor or organ delineation from MRI or scans, where accurate region partitioning aids and planning. It also supports in natural images by enabling robust foreground isolation. Recent GPU-accelerated implementations, such as those using for push-relabel, enable real-time processing of high-resolution volumes, scaling to clinical workflows.

Extensions

Multi-Source Multi-Sink Flows

The multi-source multi-sink maximum flow problem extends the classical formulation by permitting multiple nodes to act as sources of and multiple nodes as sinks, enabling the modeling of scenarios where originates from or terminates at distributed points in the network. In this setup, each source s_i may have a supply d_i^+ limiting the outflow, and each sink t_j may have a demand d_j^- capping the inflow, though in the unbounded case, these are effectively infinite. The objective remains to maximize the total value across all sources to all sinks while respecting capacities and at intermediate nodes. To solve this, a reduction transforms the problem into a single-source single-sink instance by introducing a super-source s^* and a super-sink t^*. Directed edges are added from s^* to each source s_i with capacity d_i^+ (or unbounded, often set to nU where n is the number of nodes and U the maximum edge capacity, to bound the search space), and from each sink t_j to t^* with capacity d_j^- (similarly unbounded if unspecified). The maximum flow from s^* to t^* in this augmented network equals the total maximum flow in the original multi-source multi-sink setup, as the super-nodes aggregate the distributed origins and destinations without introducing new bottlenecks beyond the specified supplies and demands. This reduction preserves the time complexities of standard maximum flow algorithms, such as Ford-Fulkerson or Edmonds-Karp, adding only O(k + l) edges where k and l are the numbers of sources and sinks, respectively. Applications arise in sensor networks, where multiple sensor nodes (sources) transmit to multiple base stations (sinks) under bandwidth constraints, optimizing aggregate throughput via distributed max-flow computations. In distributed systems, it models load balancing across multiple producers and consumers, such as in networks tasks or resources. A representative example is a with multiple factories as sources and warehouses as sinks, where edge capacities represent limits between facilities. By applying the super-source super-sink reduction, the total maximum goods shipment from factories to warehouses can be computed efficiently, aiding in throughput planning. For instance, if factories F_1, F_2 supply up to 10 and 15 units, respectively, and warehouses W_1, W_2 demand up to 12 and 13 units, the augmented 's max flow yields the feasible total dispatch, bounded by the minimum of total supply (25), total demand (25), and constraints. In variants where total supply equals total demand (balanced case), the problem aligns with a formulation solvable exactly via the reduction, ensuring full satisfaction if capacities permit. For unbalanced cases, where supply exceeds or vice versa, the max still computes the achievable total precisely, though algorithms may be employed in multi-commodity extensions to prioritize fulfillment under additional constraints like distinctions.

Unit Capacity and Multi-Commodity Variants

In unit-capacity networks, where the capacity of every edge is restricted to 1, the maximum flow problem admits specialized algorithms that exploit this uniformity for improved efficiency. These networks model scenarios such as edge-disjoint path routing, where flow represents the number of non-overlapping paths from to . , which builds blocking flows in level graphs, achieves a of O(\sqrt{V} E) in this setting, significantly faster than the general case bound of O(V^2 E). A key insight for unit-capacity networks is the direct connection to graph connectivity via Menger's theorem, which states that the maximum number of edge-disjoint paths between two vertices equals the minimum number of edges whose removal disconnects them. By setting all capacities to 1, the integral maximum flow value precisely equals this number, allowing the flow computation to solve the disjoint paths problem exactly. For example, in a seeking k edge-disjoint paths from s to t, the unit-capacity max yields either k such paths or certifies impossibility; this contrasts with general-capacity networks, where flows may split across paths or use fractional values, requiring more complex decomposition to extract paths. Multi-commodity flows extend the model by routing multiple distinct commodities—each with its own source-sink pair—while sharing the underlying edge capacities additively across commodities. The goal is typically to maximize the total routed flow or achieve a concurrent fraction of specified demands, subject to not exceeding capacities. Unlike single-commodity flows, the integral version is NP-hard even for two commodities in both directed and undirected graphs, as it encompasses problems like edge-disjoint paths for multiple pairs. Despite this , fractional multi-commodity admit polynomial-time . For the maximum concurrent problem—maximizing a \lambda of demands routable without violating capacities—a fully polynomial-time (FPTAS) exists for undirected graphs, while a 2- via iterative scaling and packing techniques is available more generally. Recent advances have refined to nearly linear-time implementations for undirected graphs, maintaining constant-factor guarantees, with extensions to multi-commodity settings. In contrast to unit-capacity single-commodity , which remain polynomial-time solvable, multi-commodity variants escalate in complexity, often requiring due to their combinatorial intractability. Advanced variants further generalize to stochastic flows, where edge capacities or demands follow probabilistic distributions, necessitating robust or expected-value optimizations under uncertainty. For instance, constrained stochastic max flow seeks flows maximizing expected throughput while respecting probabilistic capacity violations. Similarly, dynamic edge variants handle insertions or deletions over time, with algorithms maintaining approximate max flows in polylogarithmic updates per change for highly dynamic graphs. These extensions highlight the robustness of flow models in uncertain or evolving networks, though they introduce additional computational challenges beyond static unit-capacity cases.

References

  1. [1]
    [PDF] Introduction to Network Flow Problems 1 Basic definitions and ...
    Definition 1.1. A flow network is a directed graph D = (V,E) with two distinguished vertices s and t called the source and the sink, respectively.<|control11|><|separator|>
  2. [2]
    [PDF] 1 Max flow
    In the max-flow problem, our goal is to find the flow with the maximum value. ... We may increase the overall flow in the graph by augmenting the flow by F.
  3. [3]
    [PDF] On the history of the transportation and maximum flow problems - CWI
    Harris and F.S. Ross from 1955, that Ford and Fulkerson mention as motivation to study the maximum flow problem. The papers have in common that they both ...Missing: original | Show results with:original
  4. [4]
    [PDF] maximal flow through a network - lr ford, jr. and dr fulkerson
    Introduction. The problem discussed in this paper was formulated by. T. Harris as follows: "Consider a rail network connecting two cities by ...
  5. [5]
    [PDF] Flows in Networks - RAND
    Flows in Networks. L. R. Ford, Jr., and D. R. Fulkerson. August 1962. R-375-PR. A REPORT PREPARED FOR. UNITED STATES AIR FORCE PROJECT RAND. The RAND ...Missing: original paper
  6. [6]
    [PDF] Maximum Flows & Minimum Cuts
    Ford and Fulkerson's proof of the Maxflow-Mincut Theorem immediately sug- gests an algorithm to compute maximum flows: Starting with the zero flow, repeatedly ...
  7. [7]
    [PDF] Maximum Flows
    Our goal in this lecture is to solve the maximum flow problem. Definition 5 Maximum flow problem: Given a network G = (V,E), find a feasible flow f with.
  8. [8]
    [PDF] ‣ max-flow and min-cut problems ‣ Ford–Fulkerson algorithm ...
    Nov 1, 2021 · This paper presents new algorithms for the maximum flow problem, the Hitchcock transportation problem, and the general minimum-cost flow problem ...
  9. [9]
    [PDF] Applications of maximum flows
    Maximum flows are used to compute edge-disjoint paths, vertex-disjoint paths, and find maximum matchings in bipartite graphs.
  10. [10]
    [PDF] Maximum Flow Applications - cs.Princeton
    Suppose max number of edge-disjoint paths is k. Then max flow value is k. Max-flow min-cut ⇒ cut (S, T) of capacity k. Let F be set of edges going from S to T.
  11. [11]
    [PDF] Lecture 13 - Network Flow - MIT OpenCourseWare
    Definition. A flow network is a directed graph G = (V,E) with distinguished vertices s (the source) and t (the sink), in which each edge (u,v) ∈ E has a ...
  12. [12]
    [PDF] 1 Basic Definitions - CS@Cornell
    An s − t flow in G is a two-variable function f : V × V → R that satisfies: • skew-symmetry: f(u, v) + f(v, u) = 0 for all u, v ∈ V .
  13. [13]
    [PDF] Network-Flow.pdf
    A flow network is a directed graph with a source and sink. A flow is a function with capacity constraints. The maximum-flow problem finds the flow of maximum ...
  14. [14]
    [PDF] 4. Lecture notes on flows and cuts 4.1 Maximum Flows
    Apr 6, 2017 · The main question is how much can be sent in this network. Here is a more formal definition of the maximum flow problem. We have a digraph.
  15. [15]
    [PDF] CS 473: Algorithms, Fall 2019 - Reductions
    Nov 14, 2019 · Problem (Max-Flow decision version). Given an instance G of network flow and a parameter K, is there a flow in G, from s to t, ...
  16. [16]
    [PDF] Lecture 4
    Sep 9, 2008 · The maximum flow problem is defined by a directed graph G = (V,A), and two distinguished nodes, s (the source) and t (the sink).
  17. [17]
    The Max flow problem formulated as a Linear Program - Emory CS
    The Linear Program (LP) that is derived from a maximum network flow problem has a large number of constraints. There is a "Network" Simplex Method developed ...
  18. [18]
    [PDF] Lecture 15 1 The LP of Maximum Flow and Its Dual
    Feb 24, 2011 · In which we look at the linear programming formulation of the maximum flow problem, construct its dual, and find a randomized-rounding proof ...
  19. [19]
    Introduction to Algorithms - MIT Press
    Introduction to Algorithms. fourth edition. by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. Hardcover. $150.00. Hardcover. ISBN ...
  20. [20]
    [PDF] Theoretical Improvements in Algorithmic Efficiency for Network Flow ...
    ABSTRACT. This paper presents new algorithms for the maximum flow problem, the Hitchcock transportation problem, and the general minimum-cost flow problem.
  21. [21]
    [PDF] Introduction to Algorithms The Edmonds-Karp Max-Flow Algorithm ...
    The algorithm's running time is pseudopolynomial, but not polynomial. We've seen an ex- ample illustrating that a bad choice of augmenting paths can cause ...
  22. [22]
    [PDF] Network Flow and Matching Edmonds-Karp Analysis
    Apr 3, 2015 · The Edmonds-Karp maximum-flow algorithm runs in O(V E2) time. Proof: Breadth-First Search runs in O(E) time, and there are O(V E) augmentations.
  23. [23]
    [PDF] Maximum Flow & Bipartite Matching
    Proved O(VE2) time complexity for Edmonds-Karp. Page 35. Fall 2008. CS404/504 - Lecture 21. 35. Edmonds-Karp: Example s v2 v1 v3 t v4. 16. 13. 12. 14. 20. 4. 10.
  24. [24]
    Algorithm for Solution of a Problem of Maximum Flow in Networks ...
    PDF | On Jan 1, 1970, E A Dinitz published Algorithm for Solution of a Problem of Maximum Flow in Networks with Power Estimation | Find, read and cite all ...
  25. [25]
    Network Flow and Testing Graph Connectivity | SIAM Journal on ...
    An algorithm of Dinic for finding the maximum flow in a network is described ... Copy the content Link. https://epubs.siam.org/doi/10.1137/0204043. Copy Link.
  26. [26]
    A new approach to the maximum-flow problem | Journal of the ACM
    ... Dinic). An alternative method based on the preflow concept of Karzanov is ... https://doi.org/10.1007/s10107-025-02295-0. Show More Cited By. Index Terms.Missing: paper URL
  27. [27]
    [PDF] The Push-Relabel Algorithm for Maximum Flow - Tim Roughgarden
    Jan 12, 2016 · For example, in Figure 1, if we've routed k units of flow to x but not yet distributed over the paths to t, then the vertex x has k units of ...
  28. [28]
    [PDF] Parallizing the Push-Relabel Max Flow Algorithm - csail
    For example, when flow is pushed between two nodes, both nodes are locked in order to update the flow excess and residual capacity values and pre- vent a ...
  29. [29]
    A Cache-Aware Parallel Implementation of the Push-Relabel ...
    The push-relabel method has been shown to be superior to other methods, both in theoretical bounds and in experimental implementations. Our study discusses the ...Missing: advantages | Show results with:advantages
  30. [30]
    [PDF] CMSC 451: Maximum Bipartite Matching
    maximum matching in a bipartite graph in O(mn) time. • We do this by reducing the problem of maximum bipartite matching to network flow.
  31. [31]
    [PDF] Matching Bipartite Matching Reduction to Max-Flow Correctness
    Proof. Maximum Flow: send as much flow as possible from the sources to the sinks. Sinks don't care which source they get flow from. Minimum Cut: find a minimum ...
  32. [32]
    [PDF] Matchings and the max-flow min-cut theorem - Nicolò Cesa-Bianchi
    Apr 11, 2020 · We use the max-flow min-cut theorem to prove the next result. Theorem 4 (König, 1931) The maximum cardinality of a matching in a bipartite graph ...
  33. [33]
    [PDF] Hall's Theorem and König's Theorem from Max-Flow Min-Cut Theorem
    Aug 15, 2023 · We prove Hall's Theorem and König's Theorem from the above max-flow min-cut Theorem. Let G(V = AUB,E) be a bipartite graph.
  34. [34]
    [PDF] On the history of combinatorial optimization (till 1960) - CWI
    It amounts to the theorem of K˝onig [1931] that in a bipartite graph. G = (V,E), the maximum size of a matching is equal to the minimum number of vertices.
  35. [35]
    [PDF] Lecture 16 1 Generalizations of the Maximum Flow Problem
    Mar 2, 2011 · In such a case, we can do a reduction to the standard maximum flow problem by adding a “super-source” node s, connected with edges of infinite ...
  36. [36]
    Different Variants of the Max Flow Problem - csail
    Transform the graph by splitting every vertex $v$ into two vertices $v_{in}$ and $v_{out}$, connecting all the original incoming edges to $v_{in}$ and all the ...Missing: technique | Show results with:technique
  37. [37]
    26-2 Minimum path cover - CLRS Solutions - walkccc.me
    A minimum path cover of G G G is a path cover containing the fewest possible paths. a. Give an efficient algorithm to find a minimum path cover of a directed ...
  38. [38]
    Sparsifying, Shrinking and Splicing for Minimum Path Cover in ...
    A minimum path cover (MPC) of a directed acyclic graph (DAG) G = (V,E) is a minimum-size set of paths that together cover all the vertices of the DAG. ...
  39. [39]
    [PDF] CMSC 451: Edge-Disjoint Paths - CMU School of Computer Science
    We can use a maximum flow algorithm to find k edge-disjoint, s-t paths in a graph. Embedded within any flow of value k on a unit-capacity graph there are k edge ...
  40. [40]
    [PDF] 7. Network Flow Applications 7.6 Disjoint Paths - cs.Princeton
    Menger's Theorem (1927). The max number of edge-disjoint s-t paths is equal to the min number of edges whose removal disconnects t from s.
  41. [41]
    Minimum paths required to cover all vertices of three-way graph.
    Oct 24, 2020 · ... minimum path cover of D. This problem is NP-hard for general oriented graphs, but for DAGs it can be reduced to the problem of finding a ...
  42. [42]
    Maximal Closure of a Graph and Applications to Combinatorial ...
    If a real number is associated to each node of G a maximal closure is defined as a closure of maximal value.
  43. [43]
    [PDF] A new—old algorithm for minimum‐cut and maximum‐flow in ...
    This paper has a dual purpose: It introduces a new approach for solving maximum flow on closure graphs and it addresses the need of the mining industry to solve.Missing: seminal | Show results with:seminal
  44. [44]
    On the structure of all minimum cuts in a network and applications
    Feb 25, 2009 · Picard and M. Queyranne, “Selected applications of the maximum flow and minimum cut problems”, Tech. Rept. EP79-R-35, Ecole Polytechnique de ...
  45. [45]
    Possible Winners in Partially Completed Tournaments
    Possible Winners in Partially Completed Tournaments · B. L. Schwartz · Published 1 July 1966 · Mathematics · Siam Review.
  46. [46]
    [PDF] Lecture 14: Baseball Elimination - MIT OpenCourseWare
    Theorem 1.​​ Team 5 (Detroit) is eliminated if and only if max-flow does not saturate all edges leaving the source, i.e., max flow value < 26. Proof. Saturation ...
  47. [47]
    [PDF] Lecture 2 1 Applications of the maximum flow problem
    Aug 28, 2007 · This lecture discusses two applications of the maximum flow problem: baseball elimination and carpool fairness. 1.1 Baseball Elimination.
  48. [48]
    COS 226 Programming Assignment: Baseball Elimination
    To check whether or not one particular team x is eliminated, we create a network and solve a maximum flow problem in it. In the network, feasible integral flows ...
  49. [49]
    [PDF] A New Property and a Faster Algorithm for Baseball Elimination
    All eliminated teams can be determined in time proportional to one preflow-push maximum flow computation in a network with n nodes. The problem considered in ...
  50. [50]
    A New Property and a Faster Algorithm for Baseball Elimination
    In the 1960's, Schwartz showed how to determine whether one particular team is eliminated using a maximum flow computation. This paper indicates that the ...
  51. [51]
    [PDF] A New Property and Faster Algorithm for Baseball Elimination
    In the 1960's, Schwartz showed how to determine whether one particular team is eliminated using a maximum flow computation. This paper indicates that the ...
  52. [52]
    [PDF] Applications of Network Flow - Computer Science (CS)
    Airline Scheduling. Extension of Max-Flow Problem. ▻ Suppose we have a set S of multiple sources and a set T of multiple sinks. ▻ Each source can send flow ...
  53. [53]
    [PDF] CMSC 451: Max-Flow Extensions - CMU School of Computer Science
    CMSC 451 covers circulations with demands, where sinks want flow, and lower bounds, where some edges must be used, and how to reduce these to max-flow.
  54. [54]
    [PDF] Lecture 11: Dinic's Algorithm Wed. October 1, 2014
    Oct 1, 2014 · The level graph only contains edges between neighboring levels. We're only going to be interested in augmenting paths in GL which go through all ...
  55. [55]
    [PDF] Interactive Graph Cuts for Optimal Boundary & Region ...
    Graph cuts are used to find the globally optimal segmentation of the N-dimensional image. The obtained so- lution gives the best balance of boundary and region ...Missing: seminal | Show results with:seminal
  56. [56]
    [PDF] An Experimental Comparison of Min-Cut/Max-Flow Algorithms for ...
    This paper compares min-cut/max-flow algorithms for energy minimization in vision, including push-relabel and augmenting path methods, and a new algorithm.<|control11|><|separator|>
  57. [57]
    [PDF] Fast Approximate Energy Minimization via Graph Cuts
    Note that most of this work was done while. Yuri Boykov and Olga Veksler were at Cornell. Page 2. IEEE Transactions on PAMI, vol. 23, no. 11, pp. 1222-1239 p ...
  58. [58]
  59. [59]
  60. [60]
    The Basic Scheme for Maximum Flow: Ford-Fulkerson - cs.wisc.edu
    One common variant of maximum flow involves having multiple sources and/or sinks in the graph, rather than just one. This can be converted into the basic ...
  61. [61]
    [PDF] Network Flow Problems The Ford-Fulkerson Method The Ford ...
    and sinks n A maximum-flow problem has several sources and sinks n Example: A company has a set of m factories and n warehouse. n How to determine a maximum ...<|separator|>
  62. [62]
    An efficient distributed max-flow algorithm for Wireless Sensor ...
    The max-flow problem (MFP) is a well-known combinatorial optimization problem in which we wish to send as much flow as possible in a capacitated network between ...
  63. [63]
    [PDF] Distributed Multi-Commodity Network Flow Algorithm for Energy ...
    This work proposes a distributed algorithm for energy optimal routing in a wireless sensor network. The routing problem is described as a mathematical problem ...
  64. [64]
    [PDF] OPTIMAL FLOWS IN NETWORKS WITH MULTIPLE SOURCES AND ...
    An optimal flow in a multiple source, multiple sink network is both sink-optimal and source-optimal, achieved by lexicographically maximizing individual flows.
  65. [65]
    [PDF] Dinitz' Algorithm: The Original Version and Even's ... - ResearchGate
    This paper is devoted to the max-flow algorithm of the author: to its orig- inal version, which turned out to be unknown to non-Russian readers, and to its mod-.
  66. [66]
    [PDF] 1 Consequences of the max-flow min-cut theorem
    Menger's Theorem equates the maximum number of such paths with the minimum number of edges or vertices that must be deleted from G in order to separate s from ...
  67. [67]
    [PDF] ON THE COMPLEXITY OF TIMETABLE AND - ResearchGate
    The multicommodity integral flow problem is shown to be NP-complete even if the number of commodities is two. This is true both in the directed and undirected ...
  68. [68]
    [PDF] Faster and Simpler Algorithms for Multicommodity Flow and other ...
    log1+ε L then there is an integral flow which is a. (1−ε)−2-approximation to the maximum multicommodity flow. For maximum concurrent flow we use the algorithm ...
  69. [69]
    An Almost-Linear-Time Algorithm for Approximate Max Flow ... - arXiv
    Apr 8, 2013 · In this paper, we introduce a new framework for approximately solving flow problems in capacitated, undirected graphs and apply it to provide asymptotically ...
  70. [70]
    Constrained Maximum Flow in Stochastic Networks - ResearchGate
    Jul 31, 2014 · In this paper, we study constrained maximum flow problems in stochastic networks, where the delay and bandwidth of links are assumed to follow a ...