爲了證明
http://blog.csdn.net/tlonline/article/details/47403027
中的算法所求得的確是是最大流,我們首先介紹“割”這一概念。所謂的一個圖的割,指的是對於某個頂點集合S⊆V ,從S出發指向S外部的那些邊的集合,記爲割 (S,V\S)。這些邊的容量之和被稱爲割的容量。如果有 s∈S ,而t∈V/S ,那麼此時的割又被稱爲s-t割。如果將網絡中s-t割所包含的邊都刪去,也就不再有從s到t的路徑了。因此,可以考慮一下如下問題:
對於給定網絡,爲了保證沒有從s-t的路徑,需要刪去的邊的總容量最小值是多少?
這個問題又被稱爲最小割問題。事實上,這個問題與之前的最大流問題有着很深的聯繫。
首先,讓我們來考慮一下任意的 s−t 流 f 和任意的 s−t 割 (S,V/S) 。因爲有 f 的流量= s 的出邊的總流量,而對 v∈S/{s} 又有v的出邊的總流量 = v的入邊的總流量,所以有f的流量 = s的出邊的總流量。
由此可知f的流量一定小於等於割的容量。
接下來,讓我們來考慮通過Ford-Fulkerson算法所求得的流 f′ 記流 f′ 對應的殘餘網絡中從 s 可達的頂點v組成的集合爲S,因爲 f′ 對應殘餘網絡中不存在s-t路徑。因此, (S,V/S) 就是一個s-t割。此外,根據S的定義,對包含在割中的邊e應該有f′(e)=c(e) ,而對從V\S到S的邊e 應該有f′(e)=0 。因此f′ 的流量=S的出邊的總流量 - S的入邊的總流量 = 割的容量,再由之前的不等式可以知道,f′ 即是最大流。
利用該定理,我們我們就可以直接利用求解最大流問題的算法來求解最小割問題了。