割是一種對網路流點的劃分方式
對於乙個網路流圖g(v,e),劃分為s和t兩部分,其中t=v-s,源點s∈s,匯點t∈t
淨流f(s,t)表示穿過割(s,t)的流量之和
f(s,t)=σf(u,v) | u∈s,v∈t
割的容量c(s,t)為所有從s到t的邊容量之和
c(s,t)=σc(u,v) | u∈s,v∈t
f(s,t)算穿過割(s,t)的正反向邊,而c(s,t)只算正向邊
最小割指容量最小的可能的割
對於乙個網路流圖g(v,e),最大流的值等於最小割的容量
在學習最大流時,可以使用增廣路演算法來求最大流,但是增廣路演算法都是在找不到增廣路時,就得出了最大流的值。
若殘留網路gf不存在增廣路,則gf中不存在路徑從s到達t
定義s集合為:殘留網路中s可到達的點
(s,t)構成乙個割(s,t)
若f(u,v)小於c(u,v),則gf(u,v)>0,與上述「不存在路徑從s到達t」矛盾
所以f(s,t)=c(s,t)
因為f(s,t)《最小割,又因為f(s,t)=c(s,t)
所以f(s,t)為最大流
據「最大流最小割定理」,可使用求最大流的演算法求最小割
這裡使用dinic演算法求最小割
void
bfs(
) qh++;}
if(h[n]!=-
1) flag=
true;}
intdfs
(int k,
int delta)}if
(!ma) h[k]=-
1;return ma;
}
網路流 最小割
標籤 網路流 最小割 原題 洛谷p2057 善意的投票 題目描述 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋...
網路流之最小割
最小割的相關知識請參見 網路流問題 i.hdu4289 control 題意 給出乙個由n個點,m條邊組成的無向圖。給出兩個點s,t。對於圖中的每個點,去掉這個點都需要一定的花費。求至少多少花費才能使得s和t之間不連通。分析 題意即求最小割,將每個點拆點,點與對應點的邊權為去掉該點的花費,原圖中所有...
網路流最小割 王者之劍
傳送門 不用考慮走的方法,因為一旦合法,即不同時取相鄰的兩個,一定能達到。所以只用考慮怎麼取就行了。把棋盤黑白染色,s到黑點建權值為val的邊,白點到t建權值為val的邊,然後把相鄰的黑白點建一條為inf的邊。求最小割。不得不提一句 邊從零開始建和從一開始建乙個wa乙個a。時相應的正邊和反邊必須對應...