網路流 演算法理解

2021-09-22 22:50:08 字數 1292 閱讀 4482

交通網路中有**、車流、貨流,供水網路中有水流,金融網路中有金流。這些都涉及到了最大流問題

而最大流存在於網路流中

那麼問題來了,什麼是網路流?

有了這些,就構成了乙個基礎的網路流

有點繞。。。換個思路

自來水廠是源,家是匯

自來水廠和家之間有很多的管道用來輸送水。由於地形和地質的影響,管道規格有多種。通過的水容量也各不相同

清楚了網路流,那麼什麼是網路流中能到達匯點的最大流呢?

這個問題就是說,自來水廠供水,那麼在家能收到的最大的水流量是多少?

自來水廠開始供水之前,水流量必定是0

自開水廠開閘供水,水從管道流向家。家開始收到水

自開水廠再開乙個閘門供水,水從管道流向家。家裡的水流量增加

開啟若干閘門,水流量持續增加

自開水廠再開乙個閘門供水,水從管道流向家。家裡的水流量沒有發生改變

此時,便達到了從自來水廠到家這個網路的最大可行性流

網路流具有三個性質

容量限制:實際流量 < 每條邊的容量

自來水管中的水必定是小於它的最大承載容量。否則水管該爆了。

流量守恆:每乙個點(不包含源匯點)到相鄰節點的流量之和為0.

每乙個中間點必定是流進來多少水,流出去多少水。

不可能沒有流進來就流出去,也不可能流進來後就不出去。

至於為什麼是中間點,因為我問不用知道自來水廠的水是來自**的

反對稱(斜對稱)性:u -> v 的流量 == -(v -> u) 的流量

在座標系中,a 到 b 的位移是 x ,則 b 到 a 的位移是 -x

同樣的 u -> v 的流量為 f ,那麼 v -> u 必定是 -f ;

網路流中的名詞解釋

顯而易見:殘留網路 = 容量網路 - 流量網路

割集類似於,有小偷把自來水廠和家之間的管道偷走了一些,使得水不管從哪個管道走,都不能到家。

割則取決於小偷要偷哪個。最小割便是偷走最小,最輕的管道,最省力,最容易達到目的。

網路流 Dinic演算法理解

ek演算法還是不夠優秀,我們還是要學習更加優秀的dinic演算法才能解決更多要求較高的問題。這裡確保大家都是懂得網路流的一些基本概念的,如果不懂的,這裡有乙個鏈結,大家可以看一看。網路流詳解 顯然不是我寫的!他的ek演算法比我寫的好看的多,強勢給大家安利一波!就是給你一次反悔的機會,類似於我們搜尋時...

A 演算法理解

廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...

dijkstra 演算法理解

求有向圖中乙個源點到其他頂點的最短距離 自己的理解 剛開始的時候相當於有三個集合 v 頂點集合 s 已求得的最短距離頂點集合,假設求a到其他頂點的最短距離 s 剩餘頂點集合 d 儲存的是最短距離值 求一維陣列中的最小值的下標,這個陣列不包含已經求得的頂點 找出最小值下標後,放入到s中,然後求剩餘頂點...