1. 程式人生 > >最大流-最小割定理

最大流-最小割定理

割(CUT)是網路中頂點的劃分,它把網路中的所有頂點劃分成兩個頂點的集合源點S和匯點T。記為CUT(S,T)。

如下圖:源點:s=1;匯點:t=5。框外是容量,框內是流量

 

如下圖是一個圖的割。頂點集合S={1,2,3}和T={4,5}構成一個割。

           

如果一條弧的兩個頂點分別屬於頂點集S和T那麼這條弧稱為割CUT(S,T)的一條割邊。  從S指向T的割邊是正向割邊,從T指向S的割邊是逆向割邊。如上圖正向割邊:

1->2;3->5      逆向割邊:2->3。

割CUT(S,T)中所有正向割邊的容量和稱為割的容量。不同的個的容量不同。如上圖割的容量為4+4=8;割的正向流量:4+2=6    逆向割的流量:1。

定理一:如果f是網路中的一個流,CUT(S,T)是任意一個割,那麼流量f的值等於正向割邊的流量與負向割邊的流量之差。

推理提示:如果V既不是源點也不是匯點,那麼:f({V},S∪T)-f(S∪T,{V})=0; 任何一個點,流入的與流出的量相等。

        結論:f= f(S,T)- f(T,S)<=f(S,T)<=割CUT(S,T)的容量 。 

推論1:如果f是網路中的一個流,CUT(S,T)是一個割,那麼f的值不超過割CUT(S,T)的容量。

推論2:網路中的最大流不超過任何割的容量 

定理2: 在任何網路中,如果f是一個流,CUT(S,T)是一個割,且f的值等於割CUT(S,T)的容量,那麼f是一個最大流,CUT(S,T)是一個最小割(容量最小的割)。

定理3:最大流最小割定量: 在任何的網路中,最大流的值等於最小割的容量。

結論1:最大流時,最小割cut(S,T)中,正向割邊的流量=容量,逆向割邊的流量為0。否則還可以增廣。

結論2:在最小割中cut(S,T)中:
 
                        ① 源點s∈S。
 
                        ② 如果i∈S,結點j滿足:有弧<i,j>,並且c[I,j]>f[I,j]  或者有弧<j,i>並且f[j,i]>0,那麼j∈S。//否則不是最小割
 
                       即從s出發能找到的含有殘留的點組成集合S。其餘的點組成集合T。