網路流詳解(1)

2021-08-04 22:40:58 字數 1646 閱讀 9321



今天抽空看了看網路流最大流問題。了解了下基本概念和求解流程。這裡簡單總結下。

本圖示最大流的乙個例項。由此,可以引出最大流的一些基本的定義和概念

可以這樣看,圖就是一種管道,管道有最大通過流量的限制,圖中邊的權值就是所謂的「容量」。同時,注意有唯一的源點和匯點。

這裡需要注意容量和流量的區別。其中f(u,v)的範圍需要額外注意,是 0<= f(u,v) <= c(u,v),不會出現所謂的負流量。下圖是對可行流的圖示

有了可行流,我們還需要求最大流

那麼如何求最大流呢。可以採用著名的ford fulkerson演算法

所以說,演算法的關鍵在於

1)何為增廣路徑,如何找出增廣路徑。

2)如何更新流量

說的直白些,所謂增廣路徑,就是找到這樣一條路徑,其流量不滿,未達到容量上限。

所有的可能的增廣路徑在一起便構成了殘留網路。

那麼,如何增廣呢。

其實,這裡的這個描述不太準確。下面我根據我的理解再解釋一下。

第一步,計算可增加流量

設某一增廣路徑上的節點為(a1,a2,a3,a4,....,an)

如果(u,v)是正向邊,則增加流量d = min

如果是逆向邊,則增加流量d = min

第二步,更新流量

如果(u,v)是正向邊,則 f(u,v) = f(u,v) + d

是逆向邊,則f(u,v) = f(u,v) - d

注意,如果是逆向邊,就是減法,當前管道從中減去部分流量,而且,伴隨著這部分減去的流量,必有另一部分管道的流量會增加。。而且,最後的總流量增加了d

結合上述演算法,可以詳細參閱下下列圖示

可以證明,可行流為最大流,當且僅當不存在新的增廣路徑。

總結一下最大流演算法

如何尋找增廣路徑,採用dfs和bfs的方法。然後在更新流量。

具體實現以後再給出。

源ppt鏈結

網路流 理論詳解

今天抽空看了看網路流最大流問題。了解了下基本概念和求解流程。這裡簡單總結下。本圖示最大流的乙個例項。由此,可以引出最大流的一些基本的定義和概念 可以這樣看,圖就是一種管道,管道有最大通過流量的限制,圖中邊的權值就是所謂的 容量 同時,注意有唯一的源點和匯點。這裡需要注意容量和流量的區別。其中f u,...

網路流初步詳解2

網路流初步詳解中大致談了一下最大流的一些演算法,其中dinic是非常重要的,補一句 最大流 最小割。本文包括 1.費用流的概念及基本性質 2.edmonds karp增廣路演算法求費用流 3.一些關於費用流的技巧 4.關於費用流的刷題指南 假設您已經理解了dinic演算法和ek演算法二者之一。對於我...

網路流學習日記 1

網路流,作為hn省選必考題型,有著十分大的難度,而從現在開始,我就要學習網路流了,從今天開始,我將寫下網路流日記。day1 網路流有著幾個基本數值 流量,容量,原點,匯點等。我們不難發現,網路上的每乙個邊都得滿足 設f x,y 表示流量,c x,y 表示容量,x,y表示從x到y的邊,s表示總流量,即...