算法
該算法與Ford-Fulkerson算法相同,只是定義了找到增廣路徑時的搜尋順序。 找到的路徑必須是具有可用容量的最短路徑。 這可以通過廣度優先搜尋找到,其中我們對每個邊緣套用1的權重。 通過顯示每個增強路徑可以在O(E)時間內找到O(V E2)的運行時間,每次E邊緣中的至少一個變得飽和(具有最大可能流量的邊緣), 從增強路逕到飽和邊緣到源的距離必須比上次飽和的時間長,並且長度最多為V.該算法的另一個特性是最短增強路徑的長度單調增加。 算法簡介中有一個可訪問的證明。
偽代碼
例子
給定七個節點的網路,源A,接收器G和容量,如圖1
在寫在邊上的f / c對中,f是電流,c是容量。 從u到v的剩餘容量是c f(u,v)= c(u,v) - f(u,v),總容量減去已經使用的流量。 如果從u到v的淨流量為負,則有助於剩餘容量 。
注意算法(紅色)找到的增強路徑的長度從未減少。 找到的路徑是最短的。 找到的流量等於分隔源和匯的圖中最小切割的容量。 此圖中只有一個最小割,將節點劃分為集合{A,B,C,E}和{D,F,G},具有容量。
c(A,D)+ c(C,D)+ c(E,G)= 3 + 1 + 1 = 5。