我有一个上下限流程图,我的任务是尽快找到任何可行的解决方案。我发现了用于最大/最小流量的许多算法和方法,等等(也很多时候都使用可行的解决方案作为起点),但是对于任何可行的解决方案都没有具体的规定。有没有专门针对它且快速的算法/方法?
答案 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。对于初始图的每个边, 转换之前具有初始旧下限的边缘,您就拥有了 初始图的每个边的初始流。
这个问题实际上比提供可行流量时使流量最大化要困难一些。