最大流--Ford-Fulkerson algorithm

筆記素材來源國科大卜東波老師

最大流其中一種解法是將其寫成線性規化最後跑內點法便可以求出
在這裏插入圖片描述

先找初始解,然後進行改進,如果足夠好,停止改進
初始解:設爲零值流
在這裏插入圖片描述
那麼如何改進呢,先找一個零值流,然後循壞找一條可行路徑,並對其增流。
在這裏插入圖片描述
如左圖,便是上述算法的執行結果,但失敗地沒有找到最大流,如何解決?
在這裏插入圖片描述
如圖紅色線所示出現錯誤的原因是,紅色線不應該運(初始路徑p不合適),那麼就讓紅色的退回去1個單位流即可
爲了實現退貨這一功能,則要求加一相反的邊(如下所示)
在這裏插入圖片描述
加了新的退貨邊,形成新的圖就成爲了所謂的剩餘圖。
在這裏插入圖片描述
那麼什麼是剩餘圖呢?它表徵了原來的鐵路在安排一個流後還能運輸多少,即表徵剩餘運輸能力,其次表示在當前流中還可以退回去多少,即反向邊。

回到初始問題:如何通過剩餘圖來改善當前的流呢,答案是當前流加少構建的剩餘圖中的一條退貸邊的路徑,就得得改進後的新的流。如下圖所示。在這裏插入圖片描述
核 心思想是在剩餘圖中找到一條路,如以下僞代碼所示。
這便是Ford-fulkerson 算法
在這裏插入圖片描述
Demo 演示:
在這裏插入圖片描述
畫出零值流對應的剩餘圖
在這裏插入圖片描述
找剩餘圖中中的一條路
在這裏插入圖片描述
可以最大增加8個單位的流
在這裏插入圖片描述
畫出剩餘圖
在這裏插入圖片描述
在剩餘圖中找到新的路,新的路最多增加2個單位的流
在這裏插入圖片描述
新增兩個單位的流
在這裏插入圖片描述
求出增流後的剩餘圖
在這裏插入圖片描述在剩餘圖中找到新的增廣路,並增加最大6個單位的流
在這裏插入圖片描述

重複這樣的操作,直至剩餘圖中再也找不到所謂從源點到匯點的增廣路。
當然在新增流過程中,有可能操出原圖的容量,此時做退貨操作,如下圖演示。
在這裏插入圖片描述
可以新增1個單位的流,但是要在超出容量的路徑中反向退一個單位的流量
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章