Fact-checked by Grok 2 weeks ago

Edmonds–Karp algorithm

The Edmonds–Karp algorithm is an algorithm for computing the maximum flow in a , representing a specific implementation of the Ford–Fulkerson method that selects augmenting paths using (BFS) to ensure the shortest path in terms of the number of edges is chosen at each iteration. This approach refines the original Ford–Fulkerson method by avoiding poor path selections that could lead to exponential running times, instead guaranteeing polynomial-time performance through a controlled number of augmentations. Developed by and Richard M. Karp in 1972, the algorithm builds on the labeling procedure of Ford–Fulkerson by employing a "first-labeled first-scanned" rule, which effectively implements BFS to identify the minimal-length augmenting paths in the residual graph. The number of augmentations is bounded by O(VE), where V is the number of vertices and E is the number of edges, since each augmentation increases the shortest-path distances in the residual graph, and BFS takes O(E) time per augmentation, yielding an overall of O(VE²). This polynomial bound holds regardless of edge capacities, making it suitable for networks with real-valued capacities. The algorithm's significance lies in its role as one of the first provably efficient max-flow algorithms, influencing subsequent developments like , and its practical simplicity due to the use of standard BFS, which makes it accessible for implementation in graph libraries and applications such as bipartite matching and transportation problems. While faster algorithms exist for dense graphs, Edmonds–Karp remains a foundational method taught in algorithms courses for demonstrating how heuristic choices in path selection can achieve theoretical efficiency guarantees.

Introduction

Overview

The Edmonds–Karp algorithm is a specific implementation of the Ford–Fulkerson method for computing the maximum flow in a . It operates by repeatedly finding and augmenting along shortest augmenting paths in the residual graph, measured by the minimum number of edges (arcs). This approach uses (BFS) to identify such paths efficiently. The primary purpose of the algorithm is to determine the maximum possible from a designated source to a in a capacitated, , while also providing a valid assignment that achieves this value. It addresses the , which models scenarios such as transportation networks, , and communication systems where capacities limit the throughput between nodes. A key innovation of the Edmonds–Karp algorithm is its selection of shortest augmenting paths, which ensures termination in time and avoids the potential slowdown of arbitrary path choices in the general Ford–Fulkerson . By bounding the number of augmentations to at most O(VE) for a with |V| vertices and E edges, it guarantees efficient computation even for networks with integral capacities. The algorithm takes as input a G = (V, E) with nonnegative capacity function c: V \times V \to \mathbb{R}_{\geq 0} and designated source s and sink t; it outputs the maximum flow value and a corresponding flow function f: V \times V \to \mathbb{R}_{\geq 0}.

History

The Edmonds–Karp algorithm was developed by and Richard M. Karp in 1972 as an improvement to existing network flow techniques. It was first described in their seminal paper "Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems," published in the Journal of the Association for Computing Machinery. This work introduced a specific implementation of the augmenting path method that ensured polynomial-time performance. The approach was independently discovered by Yefim Dinic in 1970. The algorithm addressed a key limitation in the foundational Ford–Fulkerson method, proposed by Lester R. Ford Jr. and Delbert R. Fulkerson in 1956, which could exhibit exponential runtime in the worst case due to poor choices of augmenting paths. By restricting the search for augmenting paths to , Edmonds and Karp provided a strongly polynomial-time algorithm for maximum flow computation, achieving a time bound of O(VE²), where V is the number of vertices and E is the number of edges. Edmonds' earlier contributions to , including his development of matroid intersection theory and polynomial-time algorithms for bipartite matching in the , laid important groundwork that influenced the algorithmic approaches to network flows. These advancements in theory and matching problems helped bridge abstract combinatorial structures with practical flow models. Owing to its conceptual simplicity and rigorous efficiency guarantees, the Edmonds–Karp algorithm quickly became a standard pedagogical example for illustrating polynomial-time solutions to the in academic settings.

Background

Flow Networks

A is modeled as a G = (V, E) with a source vertex s \in V, a sink vertex t \in V \setminus \{s\}, and a non-negative function c: V \times V \to \mathbb{R}_{\geq 0} defined for all pairs of vertices, where c(u,v) > 0 indicates the presence of a directed edge from u to v with maximum allowable equal to that capacity. This structure represents systems where commodities or resources from the source to the sink subject to edge-specific limits, such as transportation or communication networks. A valid flow f: V \times V \to \mathbb{R} in must satisfy three key properties: the capacity constraint, which requires |f(u,v)| \leq c(u,v) for all u, v \in V; skew symmetry, ensuring f(u,v) = -f(v,u) for all u, v \in V; and flow conservation, stating that \sum_{v \in V} f(u,v) = 0 for every u \in V \setminus \{s, t\}. The value of such a flow, denoted |f|, is the net outflow from the source, given by |f| = \sum_{v \in V} f(s,v), which equals the net inflow to the -\sum_{u \in V} f(t,u) by conservation. The seeks a valid flow f that maximizes this value |f|. This problem is addressed by the Ford–Fulkerson method, a foundational iterative approach for computing maximum flows. Given a flow f, the residual graph G_f = (V, E_f) captures the remaining flow potential, with residual capacities c_f(u,v) = c(u,v) - f(u,v) for edges where flow can still increase forward, and c_f(u,v) = c(u,v) + f(v,u) otherwise to account for possible reductions via backward edges when existing flow exceeds zero in the opposite direction. The edge set E_f includes all pairs (u,v) where c_f(u,v) > 0, thus incorporating both original edges with unused capacity and reverse edges to "undo" prior flow allocations. An augmenting path in G_f is defined as a from s to t where every has positive , allowing additional to be pushed through the network without violating constraints. Such paths are central to flow augmentation strategies, as their determines the maximum increasable value along that route.

Ford–Fulkerson Method

The Ford–Fulkerson method provides a foundational framework for solving the in networks by iteratively improving an initial feasible until optimality is reached. The algorithm initializes the to zero across all edges and proceeds by repeatedly searching for an augmenting in the residual graph—a that represents the remaining after accounting for the current . An augmenting is a from the source s to the sink t in this residual graph. Each time such a path is found, the algorithm augments the along it, increasing the total value by the maximum possible amount without violating capacity constraints. This process continues until no augmenting exists, at which point the current is maximum. Augmentation along an identified path P involves computing the bottleneck capacity, defined as the minimum residual capacity over all s in P: b(P) = \min_{e \in P} c_f(e), where c_f(e) denotes the residual capacity of e under the current f, given by c_f(e) = c(e) - f(e) for forward edges and c_f(e) = f(e) for backward edges in the residual graph. The is then updated by adding b(P) to the on each forward in P and subtracting b(P) from the on each corresponding backward , ensuring flow conservation and non-negativity are maintained. This step effectively "pushes" additional through the network while respecting capacities. The method's correctness relies on the , which establishes that the value of the maximum flow from s to t equals the of the minimum s- t cut—a of vertices into sets S (containing s) and T (containing t) where the cut is the sum of capacities of edges from S to T. Upon termination, the absence of an augmenting implies that the residual graph has no s- t , which corresponds to the existence of a saturating cut whose matches the current flow value, confirming optimality. A key limitation of the general Ford–Fulkerson method arises from its dependence on the choice of augmenting paths; selections via methods like can lead to exponentially many iterations in the worst case, especially when capacities are irrational numbers or large integers that result in tiny augmentations per step. This can cause the algorithm to fail to terminate in time, highlighting the need for specialized path-finding strategies to achieve efficiency.

Algorithm

Augmenting Paths

In the Edmonds–Karp algorithm, augmenting paths are identified within the residual graph G_f, which captures the remaining capacities after previous flow augmentations. The algorithm employs (BFS) to locate the shortest augmenting path from the source vertex s to the sink vertex t, measured by the minimum number of edges. This selection distinguishes the Edmonds–Karp method from more general implementations of the by guaranteeing paths of minimal length in each iteration. The BFS procedure operates by initializing a with the source s at level 0 and systematically exploring adjacent in a layer-by-layer manner. Vertices are assigned to levels L_i based on their shortest-path distance from s, traversing only edges (u, v) where the residual capacity c_f(u, v) > 0. During traversal, parent pointers are recorded for each newly visited vertex to enable path reconstruction; the search terminates upon reaching t, at which point the path is traced backward from t to s using these pointers. This process ensures the discovered path adheres strictly to the level structure, confirming its status as the shortest. The use of BFS is essential because it enforces the selection of shortest paths, preventing the algorithm from repeatedly using longer routes that could lead to inefficient progress. As a result, the lengths of successive augmenting paths are non-decreasing, which bounds the total number of such paths to O(VE) in a with V vertices and E edges. This property arises from the fact that once a path of a certain length is augmented, no shorter path can reappear in future graphs without violating the level-based exploration. Each iteration of the algorithm relies on BFS to uncover precisely one shortest augmenting path, without incorporating mechanisms like capacity scaling or multiple-path discovery heuristics. This focused approach maintains simplicity while achieving the desired efficiency guarantees.

Flow Updates

The Edmonds–Karp algorithm initializes the flow function f to zero for all edges in the , ensuring no initial flow traverses any edge.$$] Upon discovering an augmenting path P from the source s to the sink t in the graph via , the algorithm computes the capacity b, defined as the minimum along the edges in P: [ b = \min_{(u,v) \in P} c_f(u,v) where $c_f(u,v)$ denotes the residual capacity of edge $(u,v)$.$$\] This bottleneck value $b$ represents the maximum amount by which the flow can be increased along $P$ without violating capacity constraints.\[$$ Flow augmentation then proceeds by adjusting the flow values along $P$. For each consecutive pair of vertices $u$ and $v$ in $P$, the flow $f(u,v)$ is increased by $b$ if $(u,v)$ corresponds to a forward edge in the original network (i.e., where residual capacity stems from unused capacity), or the flow on the reverse original edge $f(v,u)$ is decreased by $b$ if $(u,v)$ is a backward edge in the residual graph (indicating a reversal of existing flow). If a backward edge did not previously exist in the flow representation, it is implicitly created with the updated flow value.$$\] Simultaneously, the residual capacities are updated to reflect these changes: for each $(u,v)$ in $P$, $c_f(u,v)$ decreases by $b$, and the reverse residual capacity $c_f(v,u)$ increases by $b$. These updates preserve flow conservation at intermediate vertices and ensure the residual graph accurately represents possible further augmentations.\[$$ The augmentation step is iterated by reapplying the path search in the modified residual graph. This loop continues until breadth-first search yields no path from $s$ to $t$ (i.e., $t$ becomes unreachable in the residual graph), signaling that the maximum flow has been achieved.\[\] ### Pseudocode The Edmonds–Karp algorithm is typically implemented by initializing the flow to zero and repeatedly applying [breadth-first search](/page/Breadth-first_search) (BFS) to find the shortest augmenting path in the residual graph until no such path exists from source $s$ to sink $t$. The algorithm assumes the flow network is represented using a capacity matrix $c$ for edge capacities and a flow matrix $f$ for current flows, with residual capacity $c_f(u,v) = c(u,v) - f(u,v)$ for forward edges and $c_f(u,v) = f(v,u)$ for reverse edges. ```pseudocode function EdmondsKarp(capacity c, source s, sink t): n = number of vertices f = array of size n x n, initialized to 0 // flow matrix max_flow = 0 while BFS(residual graph G_f, s, t, parent): b = infinity v = t while v != s: u = parent[v] b = min(b, c_f(u, v)) // residual capacity v = u // Augment flow along path max_flow += b v = t while v != s: u = parent[v] f[u][v] = f[u][v] + b f[v][u] = f[v][u] - b // Update reverse edge v = u return max_flow // the max flow value function BFS(G_f, s, t, parent): visited = array of size n, initialized to false queue Q Q.enqueue(s) visited[s] = true parent[s] = -1 while Q is not empty: u = Q.dequeue() for each adjacent v of u in G_f: // edges with c_f(u,v) > 0 if not visited[v]: Q.enqueue(v) parent[v] = u visited[v] = true if v == t: return true return false // no path found ``` In the BFS subroutine, a [queue](/page/Queue) processes vertices in layers from $s$, using a [parent](/page/Parent) array to reconstruct the [path](/page/Path) once $t$ is reached, ensuring the shortest path in terms of number of edges. The main loop computes the [bottleneck](/page/Bottleneck) $b$ as the minimum [residual](/page/Residual) [capacity](/page/Capacity) along the [path](/page/Path) and augments the [flow](/page/Flow) by $b$, updating both forward and reverse edges in the [flow](/page/Flow) [matrix](/page/Matrix) to reflect changes in the [residual](/page/Residual) [graph](/page/Graph).[](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2012/7c2927794e61bd70c14c07728fa54375_MIT6_046JS12_lec13.pdf) ## Analysis ### Time Complexity The Edmonds–Karp algorithm achieves a time complexity of $O(VE^2)$, where $V$ is the number of vertices and $E$ is the number of edges in the [flow network](/page/Flow_network). This bound arises from analyzing the number of augmenting path searches and the cost of each search. The algorithm performs a bounded number of augmentations, each found using [breadth-first search](/page/Breadth-first_search) (BFS) to identify the shortest augmenting path in terms of the number of edges. The number of augmentations is $O(VE)$. To derive this, observe that the shortest-path distances from [the source](/page/The_Source) to all vertices, with respect to residual capacities, are non-decreasing throughout the algorithm. These distances start at a minimum of 1 and can reach at most $V-1$, defining at most $O(V)$ distinct phases, each corresponding to a fixed shortest-path length $l$ to the sink. Within each phase, each augmentation saturates at least one edge in the level graph (the subgraph of edges that preserve the shortest-path distances), and such saturated edges cannot be reused in subsequent augmentations of the same phase without violating the distance non-decrease property. Since there are at most $E$ edges that can become saturated in this manner per phase, there are $O(E)$ augmentations per phase. Each augmentation requires a BFS traversal on the residual [graph](/page/Graph) to find the shortest augmenting path, which visits each [vertex](/page/Vertex) and examines each [edge](/page/Edge) at most once per level, taking $O(E)$ time. Therefore, the total [time complexity](/page/Time_complexity) is the product of $O(VE)$ augmentations and $O(E)$ time per augmentation, yielding $O(VE^2)$. The [space complexity](/page/Space_complexity) is $O(V + E)$, primarily for representing the residual [graph](/page/Graph) via adjacency lists and maintaining [parent](/page/Parent) pointers during BFS. This [polynomial](/page/Polynomial) bound contrasts with the general [Ford](/page/Ford)–Fulkerson method, which can require exponentially many augmentations in the worst case when capacities are chosen adversarially, leading to non-[polynomial](/page/Polynomial) time. ### Correctness The Edmonds–Karp algorithm ensures the validity of the computed [flow](/page/Flow) by maintaining key properties of network flows throughout its execution. Each augmentation along an augmenting path in the residual graph preserves flow conservation at all vertices except the source and [sink](/page/Sink), adheres to [capacity](/page/Capacity) constraints by not exceeding [edge](/page/Edge) capacities, and upholds skew symmetry, where the flow on an [edge](/page/Edge) equals the negative of the flow on its reverse [edge](/page/Edge).[](https://www.cs.yale.edu/homes/lans/readings/routing/ford-max_flow-1956.pdf) Furthermore, the [bottleneck](/page/Bottleneck) [capacity](/page/Capacity) $ b > 0 $ along the path guarantees that each augmentation strictly increases the total [flow](/page/Flow) value, preventing cycles or zero-increase updates.[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) The optimality of the final flow follows from the [max-flow min-cut theorem](/page/Max-flow_min-cut_theorem), which states that in any [flow network](/page/Flow_network), a flow is maximum [if and only if](/page/If_and_only_if) no augmenting path exists in its residual graph.[](https://www.cs.princeton.edu/courses/archive/spr04/cos226/lectures/maxflow.4up.pdf) In the Edmonds–Karp algorithm, [breadth-first search](/page/Breadth-first_search) (BFS) identifies all possible augmenting paths layer by layer; upon termination, the absence of such a path implies maximality. The corresponding [minimum cut](/page/Minimum_cut) is defined by the BFS layering in the final residual graph, where $ S $ is the set of vertices reachable from the source $ s $, and $ T = V \setminus S $; the capacity of this $ (S, T) $-cut equals the value of the computed flow.[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) The algorithm terminates after a finite number of augmentations because BFS selects shortest augmenting [paths](/page/Path) in terms of edge count, and the lengths of these [paths](/page/Path) non-decrease across phases, leading to at most $ O(VE) $ augmentations in a [graph](/page/Graph) with $ V $ vertices and $ E $ edges.[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) Under the standard assumption of non-negative real-valued capacities, the algorithm produces a valid maximum [flow](/page/Flow), though termination is guaranteed regardless of capacity values due to the shortest-path selection. If capacities are integers, the augmenting [path](/page/Path) method yields an integer-valued maximum [flow](/page/Flow).[](https://www.cs.yale.edu/homes/lans/readings/routing/ford-max_flow-1956.pdf) ## Example ### Step-by-Step Walkthrough Consider a simple [flow network](/page/Flow_network) with four vertices: the source $ s $, intermediate vertices $ a $ and $ b $, and the sink $ t $. The directed edges and their capacities are $ s \to a $: 4, $ s \to b $: 3, $ a \to b $: 2, $ a \to t $: 5, $ b \to t $: 4. Initially, all flows are zero, and the residual graph matches the capacity graph. In the first iteration, BFS searches for the shortest path from $ s $ to $ t $ in the residual graph and identifies $ s \to a \to t $ (length 2). The bottleneck capacity along this path is $ \min(4, 5) = 4 $. Augment the [flow](/page/Flow) by 4 along this path, yielding a total [flow](/page/Flow) of 4. Update the residual graph: forward residual $ s \to a = 0 $, $ a \to t = 1 $; add backward residuals $ a \to s = 4 $, $ t \to a = 4 $. The current flows are $ s \to a = 4 $, $ a \to t = 4 $; other edges remain at [flow](/page/Flow) 0. In the second iteration, BFS on the updated residual graph finds $ s \to b \to t $ (length 2). The bottleneck is $ \min(3, 4) = 3 $. Augment by 3, increasing total flow to 7. Update residuals: forward $ s \to b = 0 $, $ b \to t = 1 $; add backward $ b \to s = 3 $, $ t \to b = 3 $. Flows now: $ s \to b = 3 $, $ b \to t = 3 $; previous flows unchanged. BFS finds no further augmenting path to $ t $, so the algorithm terminates at maximum flow 7. The final flow assignment is $ s \to a = 4 $, $ a \to t = 4 $, $ s \to b = 3 $, $ b \to t = 3 $, $ a \to b = 0 $. The table below summarizes residual capacity changes: **Initial residual capacities:** | Edge | Residual Capacity | |--------|-------------------| | s → a | 4 | | s → b | 3 | | a → b | 2 | | a → t | 5 | | b → t | 4 | **After first augmentation (path s → a → t by 4):** | Edge | Residual Capacity | |--------|-------------------| | s → a | 0 | | a → s | 4 | | a → t | 1 | | t → a | 4 | | s → b | 3 | | a → b | 2 | | b → t | 4 | **After second augmentation (path s → b → t by 3):** | Edge | Residual Capacity | |--------|-------------------| | s → a | 0 | | a → s | 4 | | a → t | 1 | | t → a | 4 | | s → b | 0 | | b → s | 3 | | a → b | 2 | | b → t | 1 | | t → b | 3 | This execution highlights how BFS selects shortest augmenting paths, updates flows and residuals iteratively, and converges efficiently without utilizing the $ a \to b $ edge, as direct paths saturate the maximum flow. ## Extensions ### Applications The Edmonds–Karp algorithm finds wide application in modeling and solving optimization problems that can be reduced to maximum flow computations in [flow networks](/page/Flow_network). One prominent use is in bipartite matching, where the problem of finding the maximum number of pairs between two [disjoint sets](/page/Disjoint_sets) (such as workers and tasks) is formulated as a [flow](/page/Flow) network with unit capacities on matching edges; the maximum [flow](/page/Flow) value then equals the size of the maximum matching.[](http://www.cs.columbia.edu/~xichen/algorithm/files/MATCHING.pdf) This approach leverages the algorithm's ability to iteratively augment paths until no more can be found, ensuring an optimal assignment in polynomial time.[](https://webpages.charlotte.edu/rbunescu/courses/ou/cs4040/lecture21.pdf) In transportation problems, such as the Hitchcock transportation problem involving supplies at [source](/page/Source)s and demands at sinks, the algorithm models shipment routes as edges with capacities representing available resources; it computes the maximum feasible [flow](/page/Flow) to minimize costs or maximize throughput across [the network](/page/The_Network).[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) By assigning [source](/page/The_Source) and sink nodes appropriately and using BFS to identify augmenting paths, Edmonds–Karp efficiently determines balanced distributions, as demonstrated in early formulations requiring at most $O(n \log B)$ augmentations for $n$ sinks and maximum [flow](/page/Flow) $B$.[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) For [image segmentation](/page/Image_segmentation) in [computer vision](/page/Computer_vision), the algorithm supports min-cut formulations where pixels form nodes, affinities between neighboring pixels define edge capacities, and source/sink connections encode foreground/background preferences; the max-flow value identifies the optimal cut separating regions while preserving boundaries.[](https://courses.cs.washington.edu/courses/cse421/22wi/lecture/lecture-20.pdf) This graph-based method, with capacities tuned to regional properties, enables precise partitioning, as the min-cut capacity minimizes the segmentation energy.[](https://pub.ista.ac.at/~vnk/papers/BK-PAMI04.pdf) In [circuit design](/page/Circuit_design), particularly VLSI routing, Edmonds–Karp verifies maximum throughput by modeling wire channels as flow networks, with edge capacities reflecting routing constraints; the computed max flow assesses congestion and ensures viable paths for signal propagation without overflows.[](https://optimization-online.org/wp-content/uploads/2010/12/2852.pdf) This application aids in global routing phases, where the algorithm's path-finding helps bound the maximum edge congestion in dense layouts.[](https://snap.stanford.edu/class/cs224w-readings/leighton99mincut.pdf) Despite these uses, the algorithm's $O(VE^2)$ time complexity limits its practicality for very large graphs, where each BFS augmentation becomes costly; in such cases, faster alternatives like [Dinic's algorithm](/page/Dinic's_algorithm), with $O(V^2 E)$ worst-case but better practical performance, are preferred for scalability.[](https://web.eecs.umich.edu/~pettie/matching/Edmonds-Karp-network-flow.pdf) ### Variants The Edmonds–Karp algorithm, while polynomial-time, has been extended and improved through various variants that address its O(VE²) time complexity by exploiting network structures or using alternative augmentation strategies, making them suitable for larger or specialized instances. Dinic's algorithm, developed by Yefim A. Dinic in [1970](/page/1970), builds on [breadth-first search](/page/Breadth-first_search) by constructing a level graph of the residual network and then computing blocking flows within this graph using [depth-first search](/page/Depth-first_search) traversals. This phased approach allows multiple augmenting paths to be found and saturated in parallel per phase, resulting in a worst-case [time complexity](/page/Time_complexity) of O(V²E), which is asymptotically faster than Edmonds–Karp and often superior in practical performance on dense graphs. The push-relabel algorithm, introduced by Andrew V. Goldberg and Robert E. Tarjan in [1988](/page/1988), reframes the [maximum flow problem](/page/Maximum_flow_problem) using a preflow—a relaxation where nodes may have excess flow—and employs "push" and "relabel" operations to propagate excess toward the sink while maintaining height labels as distance estimates. The basic implementation runs in O(V³) time, while the version using dynamic trees achieves O(VE log(V²/E)); these bounds improve upon Edmonds–Karp for graphs with high connectivity, and Goldberg-Tarjan implementations are widely used in [high-performance computing](/page/High-performance_computing) due to their efficiency in practice. Capacity scaling variants adapt the Edmonds–Karp framework by processing edges in phases based on exponentially decreasing capacity thresholds, starting with large scales (e.g., powers of 2) and refining downward, which limits the number of augmentations to [O](/page/$O$)([E log](/page/Log) [U](/page/Integer)) where [U](/page/Integer) is the maximum capacity value. Proposed by [Ravindra K. Ahuja](/page/Ahuja) and James B. Orlin in [1989](/page/1989), this technique yields an overall [time complexity](/page/Time_complexity) of [O](/page/$O$)([VE log](/page/Log) [U](/page/Integer)), making it particularly effective for networks with large [integer](/page/Integer) capacities compared to the capacity-independent [O](/page/$O$)([VE](/page/Integer)[²](/page/Integer)) of the original. Edmonds–Karp remains ideal for educational purposes or small-to-medium graphs due to its simplicity and guaranteed [polynomial](/page/Polynomial) time, whereas variants like Dinic's or push-relabel are preferred for large-scale applications requiring faster execution.[](https://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/07NetworkFlowI.pdf)

References

  1. [1]
    [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.
  2. [2]
    [PDF] Introduction to Algorithms The Edmonds-Karp Max-Flow Algorithm ...
    The Edmonds-Karp algorithm refines the Ford-Fulkerson algorithm by always choosing the augmenting path with the smallest number of edges. In these notes, we ...
  3. [3]
    [PDF] Network Flow and Matching Edmonds-Karp Analysis
    Apr 3, 2015 · Recall: Edmonds-Karp is an efficient implementation of the Ford-Fulkerson method which selects shortest augmenting paths in the residual graph. ...
  4. [4]
    Theoretical Improvements in Algorithmic Efficiency for Network Flow ...
    EDMONDS, J., AND KARP, R.M. Theoretical improvements in algorithmic efficiency for network flow problems. Combinatorial Structures and Their Applications.
  5. [5]
    [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 ...
  6. [6]
    Edmonds, Jack - INFORMS.org
    In the 1960s, Edmonds developed a theory of matroid partition and intersection that still stands as one of the most profound and thorough explorations in the ...
  7. [7]
    [PDF] 1 Overview 2 Network flow recap
    Mar 1, 2017 · The first algorithm we study is due to Edmonds and Karp.1 In fact, Edmonds-Karp #1 is probably the most natural idea that one could think of.
  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] 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 ...
  10. [10]
    [PDF] Introduction to Algorithms The Edmonds-Karp Max-Flow Algorithm ...
    These lecture notes present the Edmonds-Karp maximum flow algorithm. We'll assume famil- iarity with the basic notions of residual graph, augmenting path, and ...
  11. [11]
    [PDF] Edmunds-Karp Algorithm: Choosing Good Augmenting Paths
    May 7, 2017 · Intuition: choosing path via breadth first search. □. Easy to implement. – may implement by coincidence! □. Finds augmenting path with ...
  12. [12]
    [PDF] Max Flow, Min Cut - cs.Princeton
    Max-flow min-cut theorem. (Ford-Fulkerson, 1956): In any network, the value of max flow equals capacity of min cut.
  13. [13]
    [PDF] Edmonds-Karp and Maximum Bipartite Matching - Columbia CS
    This gives us the following algorithm for Max Bipartite Matching: 1 construct G/ = (V/,E/) from G = (V,E). 2 use Ford-Fulkerson to get an integer-valued max ...
  14. [14]
    [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.
  15. [15]
    [PDF] Application of Max Flow - Washington
    Image Segmentation. Page 27. Image Segmentation. Given an image we want to separate ... Edmonds-Karp Algorithm. • Use a shortest augmenting path. (via Breadth ...<|separator|>
  16. [16]
    [PDF] An Experimental Comparison of Min-Cut/Max-Flow Algorithms for ...
    In this section we experimentally test min-cut/max-flow algorithms for three different appli- cations in computer vision: image restoration (Section 4.2), ...
  17. [17]
    [PDF] Global Routing in VLSI Design: Algorithms, Theory, and ...
    Dec 15, 2010 · Global routing in VLSI (very large scale integration) design is one of the most challenging discrete optimization problems in computational ...
  18. [18]
    [PDF] Multicommodity Max-Flow Min-Cut Theorems and Their Use in ...
    Applications of the flow results to path routing problems, network reconfiguration, communication in distributed networks, rapidly mixing Markov chains, and ...
  19. [19]
    Maximum flow - Ford-Fulkerson and Edmonds-Karp - CP-Algorithms
    Apr 22, 2025 · The Edmonds-Karp algorithm is an implementation of the Ford-Fulkerson method for computing a maximal flow in a flow network.