具有下限的网络中的最小流量 - 我做错了什么?

时间:2015-03-25 21:42:05

标签: algorithm graph max-flow lower-bound

我想解决的问题如下:

给定有向图,找到“覆盖”整个图形的最小路径数。多条路径可能经过相同的顶点,但路径的并集应该都是它们的全部。

对于给定的样本图(见图),结果应为2(1-> 2-> 4,并且1-> 2-> 3足够)。

通过分割顶点并为连接顶点到外顶点的每条边分配下限1,并将源链接到每个顶点和每个外顶点到接收器(它们不是如图所示,因为它会使整个事情变得混乱),现在的问题是如何在图中找到最小流量,并使用下限约束。

Sample graph

但是,我已经读过为了解决这个问题,我必须找到一个可行的流程,然后按如下方式分配容量:C(e)= F(e) - L(e)。但是,通过为每个Source-vertex边缘,vertex-Sink边缘和In-Out边缘分配流量1,可行流程是正确的,并且总流量等于顶点数量。但是通过分配新的容量,输入边缘(标记为蓝色)的容量为0(它们的下限为1,在我们选择可行流量时,它们的流量为1),并且没有流动是可能的。

图。 2:我如何选择“可行流程” Image 2

然而,从图中你可以清楚地看到你可以指示一个2流,它足以满足每个“顶点边缘”的下限。

我是否理解最小流量算法错误?错误在哪里?!

1 个答案:

答案 0 :(得分:0)

一旦你有了可行的流量,你需要通过将流从水槽返回到源来开始“修剪”它,受限于下限和容量限制(实际上只是剩余容量)。为此,在向前方向使用较低的两个黑色边缘,因为它们尚未在它们上方流动。涉及源和接收器的边缘反过来使用,因为我们正在撤消已经存在的流量。如果你从剩余容量方面开始考虑所有这些,那就更有意义了。