1. 程式人生 > >「SDFZ聽課筆記」二分圖&&網絡流

「SDFZ聽課筆記」二分圖&&網絡流

邊集 height 知識 ref line 是我 wid 得到 空間

二分圖?

  • 不存在奇環(長度為奇數的環)的圖
  • 節點能黑白染色,使得不存在同色圖相連的圖

這兩個定義是等價噠。

直觀而言,就是這樣的圖:

技術分享圖片

二分圖有一些神奇的性質,讓一些在一般圖上復雜度飛天的問題可以在正常時間得到解。(這就是我們研究它的原因鴨!)

然後是一些可能會用到的定義(確實用到了 還搞得人一頭懵逼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聽課筆記」二分圖&&網絡流