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

Algorithm 具有下限的网络中的最小流量-我做错了什么?,algorithm,graph,max-flow,lower-bound,Algorithm,Graph,Max Flow,Lower Bound,我试图解决的问题如下: 给定一个有向图,找出“覆盖”整个图的最小路径数。多条路径可以通过同一垂直,但路径的并集应该是所有路径 对于给定的示例图(见图),结果应该是2(1->2->4,1->2->3就足够了) 通过拆分顶点并为每个连接入顶点和出顶点的边指定1的下界,并将源链接到每个入顶点,将每个出顶点链接到汇(它们未显示在图中,因为这会使整个过程变得混乱),现在的问题是如何在图中找到最小流,具有下限约束 然而,我已经读到为了解决这个问题,我必须找到一个可行的流程,然后按如下方式分配容量:C(e)

我试图解决的问题如下:

给定一个有向图,找出“覆盖”整个图的最小路径数。多条路径可以通过同一垂直,但路径的并集应该是所有路径

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

通过拆分顶点并为每个连接入顶点和出顶点的边指定1的下界,并将源链接到每个入顶点,将每个出顶点链接到汇(它们未显示在图中,因为这会使整个过程变得混乱),现在的问题是如何在图中找到最小流,具有下限约束

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

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

但是,从图中可以明显看出,可以引导满足每个“顶点边”下限的2流


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

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

那么,当我反转边时,我只反转源边和汇边?因为,如果我反转整个图并计算从t到s的最大流,我仍然什么也得不到(考虑到in-out边的容量为0)。我到底要如何取消流程?您可以从图像中看到,您不能取消每个单独的流,因为它们没有连接,而计算一个流将打破下限constraint@lbicsi换言之,我为每一条前边缘分配容量C(e)-F(e),为每一条后边缘分配容量F(e)-L(e)?这就是答案吗?同样,如果一条边的两端都有容量,这不会违反算法,对吗?或者,当我找到可行流时,是否必须再次拆分后缘(即在两个相邻节点之间添加一个辅助节点),我是否应确保每条边上的流大于最小流问题的解决方案?因为如果不是,那么我看不出算法能为我提供好的流。