網路流 理論詳解

2021-07-14 22:44:31 字數 1646 閱讀 3235



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

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

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

這裡需要注意容量和流量的區別。其中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鏈結

網路流詳解(1)

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

網路流初步詳解2

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

網路程式設計理論

tcp ip協議族 是很多協議的總稱 四層協議 2.傳輸層 tcp udp 3.網路層 ip 4.介面層 mac 應用層 tcp ip mac 電子裝置在網路上的唯一標識 255.255.255.255 1111 1111.1111 1111.1111 1111.1111 1111 32位 4g 2...