在给定流网络和边缘e的情况下,描述一种确定e是否交叉最小切割的算法

时间:2013-06-01 17:17:39

标签: algorithm graph graph-algorithm flow max-flow

给定流量网络G =(V,E),其具有源s,接收器t和边缘e =(u,v),描述确定边缘e是否越过某个最小切割的算法(S,T) )。

我的第一个想法是计算最大流量f然后将e的容量减少一些>然后我们检查残差图是否有从s到t的路径(这意味着我们可以更多地增加流量f。)

现在,如果从s到t没有路径,我们可以确定e不会越过任何最小切割。

问题在于另一个方向。如果存在从s到t的路径,可能是因为我们创建了一个新的最小切割,在选择>时不小心。 0

那么如何选择足够小的> 0?

1 个答案:

答案 0 :(得分:1)

这是一个很酷的问题。

” 我的第一个想法是计算最大流量f,然后减少 e的容量... “

你的意思是增加吗?因为如果减少容量,流量就会减少..

任何方式:

运行algo以查找最大流量并假设流量为F.

检查e上流动的流量是否等于其容量,如果不是,则返回false。

这是否意味着如果它是平等的,那么e必须超过一些最小值?

假设e =(u,v):由于边缘规则,流进入你必须完全离开,

这意味着对于你将采取的每一次切割,都会有一些e crooses it and e =(x,y),

我们将有一些来自u-> v ....-> x或y-> .... u-> v。

的路径

如果我们将删除此边(e),流量将减少,这意味着我们无法以任何方式  返回到x之前的流量(或流动的流量,现在无法找到通往水槽的方式)。这意味着e在一定程度上被削减了。

如果流量没有变化,它只意味着我们找到另一种方式来返回我们“丢失”的流量,这意味着e不属于任何最小切割,因为它不会影响任何最小切割能力等于最大流量。

你对问题的直觉是好的,但是看到它不会起作用,因为e的增加/减少可能导致无法解决,因为有一个简单的例子,你改变了e的容量并且仍然没有来自s的路径在剩余的网络中,但仍然属于一些最小的削减。