最小割的一些理解

2021-06-18 07:40:03 字數 1098 閱讀 3272

一、基本問題:

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。也就是說割的容量...

關於最小生成樹的一些理解

1 定義在一棵樹裡新增一條邊,並在產生的圈裡刪除一條邊叫做一次操作。也就是說換掉一條邊並且保證結果是樹 則樹a和b是無向圖的兩個生成樹,則a可以通過若干次操作變成b。證 把樹看作邊的集合,如果b中有一條a沒有的邊,則把這條邊加到a上,a產生乙個圈中至少有一條是b中沒有的邊,把這條邊刪掉,則a仍然是生...

深入理解最小割的意義

在做網路流題目的時候,我們時常因為無法正確建圖而遺憾錯過本應該的ac。今天通過一些題目,我好好記錄一下自己對最大流 最小割的學習感受。hdu 1565,題意 給你乙個矩陣,矩陣上每個點上都有乙個數字,現在要你在矩陣中取一些數字,使得取得的數字和最大!規則 相鄰的格仔不能同時取,即取了乙個以後,它四周...