How Does the Ford-Fulkerson Algorithm Determine Maximum Flow in a Network?

  • Context: Graduate 
  • Thread starter Thread starter Pietjuh
  • Start date Start date
  • Tags Tags
    Flow Maximum Network
Click For Summary
SUMMARY

The Ford-Fulkerson algorithm effectively determines the maximum flow in a network by iteratively augmenting flow along paths from the source to the sink. It begins with zero flow and constructs a directed graph based on forward and backward arrows, adjusting flow until no more augmenting paths exist. The discussion explores the potential adaptation of this algorithm to identify edges whose capacity increases would also increase the maximum flow, while questioning the implications on the min-cut theorem. The proposed method involves tracking branches during iterations to assess their impact on flow capacity.

PREREQUISITES
  • Understanding of graph theory concepts, specifically the max-flow min-cut theorem.
  • Familiarity with the Ford-Fulkerson algorithm and its iterative process.
  • Knowledge of directed graphs and flow networks.
  • Basic comprehension of flow capacities and augmenting paths.
NEXT STEPS
  • Research the implementation of the Ford-Fulkerson algorithm in Python using libraries like NetworkX.
  • Explore the Edmonds-Karp algorithm as a specific implementation of Ford-Fulkerson for maximum flow.
  • Study the implications of modifying edge capacities on the min-cut theorem in flow networks.
  • Investigate advanced flow network algorithms, such as Dinic's algorithm, for performance comparisons.
USEFUL FOR

This discussion is beneficial for computer scientists, algorithm developers, and students studying network flow optimization and graph theory applications.

Pietjuh
Messages
75
Reaction score
0
Most of you have probably all heard of the max-flow min-cut theorem in graph theory. It says that in a network G=(V,A), the value of a maximum flow equals the capacity of a minimum cut. Then there is the Ford and Fulkerson algorithm to find a maximum flow in a network.

For the ones that don't really remember anymore how the algorithm works, i shall give a short summary:

  1. Start with zero flow (x=0)
  2. Construct a directed graph [tex]N_x=(V,A_x)[/tex] where [tex]A_x[/tex]
    is defined to be the union of two sets, [tex]B_1 = \{(i,j)\, |\, (i,j)\in A\, x_{ij} < b_ij\}[/tex] and [tex]B_2 = \{ (j,i)\, |\, (i,j)\in A\, x_{ij} > 0 \}[/tex], where [tex]x_{ij}[/tex] is the flow between vertex i and j, and [tex]b_{ij}[/tex] is the capacity of the branch between i and j. The arrows in the first set are called forward arrows, and in the second set backward arrows. Choose a path P from vertex 1 to n. If it doesn't exist, go the the last step.
  3. Determine [tex]\Delta = min(\Delta_1, \Delta_2)[/tex], [tex]\Delta_1 = min\{b_{ij} - x_{ij}\,|\, (i,j)\in B_1\}[/tex], [tex]\Delta_2 = min\{x_{ij}\,|\, (j,i) \in B_2\}[/tex]
  4. Add [tex]\Delta[/tex] to [tex]x_{ij}[/tex] if (i,j) is a forward arrow of P, and substract it if (j,i) is a backward arrow of P and do nothing if (i,j) or (j,i) isn't an arrow of P.
  5. Go to step 2
  6. x is a maximal flow

Now I am wondering if we could adapt this algorithm a bit, to also find an arrow in G, if it exists, which has the property that when the capacity of the arrow is raised, the value of the maximum flow is raised. Here's my idea. I hope it will be correct, or that you will have some better ideas how to solve it!

In every iteration there will be added an amount of [tex]\Delta[/tex] to the flow, which is the minimum of [tex]\Delta_1[/tex] and [tex]\Delta_2[/tex]. First determine if this minimum lies in [tex]\Delta_1[/tex] or in the other. If it lies in [tex]\Delta_2[/tex], changing the capacity will not have any effect. If it lies in [tex]\Delta_1[/tex] we can raise the capacity of that particulary branch (i,j) to the point that it not exceeds the minimum value of [tex]\Delta_2[/tex]. Now let's store this branch in a set called, say F. Isn't it true that when we finish with the algorithm, every branch in F has the property that when it's capacity is raised, the maximum flow will be higher?
 
Mathematics news on Phys.org
When you go and change the capacities like that, aren't you destroying your notion of "min-cut", so you'd have to go back and change things around? Maybe I'm not completely understanding the theorem.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
1
Views
2K