Why are back edges required in the Ford-Fulkerson algorithm?
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
The Ford-Fulkerson algorithm is a classic method for computing the maximum flow in a flow network, which is a directed graph where each edge has a capacity and a flow that must not exceed this capacity. This algorithm is a foundational concept in network flow theory with several practical applications, including network routing, supply chain optimization, and task scheduling. A crucial element in the Ford-Fulkerson algorithm's efficiency and correctness is the use of back edges. Here we discuss why back edges are necessary and how they function within the algorithm.
Understanding Ford-Fulkerson and Flow Networks
Flow Network Basics
A flow network is defined as a directed graph with a source node , a sink node , and capacities $ c(u, v) $ assigned to each edge . The goal is to determine the maximum amount of flow that can travel from to without violating the capacity constraints.
Ford-Fulkerson Algorithm
The Ford-Fulkerson algorithm operates by repeatedly searching for augmenting paths — paths from the source to the sink where the additional flow can be sent without exceeding the capacities. The algorithm continues to augment flow along these paths until no more such paths are available, at which point the flow becomes maximal.
Role of Back Edges
Importance of Back Edges
Back edges are critical to the Ford-Fulkerson algorithm because they allow the algorithm to:
- Reverse flow: If an initial allocation of flow turns out to be suboptimal, back edges enable the algorithm to reduce flow along a part of the path, effectively 'taking back' flow that was previously added.
- Create new augmenting paths: Through back edges, the algorithm can uncover new pathways for flow augmentation that would be otherwise impossible under strictly forward-only edges.
- Facilitate residual networks: Back edges are inherent to the concept of a residual network, in which both forward and backward routing of flow is possible for calculating residual capacities.
Technical Explanation
Consider an edge in the flow network with a current flow of and a capacity of $ c(u, v) $. The residual capacity of this edge is given by:
Additionally, a back edge is introduced in the residual network having a residual capacity:
This back edge allows the algorithm to decrement the flow on edge if necessary. During the search for augmenting paths, the algorithm considers both forward edges (with positive residual capacity) and back edges to adjust flow values dynamically.
Example With Augmentation and Backtracking
Let's illustrate the necessity of back edges with a simple example:
- Initial augmentation: Suppose we find an augmenting path from and push a flow of 5 units along this path.
- Back edge utilization: In a subsequent iteration, we find a new path, , which suggests a higher potential flow.
- By utilizing the back edge , we can reduce the flow between
$ v$ and $u $in the original path and increase the overall flow through the network.
Summary Table
Below is a table summarizing key factors related to the back edges in the Ford-Fulkerson algorithm.
| Aspect | Explanation |
| Flow Reversal | Back edges allow reversal of previously augmented flow, enabling correction of suboptimal paths. |
| New Path Creation | Introduces alternative paths for augmenting flow, increasing overall flow capacity. |
| Residual Network | Aids in the creation of residual networks, where back edges carry residual flow, crucial for establishing maximum flow in complex networks. |
| Algorithmic Basis | Back edges are intrinsic to the residual capacity concept, vital for dynamic adjustment of flows in the algorithm. |
Additional Considerations
Implementation Nuances
- Breadth-First Search (BFS) is often used in practice with Ford-Fulkerson in the form of the Edmonds-Karp algorithm, which systematically finds augmenting paths with back edges ensuring no paths are blocked.
- Edge Weight Considerations: While Ford-Fulkerson is non-polynomial for arbitrary capacities, incorporating concepts like back edges is essential for more efficient adaptations like Dinic's algorithm.
Application
Back edges have applications in various fields, especially when dealing with dynamic changes and reversals in networks such as rerouting network traffic or dynamically balancing loads.
In summary, back edges are an essential component of the Ford-Fulkerson algorithm, ensuring that the network can continue to explore and optimize path flow configurations until the maximum possible flow is achieved. Their role in residual networks and flow reversibility makes them indispensable for the correctness and optimal performance of the algorithm.
Related reading
- Why are Fibonacci numbers significant in computer science?
- Why are hash table expansions usually done by doubling the size?
- Why are heaps in c implemented as algorithms instead of containers?
- Why Arrays.sort is quicksort algorithm, why not another sort algorithm?
- Why are Haskell Maps implemented as balanced binary trees instead of traditional hashtables?
- Why are Python's arrays slow?
- Why best case for insertion sort is On not On2?
- Why big-Oh is not always a worst case analysis of an algorithm?

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.