「SDFZ聽課筆記」二分圖&&網絡流
二分圖?
- 不存在奇環(長度為奇數的環)的圖
- 節點能黑白染色,使得不存在同色圖相連的圖
這兩個定義是等價噠。
直觀而言,就是這樣的圖:
二分圖有一些神奇的性質,讓一些在一般圖上復雜度飛天的問題可以在正常時間得到解。(這就是我們研究它的原因鴨!)
然後是一些可能會用到的定義(確實用到了 還搞得人一頭懵逼QAQ
- 匹配:圖中邊的一個子集,使這些邊沒有公共頂點。
當邊數最大化的時候,稱這個邊集為一組最大匹配。
- 獨立集:圖中點的一個子集,使點的導出子圖中不存在邊。
人話:選一些點,使得中間任意兩個點之間沒有邊
- 覆蓋:點的集合,使每條邊至少跟子集中一個點關聯。
人話:讓圖中的每條邊至少有一個頂點在集合裏。
- 支配集:一個神奇的點集,使每個點要麽處於集合之中,要麽和集合中至少一點關聯
(被支配的恐懼
才講完預備知識!驚不驚喜?!意不意外?!
求匹配的算法:
- 匈牙利算法
時間復雜度$O(NM)$,空間用鄰接矩陣是$O(N^2)$,可以用鄰接表優化。
我吹爆這個教會了我們全組的教程!!!
- Dinic
時間復雜度$O(m\sqrt{n})$。
比匈牙利難碼難理解,但是應用範圍廣多了(最大流算法
(會了這個還學什麽匈牙利
———————————————————————————
—這裏有一大段不知所雲感覺沒什麽luan用的Hall定理—
———————————————————————————
König 定理
這個名字上風騷的兩點讓人忍不住覺得naïve。
這個定理就是講了二分圖的最大匹配,最大獨立集
首先設圖的點數為N,最大匹配的大小為C
那麽有最小覆蓋=C,最大獨立集=N-C
證明:
首先我們知道最小覆蓋和最大獨立集是對偶問題。
(把最小覆蓋的點刪掉,剩下來的就是最大獨立集啦
然後就只要證明最小覆蓋=最大匹配了
不證了,當結論記叭。(懶
其實是不會證。
EG1
有一個$n*m$的棋盤,其中有一些格子裏有怪。
每次操作,可以選擇一行或一列攻擊,消滅這一行/列的所有怪。
求最少需要幾次打掉所有怪。(1e5)
首先建一個二分圖,左邊$n$個點,代表行;右邊$m$個點,代表列。
設這個怪所在的坐標為$(i,j)$,則把左邊第$i$個點和右邊第$j$個點連起來。
然後求一個最小覆蓋就行啦。
EG2
有一個$n*m$的棋盤,其中有些格子放了馬。
你要去掉一些馬,使它們不能相互攻擊。
求留下的馬的最大值。(1e5)
因為馬走日,所以如果兩個格子能夠相互攻擊,也就意味著這兩個格子不同色。
所以沖突必然在黑白兩色之間。(陰陽之戰,一觸即發!
建二分圖,一邊黑,一邊白,如果沖突就連邊。
最後求最大獨立集就行了。
——————To be continued——————
14/40 怎麽還有這麽多張PPT?!!!(氣哭
「SDFZ聽課筆記」二分圖&&網絡流