【问题标题】:Update Maximum Flow After Adding an Edge添加边后更新最大流量
【发布时间】:2015-02-11 21:24:15
【问题描述】:

假设我们有一个网络流量,并且使用 Edmond-Karp 算法,我们已经有了网络上的最大流量。现在,如果我们向网络添加任意边(具有一定容量),那么更新最大流量的最佳方法是什么?我正在考虑更新关于新边缘的残差网络并再次寻找增强路径,直到我们找到新的最大流量,但我不确定它是否有效或者它是否是最好的方法!

【问题讨论】:

    标签: algorithm graph max-flow ford-fulkerson edmonds-karp


    【解决方案1】:

    做完 maxflow 之后,你就知道每条边流的内容量了。

    因此,当边缘成本发生变化时,您可以执行以下操作:

    1. 假设,该边流过的内容是w
    2. 现在从该边缘执行forward dfsbackward dfs,并从它链接的边缘撤消全部w 内容。

    这里每条边用x/y表示,其中y表示边容量,x表示它流过的内容。

    现在您想将边缘 4->3 的成本从 2 更改为 3

    您所要做的就是从4->3 边缘执行forward and backward dfs 并从这些边缘撤消2 权重,因为4->3 流动w=2 内容。

    流程如下:

    现在你差不多完成了:)

    1. 将边 4->3 的成本从 2 更改为 3,然后再次尝试寻找增广路径 :)

    如果你觉得难以理解或者我错了,请告诉我:)

    编辑:

    1. 如果新边缘成本大于当前成本,则无需取消权重。您可以尝试找到一条改变边缘容量的增广路径。

    2. 但是如果容量减少了,你就必须减轻重量并尝试寻找增加路径。

    3. 如果添加了新边,您可以只添加边并尝试找到可用的增广路径。而已。

    【讨论】:

    • 非常感谢。我还有两个问题。首先,为什么我们需要撤销权重 2 呢?为什么我们不能只改变容量,并检查增广路径?我在想,如果它是最小切割中的边缘之一,那么我们可能能够通过它发送更多流量,否则无法发送更多流量,因为最小切割限制了流量!其次,您的回答提到了容量的变化。如果我添加一个新边缘怎么办?例如添加容量为 4 的边 4->6
    • 好问题。好的,考虑一下新边成本大于当前成本的情况,在我们的示例中,边 4->3 从 2 变为 3。在这种情况下,您不必取消权重。您可以尝试找到一条将边缘容量更改为 3 的增广路径。但是如果容量减少了怎么办?即 4->3 容量减少到 0。那么我认为以前的技术将不起作用,因此您必须取消权重并尝试找到增加路径。对于第二个问题,您可以只添加边缘并尝试找到一条增广路径(如果有)。而已。因为在这里你得到了一条新路径。
    • 好的,我知道了。再问一个问题!当从源到边缘的起点有多条路径发生变化或从改变的边缘的末端节点到汇点的多条路径时。我们如何决定撤消哪条路径的流动?!!!例如,这里是从 3 到 7 的多条路径。因此有不同的方法可以撤消流程。我应该如何选择撤消的路径?
    • 您可以选择任何路径。主要任务是解除重量。正如你所知道的,水可以流到它可以找到一个小洞的地方 :) 所以关于 maxflow 不会有问题 :) 你只需要打洞......
    【解决方案2】:

    实际上添加一条新边并不是很困难 - 在添加边之前,您有边的流量/容量,然后添加边及其逆。然后运行用于查找增广路径的算法,直到找到非零流,仅此而已。已经找到了大部分最大流量,因此(理论上)应该不会太慢。我不知道您使用的是哪种最大流量算法,所以我不能更具体,但是在添加新边之后,您可能会违反算法的属性,因此您会以次优方式找到最大流量。您仍然已经处理了大部分图表,所以这应该不是太大的问题。

    无论您用于最大流量的原始算法是什么,我都建议您使用 Ford-Fulkerson 算法来完成任务。我认为在已经发现大部分最大流量的情况下它会表现良好。

    【讨论】:

    • 实际上,我使用的是 Edmond-Karp 算法,它是 Ford-Fulkerson 的一种变体。唯一的区别是,在寻找增广路径的每一步中,它都使用 BFS,因此它的边数最少。它可以证明整数容量我们可以在多项式时间内完成这项工作!
    • 好的。那应该会做得更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2014-05-27
    • 1970-01-01
    • 2017-07-11
    • 2013-11-22
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多