1

我试图解决的问题如下:

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

对于给定的示例图(见图),结果应该是 2(1->2->4,并且 1->2->3 就足够了)。

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

示例图

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

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

但是,从图中您可以清楚地看到,您可以引导一个满足每个“顶点边缘”下限的 2 流。

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

4

1 回答 1

0

一旦你有了可行的流量,你需要通过将流量从汇返回源来开始“修剪”它,受下限和容量限制(实际上只是剩余容量)。下方的两个黑色边缘用于正向,因为它们还没有流动。涉及源和汇的边缘被反向使用,因为我们正在撤消已经在它们上的流。如果您开始从剩余容量的角度考虑所有这些,那将更有意义。

于 2015-03-25T22:19:25.080 回答