最小割的一點理解

2021-06-23 01:55:58 字數 1088 閱讀 1561

**

一、基本問題:

1.到底什麼是割:原始點集為v,選出一些點集s使得s∈s,t=v-s,t∈t,則s到t的邊為s到t割,記做[s,t]。

2.什麼是最小割:圖中所有的割中,邊權值和最小的割為最小割!

3.割得容量容量和流量計算的區別:割[s,t]的容量為∑(邊(u,v)的容量和),其中u∈s,∈t。也就是說割的容量不計算反向的邊!!而流量為正向的和反向的代數和。

4.最大流-最小割定理:最大流的值為最小割的容量!

5.怎樣求割:求完最大流後,在殘留網路中從source開始dfs,被染色的為s,未被染色的為t,則邊集[s,t]為割。(或者從sink反向dfs,被染色的為t,未被染色的為s,邊集[s,t]為割)這種思想應該沒有錯誤,我曾經證明過,正向和反向floodfill都能得到合適的解。然而我按照逆向floodfill提交了兩道special judge的題,都沒有ac!分別是spoj839和poj2125(其中poj2125的spj有問題,一會ac一會wa),然而,對於spoj839我自己對我的逆向floodfill答案和正向floodfill答案做了對比(如果有區別,在程式中會死迴圈),發現二者沒有區別。感覺是spj的問題。這一點,暫且放置,以後再次看到了再說。

二、一些割的性質:

1.割[s,t],流量只能從s流向t,不能從t流向s!(在最大流後找割dfs時其實就滿足這個性質,假設t中乙個點v流向s中的乙個點u,那麼u到v有負流量,則u到v的殘留網路嚴格大於0

。反向dfs證明類似)

2.最大流後,割邊一定滿流。減小某一割邊後,網路流減小。

3.如下圖,從s沿著殘餘流量dfs,得到點集s;同理沿著t反向dfs,得到點集t;剩下的是m。分界線cut1和cut2是其中一割,邊自然為割邊。然而在m中還存有割邊(一定存有!!否則m就沒用了!)

4.退化一下:如下圖所示,s和t有相鄰部分邊集e1,s和m重合邊集相鄰部分邊集e2,m和t相鄰邊集部分e3,那麼直接公升高e1中某條邊的容量,會使整體容量直接增高!反之:而如果增大s和m相鄰的割邊或者m和t相鄰的割邊,網路流不直接增大,因為m中還存有割邊限制

5.繼續退化:如果m==空集,cut1和cut2重合(變為cut),則網路中割唯一。可以通過 if ( |s|+|t|==總點數) 來判斷

最小割的一些理解

一 基本問題 1.到底什麼是割 原始點集為v,選出一些點集s使得s s,t v s,t t,則s到t的邊為s到t割,記做 s,t 2.什麼是最小割 圖中所有的割中,邊權值和最小的割為最小割!3.割得容量容量和流量計算的區別 割 s,t 的容量為 邊 u,v 的容量和 其中u s,t。也就是說割的容量...

UIWebView 的一點理解

uiwebview可以用來方便得顯示url request uiwebview 是從uiview繼承而來的。所以本身並沒有實現scroll。當開啟乙個urlrequest之後,uiwebview 自動建立乙個uiscrollview add 到uiwebview的layer 當開啟當前頁面中的lin...

QThread的一點理解

白天在工作中用到的qthread,發現了一些問題,晚上學習了一下,感觸頗深,遂記錄一下 嘻嘻 1 qthread exec 如果不在run 中最後一行寫出來,普通訊號槽可以用,但是qtimer或qtcpsocket或程序類qprocess的訊號槽不能用!2 在標頭檔案裡定義的類,是屬於主線程的。比如...