詳解最大流問題中的反向邊設計

在學習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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章