今天學網路流
雖然以前學過。但是和沒學沒什麼區別,當時那個講課的noi金牌選手的ppt倒是很好看
網路流定義不想寫了
網路流分為最大流和費用流,常用於解決水流在管道中流動,資料在網路中流,電流在電線中流等問題,屬於圖論演算法。
網路流的操作在乙個有向圖中進行,每條邊有流量權值,是流過這條邊的最大限制值。
若在這個水流圖中出現了一條迴圈流動的水流,則這個水流必定滿足下列條件:
(1) 流量約束條件:每條邊流過的流量小於它的流量上限,即
(2) 流量平衡條件:流入每個頂點的流量與從這個頂點流出的流量相等,即
我們稱滿足這兩個條件的乙個流方案,即使得每條邊都滿足流量約束,每個頂點滿足流
量平衡的方案為一條無源匯網路的可行(迴圈)流。
定義源點s和匯點t,s的入度為0,出度為正無窮,t的出度為0,入度為正無窮
如何實現?
首先考慮貪心,把每條邊的流量強制加到最大
那麼5->1 10
1->3 6
1->2 4
5->2 1
2->t 5
3->t 6
最大流為11
好像可以,但是因為有流量平衡的限制,所以加到最大極有可能會破壞流量平衡
那就加到滿足流量平衡時盡量大的值行嗎?
資料小的時候可以,但是流入乙個點的流量改變會導致從這個點流出的各條邊的流量改變,這樣的話,每次求乙個最大值就要遍歷整個圖,顯然是不可行的。
那麼我們怎麼做呢?
我們把每條邊的流退回去,簡稱退流,得到:
方法:(1) 只利用滿足f(e)0 的e 的反向邊 rev (e),尋找一條s到t的路徑。
(2) 如果不存在滿足條件的路徑,則演算法結束。否則,沿著該路徑盡可能地增加流,返回(1)。
如何證明?參見:
網路流 最大流
網路流 題記 網路流是最近講過的最迷演算法 網路流 network flows 是一種模擬水流的解決問題方法,與線性規劃密切相關。非常重視選手在網路流上的建模技巧,畫圖是非常關鍵的。1 最大流 問題引入 有n條溝渠,與水坑s t相連,匯聚成m個點,第i條溝渠的水流的流量為c i 每乙個點的流入量和流...
網路流(最大流)
我們圍繞一道題來講解吧 藍橋杯 演算法訓練 網路流裸題 首先,何為網路流最大流問題?可行流 對於每條路線 u,v 上給定乙個實數f u,v 滿足 0 f u,v c u,v 則稱f u,v 為路線 u,v 的流量。而對於一組具有源點和匯點,且總流出量 總流入量,則稱為網路中的一條可行流。拿例子來說 ...
網路流 最大流
dinic 最大流 head x 從0開始記 這樣便於找反向邊 異或即可 當前弧優化 include include include include include include include define ll long long define ull unsigned long long d...