详解最大流问题中的反向边设计

在学习Ford-Fulkerson算法的时候,一直不理解他为什么在画一个剩余网络,在网络上也没有找到很好的解释。以下我将用一个实例来讲解为什么要引入最大流问题中的反向边。

Ford-Fulkerson算法常用于解决图论中的最大流问题,但是我们在求解这一问题的时候时常无法找到流网络中的最优解。比如下面这种情形:
在这里插入图片描述
图1
此时用F-F方法计算出来的最大流为3+8=11,此时网络中已经无法再找到一个拓展通路了。但是,实际上这个网络的最大流的流网络应该如下:

图2
这个网络的实际最大流为4+8=12。我们之所以用F-F方法没能达到最优解,是因为我们刚开始采用了贪婪算法,一步步做下来的时候并没有考虑全局最优解。

但是,F-F算法中还有“反悔”的这一步操作,这一步就牵涉到反向边的设计了。我们知道对于每一个网络G均存在一个剩余网络(Residual network) GFG_F,在网络G中的一条边,都对应着剩余网络中的反向边。如图1的剩余网络为:
在这里插入图片描述
此时我们可以在剩余网络上找到如下的一个通路
在这里插入图片描述
在这条通路中的最大流为1,所以这个网络流模型的剩余网络变为:
在这里插入图片描述
至此,剩余网络中再也找不到一个流大于0的通路了。于是我们就得到了我们的最终答案.
在这里插入图片描述

发布了25 篇原创文章 · 获赞 3 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章