【问题标题】:Calculate maximum flow efficiently after adding a new edge in Ford Fulkerson algorithm?在福特富尔克森算法中添加新边后有效计算最大流量?
【发布时间】:2016-12-08 15:57:54
【问题描述】:

假设 G 的最大流量已经使用 Ford-Fulkerson 计算,并且具有单位容量的新边被添加到 E。如何有效地更新最大流量。 (t 不是必须更新的流的值,而是流本身。

【问题讨论】:

  • 尝试找到使用新边的增广路径。您将需要线性时间来完成它(一个 DFS)
  • 您能否向我们展示到目前为止编写的代码,用于在不考虑添加的新边的情况下计算初始图的最大流量??
  • 到目前为止我还没有编写任何代码,只是希望在理论上讲清楚。但我使用的是福特富尔克森算法....
  • 虽然 Niklas B. 的评论基本上是解决方案,但也可以尝试在计算中保持最小切割。如果添加的边缘不在切口中,则最大流量没有改变。
  • 好吧...我明白了。您能否在以下链接中解释“撤消”一词的含义,stackoverflow.com/questions/27455970/…

标签: algorithm ford-fulkerson


【解决方案1】:

G' 为将新边 e 添加到 G 的图。请注意,我们保留剩余边的容量和流量。

现在在 G' 中找到一个增广路径 p

如果 p 存在,则将 G' 中沿该路径的流更新 1。否则,流保持不变。

这给出了最终的流量值。这是正确的,因为如果 p 存在,那么它会通过 e。因此,沿p 的流更新正好是1。由于Folk-Fulkerson 算法以整数步增加流,因此更新后G' 中没有增广路径。

如果 p 不存在,则通过 mincut-maxflow 参数,这是最大流量,因为 mincut 为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 2015-02-11
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多