Edmonds–Karp算法

在計算機科學中,Edmonds-Karp算法是用於在O(V E2)時間內計算流網路中的最大流量的Ford-Fulkerson方法的實現。 該算法最初由Yefim Dinitz於1970年出版,並由Jack Edmonds和Richard Karp於1972年獨立出版。Dinic的算法包括將運行時間減少到O(V2 E)的其他技術。

算法

該算法與Ford-Fulkerson算法相同,只是定義了找到增廣路徑時的搜尋順序。 找到的路徑必須是具有可用容量的最短路徑。 這可以通過廣度優先搜尋找到,其中我們對每個邊緣套用1的權重。 通過顯示每個增強路徑可以在O(E)時間內找到O(V E2)的運行時間,每次E邊緣中的至少一個變得飽和(具有最大可能流量的邊緣), 從增強路逕到飽和邊緣到源的距離必須比上次飽和的時間長,並且長度最多為V.該算法的另一個特性是最短增強路徑的長度單調增加。 算法簡介中有一個可訪問的證明。

偽代碼

例子

圖1 圖1

給定七個節點的網路,源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。

相關詞條

相關搜尋

熱門詞條

聯絡我們