福特福克森算法的一种变体

时间:2012-09-05 04:24:31

标签: algorithm graph-algorithm flow ford-fulkerson

  

假设我们重新定义剩余网络以禁止边缘s。认为FORD-FULKERSON程序仍能正确计算最大流量。

我在想,当我们增加一条路径时,反向边缘的剩余容量会增加,并且如果需要,可以用来减少该边缘的流量(但总体上会增加网络流量)。因此,如果我们不允许边缘进入s,则意味着我们不允许减少边缘中的流量s- xxs的相邻节点)。因此,当我们允许边进入s时,我们可以有一个像

这样的循环

s to x_1 leadsto y leadsto x_2 to s to x_3 leadsto t

但是如果我们再次禁止s进入{{1}}边缘,我们可以找到与循环不同的路径。以上都是直观的想法,但我想要一个正式的证据。

问题来自Cormen等人的算法导论

1 个答案:

答案 0 :(得分:0)

我认为你的直观想法已足以证明。让我们考虑两个图:在图G1中我们允许边进入s,而在图G2中我们不允许。

现在,假设Ford-Fulkerson算法在G1中发现了更大的流量,那么它在G2中发现了更大的流量。由于G2中的所有增广路径在G1中也是有效的,我们可以尽可能长时间地在两个图上使用相同的增广路径,然后获得在G1中存在增强路径的剩余网络的状态,但不是G2。

但是,正如您所指出的,任何在G1中有效的扩充路径在G2中也是有效的,前提是我们删除了在上次访问s之前的每个边缘。因此我们的假设是错误的,这种情况不可能存在 - Ford-Fulkerson将在G1和G2上产生相同的输出。