Algorithm 沿循环的最大流量

Algorithm 沿循环的最大流量,algorithm,graph,Algorithm,Graph,我有一个有向图,我想找到我可以沿着循环(循环)发送的最大流量。 标准的Ford Fulkerson方法是否可以使用增广路径(本例中为循环)或我是否需要一些特殊的东西? 没有源/汇,我只想沿着循环发送流 我想最大化的数量是总和(f(I,j)),其中f(I,j)是在常规最大流量约束下沿该边的所有边的流量(每条边都有一个非负的有限容量,每个顶点的流入量(v)=流出量(v)。您需要做一些比增加更复杂的事情。问题是,只要沿循环发送流,就可以插入或不插入向后的剩余弧。如果你这样做了,那么没有什么可以阻止你将

我有一个有向图,我想找到我可以沿着循环(循环)发送的最大流量。 标准的Ford Fulkerson方法是否可以使用增广路径(本例中为循环)或我是否需要一些特殊的东西? 没有源/汇,我只想沿着循环发送流


我想最大化的数量是总和(f(I,j)),其中f(I,j)是在常规最大流量约束下沿该边的所有边的流量(每条边都有一个非负的有限容量,每个顶点的流入量(v)=流出量(v)。

您需要做一些比增加更复杂的事情。问题是,只要沿循环发送流,就可以插入或不插入向后的剩余弧。如果你这样做了,那么没有什么可以阻止你将流发送回它的来源。如果你不这样做,那么你可以增加错误的周期。例如,在图中

c-->d
^   |
|   v
b-->e
^   |
|   v
a<--f
c-->d
^   |
|五
b-->e
^   |
|五
ab->e->f->a
并错过较长的周期
a->b->c->d->e->f->a

相反,你要做的是运行Bellman--Ford(或其他一些允许负长度的最短路径算法)来找到一个向前弧比向后弧多的循环,并使其饱和。(如果不存在这样的循环,那么就有一个最优解。)然后得到一个O(OPT poly(n))界,如Ford--Fulkerson,其中所有弧都有整数容量,OPT是最优目标值。您可以访问/network simplex上的文献进行优化


要检测向前弧多于向后弧的循环:将每个向前弧的长度设置为-1,将每个向后弧的长度设置为1。将每个顶点的距离标签初始化为0(模拟没有传入弧且每个顶点的弧长度为0的人工源的效果)。运行Bellman--Ford以确定是否存在负长度周期。

谢谢您的回答。请你给我举一个具体的例子/解释,详细介绍一下贝尔曼-福特方法。谢谢你的回答。你能给我举一个具体的例子/解释,详细说明贝尔曼-福特方法吗?另外,你能详细说明一下我如何在这里使用最小成本流方法吗?@Baron-Min成本流通常包括一个步骤,即取消昂贵的流程周期。本质上,你想做相反的事情(在以前不存在的地方创建正向循环)。好吧,那么你是在建议我的问题可以通过将其转化为最小成本问题,通过向边缘分配适当的成本来解决吗?酷,在我接受之前,还有一件事:这是最小成本还是最小成本最大流量问题?这两者之间有区别吗?有什么区别?