交通網路中有**、車流、貨流,供水網路中有水流,金融網路中有金流。這些都涉及到了最大流問題
而最大流存在於網路流中
那麼問題來了,什麼是網路流?
有了這些,就構成了乙個基礎的網路流
有點繞。。。換個思路
自來水廠是源,家是匯清楚了網路流,那麼什麼是網路流中能到達匯點的最大流呢?自來水廠和家之間有很多的管道用來輸送水。由於地形和地質的影響,管道規格有多種。通過的水容量也各不相同
這個問題就是說,自來水廠供水,那麼在家能收到的最大的水流量是多少?自來水廠開始供水之前,水流量必定是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中,然後求剩餘頂點...