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

In summary, the conversation discusses the max-flow min-cut theorem in graph theory and the Ford and Fulkerson algorithm for finding a maximum flow in a network. The algorithm involves constructing a directed graph and determining the minimum flow needed for each branch. The conversation also explores the possibility of modifying the algorithm to find an arrow in the network that, when its capacity is increased, will increase the maximum flow. This idea is discussed and questioned, with concerns about maintaining the concept of "min-cut" in the algorithm.
  • #1
Pietjuh
76
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
  • #2
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.
 
  • #3


Yes, it is true that every branch in F will have the property that when its capacity is raised, the maximum flow will be higher. This is because in every iteration of the algorithm, we are choosing the minimum value between \Delta_1 and \Delta_2, which means that for a branch to be included in F, its capacity must have been the minimum value in that iteration. Therefore, raising its capacity will result in a higher maximum flow.

However, it is important to note that this does not guarantee that raising the capacity of any branch in F will result in the overall maximum flow being increased. It only guarantees that the maximum flow will be increased if the capacity of that particular branch is raised. There could be other branches in the network that also have this property but are not included in F.

In order to find the branch that, when its capacity is raised, will result in the overall maximum flow being increased, we would need to consider all possible combinations of raising the capacities of different branches and choose the one that results in the highest maximum flow. This would require a more complex algorithm and would not be as efficient as the original Ford and Fulkerson algorithm.

Overall, your idea is correct and could potentially be useful in certain cases. However, it may not always guarantee finding the branch that will result in the highest maximum flow.
 

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

1. What is maximum flow in network?

Maximum flow in network is a concept in graph theory and computer science that refers to finding the largest amount of flow that can be sent from a source node to a sink node in a network. It is often used to model problems in transportation, communication, and resource allocation.

2. How is maximum flow in network calculated?

The maximum flow in network is calculated using algorithms such as the Ford-Fulkerson algorithm or the Edmonds-Karp algorithm. These algorithms use a technique called augmenting path to find the maximum flow in the network.

3. What is the significance of maximum flow in network?

Maximum flow in network is a useful tool in solving real-world problems such as finding the most efficient way to transport goods or information between different points in a network. It can also be used in optimizing resource allocation and designing efficient computer networks.

4. What are the applications of maximum flow in network?

Maximum flow in network has various applications in different fields such as transportation, telecommunications, and computer science. It is used in designing efficient transportation systems, determining the maximum data transfer rate in computer networks, and optimizing resource allocation in supply chains.

5. What are some limitations of maximum flow in network?

One limitation of maximum flow in network is that it assumes a static network, meaning that the network does not change over time. This may not be the case in real-world scenarios where networks are dynamic and constantly changing. Additionally, maximum flow in network does not take into account other factors such as cost or time, which may be important considerations in some applications.

Similar threads

Back
Top