最大流

參考:最大流(Maximum Flow)

流網(wǎng)絡(luò)

流網(wǎng)絡(luò)G(V琅关,E)是一個有向圖粪牲,每條邊有一個非負(fù)的容量值c,且每條邊沒有重邊(反向邊)帽揪。如果兩個節(jié)點沒有邊帮寻,為了方便我們設(shè)置其流量值為0
在流網(wǎng)絡(luò)的所有節(jié)點中弥鹦,我們特別地有兩個節(jié)點:源節(jié)點s匯點t向抢。我們假定每個節(jié)點都在s和t之間迄本,從而形成一個流

對于流網(wǎng)絡(luò)硕淑,我們有兩個性質(zhì):
1.容量守恒:對于所有節(jié)點間,兩點流量小于等于其間容量
2.流量守恒:流進(jìn)一個節(jié)點的流量等于流出這個節(jié)點的流量嘉赎。

邊上的數(shù)值:分子表示流置媳,分母表示容量

問題描述

在最大流問題中,給定一個流網(wǎng)絡(luò)G公条、一個源節(jié)點s拇囊、一個匯點t,希望找到一個值最大的一個流

Ford-Fulkerson方法

這個方法依賴于三種重要思想:殘存網(wǎng)絡(luò)靶橱,增廣路徑寥袭,切割

殘存網(wǎng)絡(luò)

對節(jié)點u、v关霸,定義殘存容量為

殘存網(wǎng)絡(luò)可能包含圖G中不存在的邊传黄,殘存網(wǎng)絡(luò)中的反向邊允許算法將已經(jīng)發(fā)送出來的流量發(fā)送回去。一個殘存網(wǎng)絡(luò)示例圖如下:

圖a是一個流網(wǎng)絡(luò)谒拴,b是a對應(yīng)的殘存網(wǎng)絡(luò)尝江。
注意每條邊上的值,殘存網(wǎng)絡(luò)中針對每條正向邊計算出該條邊在存在流的情況下的剩余容量英上,并畫出一條反向邊炭序,反向邊的容量即是發(fā)出流的大小,方便將發(fā)出的流運(yùn)輸回發(fā)送地苍日,并將權(quán)重為0的邊省略惭聂。

殘存網(wǎng)絡(luò)是如何增大原始流網(wǎng)絡(luò)中的流的一種指示
如果f是G的一個流,對應(yīng)的有一個殘存網(wǎng)絡(luò)相恃,殘存網(wǎng)絡(luò)中我們可以定義一個流 f ’
又定義一個函數(shù)辜纲,為流f’對流f的增量(或遞增),它是一個VxV到R的函數(shù)

增廣路徑

給定流網(wǎng)絡(luò)G和流f,增廣路徑p是殘存網(wǎng)絡(luò)中一條從源結(jié)點s到匯點t的簡單路徑
我們稱在一條增廣路徑p上能夠為每條邊增加的流量的最大值為路徑p的殘存容量耕腾。表示為cf(p)

引理 設(shè)G為一個流網(wǎng)絡(luò)见剩,設(shè)f為圖G中的一個流,設(shè)p為殘存網(wǎng)絡(luò)中的一條增廣路徑扫俺。定義一個函數(shù)如下:

fp為殘存網(wǎng)絡(luò)的一個流苍苞,其值大于0
有了增廣路徑,使得我們找到的流更接近于最大流

切割

Ford算法核心就是沿著增廣路徑重復(fù)增加路徑上的流量狼纬,直到找到一個最大流為止羹呵。但我們怎么知道找到了呢?
定理:一個流是最大流當(dāng)且僅當(dāng)其殘存網(wǎng)絡(luò)不包含任何增廣路徑

切割:一個切割(S疗琉,T)將圖G(V冈欢,E)的節(jié)點集合V劃分為S和T=V-S兩個集合,使得節(jié)點s屬于S盈简,t屬于T凑耻。
若f為一個流,則定義橫向切割(S送火,T)的凈流量f(S拳话,T)如下:

切割(S,T)的容量是:

一個網(wǎng)絡(luò)的最小切割是整個網(wǎng)絡(luò)中容量最小的切割种吸。
如對于這個流網(wǎng)絡(luò):

該切割凈流量:

該切割的容量:(只看從s到t方向的容量)

引理 設(shè)f為流網(wǎng)絡(luò)G的一個流弃衍,該流網(wǎng)絡(luò)的源結(jié)點為s,匯點為t坚俗,設(shè)(S镜盯,T)為流網(wǎng)絡(luò)G的任意切割,則橫跨切割(S猖败,T)的凈流量為f(S速缆,T)= |f|。

推論 流網(wǎng)絡(luò)G中任意流f的值不能超過G的任意切割的容量恩闻。

最大流最小切割定理

設(shè)f為流網(wǎng)絡(luò)G=(V艺糜,E)中的一個流,該流網(wǎng)絡(luò)的源結(jié)點為s幢尚,匯點為t破停,則下面的條件是等價的:

  1. f是G的一個最大流。
  2. 殘存網(wǎng)絡(luò)不包含任何增廣路徑
  3. |f|=c(S尉剩,T)真慢,其中(S,T)是流網(wǎng)絡(luò)G的某個切割理茎。

因為一個流不可能大于一個切割容量黑界,當(dāng)一個切割容量最小時管嬉,其值就為最大流的大小

基本的Ford算法

在Ford-Fulkerrson方法的每次迭代中,尋找某條增廣路徑p朗鸠,然后使用p來對流f進(jìn)行修改(增加)蚯撩。找到一條增廣路徑后有對應(yīng)的fp,將其添加到f中烛占,知直到找不到一條增廣路徑p為止求厕。

偽代碼

1-2行:初始化流
3-8行:在殘存網(wǎng)絡(luò)中尋找一條增廣路徑p,然后使用殘存容量cf(p)來對流f加增扰楼。
因為路徑p上每條殘存邊要么是原來網(wǎng)絡(luò)中一條邊,要么是原來網(wǎng)絡(luò)中一條反向邊美浦。
故6-8行:如果殘存邊為原來一條邊弦赖,加增流量;為反向邊浦辨,減流量蹬竖。
當(dāng)沒有增廣路徑p時,流f就是最大流

算法運(yùn)行時間取決于尋找增廣路徑的時間流酬,當(dāng)我們使用基于廣度優(yōu)先搜索的算法時币厕,此時稱Ford算法為Edmonds-Karp算法,算法時間復(fù)雜度為O(V*E^2)

示例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芽腾,一起剝皮案震驚了整個濱河市旦装,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊滔,老刑警劉巖阴绢,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艰躺,居然都是意外死亡呻袭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門腺兴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來左电,“玉大人,你說我怎么就攤上這事页响÷ㄗ悖” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵拘泞,是天一觀的道長纷纫。 經(jīng)常有香客問我,道長陪腌,這世上最難降的妖魔是什么辱魁? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任烟瞧,我火速辦了婚禮,結(jié)果婚禮上染簇,老公的妹妹穿的比我還像新娘参滴。我一直安慰自己,他們只是感情好锻弓,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布砾赔。 她就那樣靜靜地躺著,像睡著了一般青灼。 火紅的嫁衣襯著肌膚如雪暴心。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天杂拨,我揣著相機(jī)與錄音专普,去河邊找鬼。 笑死弹沽,一個胖子當(dāng)著我的面吹牛檀夹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播策橘,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼炸渡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丽已?” 一聲冷哼從身側(cè)響起蚌堵,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎促脉,沒想到半個月后辰斋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡瘸味,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年宫仗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旁仿。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡藕夫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枯冈,到底是詐尸還是另有隱情毅贮,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布尘奏,位于F島的核電站滩褥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炫加。R本人自食惡果不足惜瑰煎,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一铺然、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酒甸,春花似錦魄健、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至农尖,卻和暖如春析恋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盛卡。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工绿满, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窟扑。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像漏健,于是被迫代替她去往敵國和親嚎货。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容