最大流量中的残差图


14

我读最大流问题在这里。我无法理解残差图的直觉。为什么在计算流量时考虑后边缘?

谁能帮助我理解残差图的概念?

算法在无向图中如何变化?

Answers:


28

讲座中,很好地展示了最大流量问题中残差图的直觉。说明如下。

假设我们正在尝试解决以下网络的最大流量问题(每个标签表示通过边缘推送的流量和该边缘的容量):f e / c e f e e c eGfe/cefeece

运行示例

一种可能的贪婪方法如下:

  1. 选择从源顶点到宿顶点的任意增广路径,使得); 也就是说,所有边都具有可用容量。小号ëPst Pe(ePfe<ceP
  2. 通过此路径推动最大可能的流量。的值由确定瓶颈的 ; 即可用容量最小的边缘。形式上。ΔΔPΔ=mineP(cefe)
  3. 转到步骤1,直到不存在扩展路径。

也就是说,找到具有可用容量的路径,沿着该路径发送流,然后重复。

在,上述启发式的一种可能的执行顺序是找到三个扩充路径,和。这些路径分别推动2、2和1个流量单位,总流量为5:P 1 P 2 P 3GP1P2P3

可能执行贪婪方法以实现最大流量

按此顺序选择路径可得出最佳解决方案。但是,如果我们首先选择(即在和之前)会发生什么?P 1 P 2P3P1P2

封锁路径

我们得到了所谓的阻塞流:不再存在增强路径。在这种情况下,总流量为3,这不是最佳的。可以通过允许撤消操作(即,通过反向发送流,撤消先前迭代的工作)来解决此问题:只需将2个流单位从顶点向后推到顶点如下所示:vwv

向后流动

对这些允许的撤消操作进行编码是残差图的主要目标。

甲剩余图网络的具有相同的顶点集作为,并包括,对于每个边缘:G ^ g ^ ë = Û v ģRGGe=(u,v)G

  • 如果,则前边缘的容量为。c e - f e c e - f e > 0e=(u,v)cefecefe>0

  • 如果,则后沿具有容量。f e f e > 0e=(v,u)fefe>0

例如,考虑当启发式算法首先选择(即,当它获得阻塞流时),在贪婪启发式算法的第一次迭代之后获得的残差图:P 3RP3

残差图

请注意,将2个流单位从推到的撤消操作在被编码为从到的正向(增强)路径:v 小号řwvstR

残差图中的增强路径

一般来说:

当在残差图选择一个增广路径: - [RPR

  • 中与的前向边缘相对应的每个边缘都通过使用具有可用容量的边缘来增加流量。 G ^PG
  • 在每一个边缘对应于一个边缘倒退在撤销流这是在过去的前向方向上被推动。 G ^PG

这是Ford–Fulkerson方法背后的主要思想。

Ford-Fulkerson方法的执行方式与上述贪婪方法完全相同,但是仅当残差图中没有更多的增广路径时才停止(原始网络中没有)。该方法是正确的(即,它总是计算最大流量),因为残差图建立了以下最佳条件

给定网络,如果残差图中没有路径,则流量在最大。f G s - tGfGst


是否有一个示例,如Edmonds-Karp算法中所述,以最短长度的顺序添加路径?在您的反例中,第一个路径是长度3,而如果我们正在做Edmonds-Karp,则可以找到一个较短的路径(即2),并且将首先添加。
罗伊'18

您可以简单地使原始图中的所有路径的长度均为。为此,将顶点分为两个顶点和。然后,将分为和。还添加容量为两个边和。最初从到的边现在将从到。如果最初选择包含边的路径,则可以获得相同类型的阻塞流。3 v v 1 v 2 w w 1 w 2v 1v 2w 1w 22 v w v 1 w 2v 1w 2st3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)
Mario Cervera '18

您的示例很有道理。我们总是可以将图形扩展到切口的其他边缘上,以使所讨论的边缘位于最短路径之一上。
罗伊

3

残留网络背后的直觉是,它允许我们“取消”已经分配的流,即,如果我们已经从分配了2个单位的流量到,那么从传递到 1个单位流量被解释为取消一个单位从到的原始流量的。B B A A BABBAAB

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.