【问题标题】:Ford-Fulkerson implementation javaFord-Fulkerson 实现 java
【发布时间】:2016-04-14 07:28:26
【问题描述】:

我正在尝试学习在 java 中实现 Ford-Fulkersons 算法,并在互联网上找到了一些帮助,但我卡在了这个 sn-p 代码

        // update residual capacities of the edges and
        // reverse edges along the path
        for (v=t; v != s; v=parent[v])
        {
            u = parent[v];
            rGraph[u][v] -= path_flow;
            rGraph[v][u] += path_flow;
        }

感谢评论,我有点理解它的工作原理,但不完全确定为什么需要它。为什么需要减法?

来源:http://www.geeksforgeeks.org/ford-fulkerson-algorithm-for-maximum-flow-problem/

【问题讨论】:

    标签: java shortest-path breadth-first-search ford-fulkerson edmonds-karp


    【解决方案1】:

    如果您可以沿边沿任一方向推动流动,则从 A 到 B 的净流量必须与从 B 到 A 的净流量在大小上相等且符号相反。

    就像在电路分析中一样:如果 5 安培的电流从 A 流向 B,那么 -5A 的电流从 B 流向 A。

    A     Resistor      B
    O-----[======]------O
      5A ->
    
    A     Resistor      B
    O-----[======]------O
                 <- -5A
    

    因此,通过将“更多”从 A 推送到 B,您必须减少从 B 推送到 A 的相应数量。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 如何从该算法中获得每条边的最终流量值?例如在搜索初始可行流时。那是原始图值减去每条边上的残差图值吗?方向会改变吗?谢谢。
      猜你喜欢
      • 1970-01-01
      • 2016-09-12
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2013-05-21
      • 2015-06-07
      相关资源
      最近更新 更多