1. 程式人生 > >網絡流之最小割

網絡流之最小割

容量 center 最小割 網絡流24題 -s spa 之前 不同 style

網絡流之最小割

上一篇關於最大流總結中,關於最大流正確性的證明是純屬搞笑的,只是邏輯上的理解與思考。下面需要討論一下關於最大流正確性的嚴格證明。

最小割問題與之前的最大流問題有著很深的聯系。

假設在原圖中,刪掉某些邊,能夠使得從s出發到不了t,則這些邊的集合被稱作圖的割。

定義在殘余網絡中,從s及s出發可達的點v組成的集合為S,其余點組成的集合為T。

定義最小割,為容量和最小的割。

由算法可知,對於任意流f而言,(f的流量)= (S的出邊總流量)-(S的入邊總流量),由此可知,(f的流量)<=(最小割容量)。

那麽,如果能夠證明,最大流等於最小割,則就可以證明最大流為最優解了。

如何證明?如果在殘余網絡中的S-T路徑中,仍然存在流量上限不為0的正向邊,則答案可以更優。然而這種情況是不存在的。由S集合的定義可知,如果存在這樣的邊,則那條路徑的端點都應在S集合。類似的,T-S路徑中,流量上限不為0的反向邊也是不存在的。

因此,最大流就等於最小割,證明了Ford-Fulkerson的正確性。該性質被叫做最大流最小割定理。因此,在遇到求解最小割的題目時,就可以用求解最大流的辦法來做了。

但值得註意的是,對最小割方案的打印,與最大流不同(本身原理就不同,只不過值相等)。我們割的那些邊,實際就是殘余網絡中從S集合連向T集合的邊,即左端點被訪問過,右端點未被訪問過的邊。

下面是幾道習題~(留了好久的坑……)

  網絡流24題之方格取數問題

網絡流24題之飛行計劃問題

網絡流之最小割