图论 —— 二分图
【概述】
二分圖又稱作偶圖,是圖論中的一種特殊模型。
設 G=(V,E) 是一無向圖,若頂點 V 可分割為兩個互不相交的子集 (A,B),且圖中的每條邊(i,j)所關聯的兩個頂點 i 和 j 分屬這兩個不同的頂點集 (i ∈?A,j ∈?B),則稱圖 G 為一二分圖。
其充要條件是:圖 G 中至少存在兩個點,且圖中所有回路的長度均為偶數。
簡單來說,就是頂點集 V 可分割為兩個互不相交的子集,且圖中每條邊依附的兩個頂點都分屬于這兩個互不相交的子集,兩個子集內的頂點不相鄰。
當圖中的頂點分為兩個集合,使得第一個集合中的所有頂點都與第二個集合中的所有頂點相連時,此時是一特殊的二分圖,稱為完全二分圖。
【基本概念】
1.匹配
在給定一個二分圖 G,在 G 的一個子圖 M 中,若 M 的邊集中的任意兩條邊都不依附于同一個頂點,則稱 M 是一個匹配。
簡單來說,匹配就是一個二分圖中邊的集合,其中任意兩條邊都沒有公共頂點。
如圖,紅邊就是一個匹配
定義匹配點、匹配邊、未匹配點、非匹配邊,它們的含義非常顯然。例如上圖中 1、4、5、7 為匹配點,其他頂點為未匹配點;1-5、4-7為匹配邊,其他邊為非匹配邊。
2.最大匹配
給定二分圖 G 中的所有匹配,所含匹配邊數最多的匹配,稱為這個圖的最大匹配,選擇最大匹配的問題即為圖的最大匹配問題
如圖,紅邊就是一個最大匹配
3.完全匹配
一個匹配中,圖中每個頂點都與圖中某條邊相關聯,則稱此匹配為完全匹配,即一個圖的某個匹配中,所有的頂點都是匹配點,就是一個完全匹配。
顯然,由于完全匹配的任何一個點都已經匹配,添加一條新的匹配邊一定會與已有的匹配邊沖突,因此完全匹配一定是最大匹配。但要注意的是,并非每個圖都存在完全匹配。
簡單來說,對于一個二分圖,左點集中的每一個點都與右點集的一個點匹配,或者右點集中的每一個點都與左點集的一個點匹配。
4.完美匹配
對于一個二分圖,左點集與右點集的點數相同,若存在一個匹配,包含左點集、右點集的所有頂點,則稱為完美匹配。
簡單來說,對于一個二分圖,左點集中的每一個點都與右點集的一個點匹配,并且右點集中的每一個點都與左點集的一個點匹配。
如下圖,紅線所連接的匹配,不僅是一個完全匹配,還是一個完美匹配
5.最大匹配問題
舉例來說,如下圖所示,若存在某一對男孩和女孩之間存在相連的邊,就意味著他們彼此喜歡。是否可能讓所有男孩和女孩兩兩配對,使得每對兒都互相喜歡?這就是完全匹配問題。而最多有多少互相喜歡的男孩/女孩可以配對?這就是最大匹配問題。
6.最優匹配
帶權二分圖的權值最大的完全匹配稱為最佳匹配,要注意的是,二分圖的最優匹配不一定是二分圖的最大權匹配。
實質上最優匹配問題就是求邊權和最大的最大匹配問題。
求解技巧:可以添加一些權值為 0 的邊,使得最優匹配和最大權匹配統一起來。?
【相關算法】
- 二分圖判定:點擊這里
- 匈牙利算法:點擊這里
- KM 算法:點擊這里
其中,匈牙利算法常用于求最大匹配數、最小點覆蓋數、最大獨立集、最小路徑覆蓋數等;KM 算法常用于求最優匹配、邊權和最小的完全匹配、最小有向環覆蓋權值和、優先用原匹配邊構建的最優匹配等。
關于 DAG 圖的覆蓋與獨立集:點擊這里
【例題】
1.二分圖判定
2.匈牙利算法
1)最大匹配
2)最大獨立集
同題:Cat vs. Dog(HDU-2768):點擊這里
同題:Girls and Boys(HDU1068):點擊這里
3)最小點覆蓋數
同題:Machine Schedule(HDU-1150):點擊這里
3.KM 算法
總結
- 上一篇: 素数方阵(信息学奥赛一本通-T1446)
- 下一篇: 字符串处理 —— 单模式匹配