網路流 最大流等於最小割

2022-09-04 22:12:13 字數 1139 閱讀 2272

將網路流想象成是一張地下水管道的管道圖。

而所有的在管道中流淌的水是起源同乙個點,稱這個點為源點,而這些水最終都會匯聚於同一點,這個點被稱為匯點。

而每條管道都會有乙個容量上限,而這個容量是必然會大於或等於(滿載)流經這條管道的實際流量的(就好像杯子只能裝不超過杯子容量的水一樣)。

不管大小,從源點通過管道流向匯點的水的總量叫做流,而在這些可以的流中,總量最大的叫做最大流。

而我們不妨規定摧毀一條管道的代價為這條管道的容量,那麼我們可以在所有管道中選取一定量的管道進行摧毀的話,並且保證在來自源點的水再也無法流到終點,且在中途過程中就全部洩漏乾淨了,這樣的話就說這是割。

而注意一下,一側的管道是可以接受到來自源點的水,而另一側的管道是雖然是沒有有水經過的,但如果是」老鼠「(舉個例子)在這些管道中行走,最終還是可以走到終點(匯點)。

同時規定可以接受到水的點(管道的兩端)為集合s,能走到匯點的點為集合t。

所以,更準確的來講,割是乙個對圖的乙個劃分,而劃分的結果會產生兩個關於點的集合,且乙個割的大小為其砍去所有的邊的容量和。而在所有的割裡面按大小去挑乙個最小的就為最小割

證明分三步走

第一步:任意乙個流都小於等於任意乙個割。

就好像杯子只能裝不超過杯子容量的水一樣

第二步:構造出乙個流等於乙個割

最大流之所以是最大流,可以換某種角度來思考,就是在當前的網路中沒有辦法再擴充流量了(反證:如果還有,就必然有大於當前狀態的流量,而當前狀態的流就不應該叫做最大流),而從微觀的角度來看,是在這張網路圖中,存在一定數量的邊,它的流量恰好達到它的容量上限,而不妨,我們可以拿著這些割邊去作為割的依據去形成乙個割。

而此時我們就構造出乙個等於最大流的乙個割。

\(flow_=cut_k\)

第三步:

結合我們已經舉出的第一步

我們有\(flow_<=cut_i\),\(cut_i\)為任意一種割

且\(cut_>=flow_i\),f\(flow_i\)為任意一種流

結合一下,我們有

\(flow_i<=cut_=flow_<=cut_i\)

提取部分,會發現

\(cut_k<=cut_i\)

因而\(cut_k\)就是所有\(cut\)中最小的,就是最小割,\(cut_k=cut_\)

因而,最大流等於最小割得證。

網路流 最大流最小割

網路流黃頁 最大流是增廣思想的傑作,針對增光特點,採用dinic阻塞流分層 除錯編譯通過 這個沒什麼,肯定不會考裸,模板的構建是最重要的 並且還有最小割最大流定理 相等 利用拆點實現割集劃分即選與不選,放a或b1 include2 include3 include4 include5 include...

網路流最大流最小割演算法

最大流演算法 不得不說網路流演算法是很讓人無語的演算法,要想高效率竟然要非遞迴實現深搜,很無奈,到現在還是在低效率中掙扎!最大流演算法的證明就不說了,無非就是最大流最小割定理的推導,定理描述如下 對於任意給定的網路d v,a,c 從出發點vs到收點vt的最大流的流量必等於分割的最小截集的容量!至於截...

網路流 最小割最大流定理

有乙個與最大流關係密切的問題 最小割。就是把所有的頂點分成兩個集合s和t v s,其中源點s在集合s中,匯點t在集合t中。如果把 起點在s中,終點在t中 的邊都刪除,就無法從s到達t了。我們把這樣的集合劃分 s,t 成為s t割,它的容量定義為c s,t c u,v 其中u s,t t,即起點在s中...