每个最小流量图切割中的节点集

时间:2014-11-02 05:20:47

标签: algorithm networking flow

我目前正在通过练习来研究网络流量算法,而且我认为有必要解决一个问题,以解决这样的问题。

问题:如何计算属于每个最小流量图切割的节点集?

直观地说,如果使用Ford-Fulkerson并选择增强路径以便具有最小数量的边缘,这应该给我们一个最小基数的切割集,但这些节点必须在每个最低限度?

如果是这样,我似乎无法证明这一点。如果没有,我没有任何真实的想法。也许找到一种在残差图中交换边的机制?

请帮忙!

1 个答案:

答案 0 :(得分:0)

我相信我已经找到了合适的答案:

声明:可以位于(源端)最小割集中的每个节点必须在max-flow返回的流残留图Gf中是源可达的(即Ford-Fulkerson)。

证明:假设没有。然后,存在一些u,使得Fg中没有s-u路径并且在一些源侧最小割集S'中。由于F-F返回s可到达的节点集合作为其最小割集(例如,通过BFS),因此S'由F-F返回 。这意味着你在T(最小切割的下沉侧)。

我们现在表明,在保留min-cut属性的同时,没有办法将S转换为S'。假设它是可能的。然后,任何能够进行转换的算法都需要能够在某些残差图中识别推送流从s到u的s-u路径。但请注意,这是不可能的。

考虑任何边缘(v,w),使得v在S中,w在T中。由于u不在S中,它必须是w不是u(即从S到u没有前沿,否则它已经在S)了。然后,必须通过添加从S到T的前沿来使s可以访问。但是,这是不可能的!仅可通过max-flow / min-cut属性在反向边上添加流量。然后证明了这一说法。

为了解决上面发布的问题,我们只计算可以在源端最小割集中的所有节点的集合(调用此集合A),然后反转边缘并计算可以位于宿侧min-cut集合中的所有节点的集合(称为B),计算交集(调用此C),然后计算Answer = A-C。该算法与FF相同,即O(| V | ^ 3)。

如果您发现任何错误,请告诉我们!很抱歉回答我自己的问题!