Answers:
在本讲座中,很好地展示了最大流量问题中残差图的直觉。说明如下。
假设我们正在尝试解决以下网络的最大流量问题(每个标签表示通过边缘推送的流量和该边缘的容量):f e / c e f e e c e
一种可能的贪婪方法如下:
也就是说,找到具有可用容量的路径,沿着该路径发送流,然后重复。
在,上述启发式的一种可能的执行顺序是找到三个扩充路径,和。这些路径分别推动2、2和1个流量单位,总流量为5:P 1 P 2 P 3
按此顺序选择路径可得出最佳解决方案。但是,如果我们首先选择(即在和之前)会发生什么?P 1 P 2
我们得到了所谓的阻塞流:不再存在增强路径。在这种情况下,总流量为3,这不是最佳的。可以通过允许撤消操作(即,通过反向发送流,撤消先前迭代的工作)来解决此问题:只需将2个流单位从顶点向后推到顶点如下所示:v
对这些允许的撤消操作进行编码是残差图的主要目标。
甲剩余图网络的具有相同的顶点集作为,并包括,对于每个边缘:G ^ g ^ ë = (Û ,v )∈ ģ
如果,则前边缘的容量为。c e - f e c e - f e > 0
如果,则后沿具有容量。f e f e > 0
例如,考虑当启发式算法首先选择(即,当它获得阻塞流时),在贪婪启发式算法的第一次迭代之后获得的残差图:P 3
请注意,将2个流单位从推到的撤消操作在被编码为从到的正向(增强)路径:v 小号吨ř
一般来说:
当在残差图选择一个增广路径: - [R
- 中与的前向边缘相对应的每个边缘都通过使用具有可用容量的边缘来增加流量。 G ^
- 在每一个边缘对应于一个边缘倒退在撤销流这是在过去的前向方向上被推动。 G ^
这是Ford–Fulkerson方法背后的主要思想。
Ford-Fulkerson方法的执行方式与上述贪婪方法完全相同,但是仅当残差图中没有更多的增广路径时才停止(原始网络中没有)。该方法是正确的(即,它总是计算最大流量),因为残差图建立了以下最佳条件:
给定网络,如果残差图中没有路径,则流量在最大。f G s - t
残留网络背后的直觉是,它允许我们“取消”已经分配的流,即,如果我们已经从分配了2个单位的流量到,那么从传递到 1个单位流量被解释为取消一个单位从到的原始流量的。B B A A B