尽可能快地在图中找到任何可行的流

时间:2019-03-28 15:05:46

标签: python graph network-flow

我有一个上下限流程图,我的任务是尽快找到任何可行的解决方案。我发现了用于最大/最小流量的许多算法和方法,等等(也很多时候都使用可行的解决方案作为起点),但是对于任何可行的解决方案都没有具体的规定。有没有专门针对它且快速的算法/方法?

1 个答案:

答案 0 :(得分:0)

所以我终于有时间总结一下。我使用的解决方案是获取初始图形并在这些步骤中对其进行转换。

(权重按此顺序:下限,电流,上限)。

1。通过(0,0,infinity)的边将t连接到s。

2。到每个节点         初始图的余额值等于:(         传入边缘-传出边缘的下边界之和。

3。设置上限             每个边缘的边界(上限-下限)。设定下限             并且每个边的电流为0。

4。现在创建新的s(s')和新的t(t'),这将成为我们的新起点和终点(不要在图中已经删除s和t,它们就变成了     普通节点)。

5。从s到具有(0,     0,顶点平衡)范围。

6。从具有负平衡的每个顶点到(0,     0,abs(vertex.balance))。

7。运行Ford-Fulkerson(或您选择的其他最大流量算法)     在新图表上。

8。对于初始图的每个边,         转换之前具有初始旧下限的边缘,您就拥有了         初始图的每个边的初始流。

这个问题实际上比提供可行流量时使流量最大化要困难一些。