1. 程式人生 > >二分圖的最小頂點覆蓋 最大獨立集 最大團

二分圖的最小頂點覆蓋 最大獨立集 最大團

所有 mil bubuko 開始 畫的 很好 info 最大團 集合

二分圖的最小頂點覆蓋

定義:假如選了一個點就相當於覆蓋了以它為端點的所有邊。最小頂點覆蓋就是選擇最少的點來覆蓋所有的邊。

方法:最小頂點覆蓋等於二分圖的最大匹配。

我們用二分圖來構造最小頂點覆蓋。

技術分享圖片

對於上面這個二分圖,頂點分為左右兩個集合,X集合包含1,2,3,4,Y集合包含5,6,7,8,9.假如現在我們已經找到一個最大匹配M,就是上面的紅線所標註的M={(1,7),(2,5),(4,8)}。我們作如下定義:(1)定義1、2、4、5、7、8為已經匹配過的點,其他點為未匹配的點;(2)定義(4,8)、(1,7)、(2,5)為已匹配的邊,其他邊為未匹配的邊。

下面我們從Y集合中找出未匹配的點,就是上面標記的6和9。每次我們從右邊選出一個未匹配的點,從該點出發, 做一條未匹配邊->匹配邊->未匹配邊->……->匹配邊(註意最後以匹配邊結尾),並且標記用到的點,得到下圖:

技術分享圖片

其中紫色的邊為我們剛才畫的邊,其中標記的點有2、4、5、6、8、9。上圖的兩條路為:(1)9->4->8->2->5 (2)6->2->5。這兩條路都是未匹配邊->匹配邊->未匹配邊->……->匹配邊。(註意如果一個右側未匹配點有多條邊,那麽這樣的從該點開始的路徑就有多條,上面的6和9都只有一條邊,所以從每個點開始的這樣的路徑只有一條)。

現在我們將左側標記的點2、4和右側未標記的點7選出組成集合S, 那個S就是一個最小頂點覆蓋集,就是S集合可以覆蓋所有的邊。

二分圖的最大獨立集

定義:選出一些頂點使得這些頂點兩兩不相鄰,則這些點構成的集合稱為獨立集。找出一個包含頂點數最多的獨立集稱為最大獨立集。

方法:最大獨立集=所有頂點數-最小頂點覆蓋

技術分享圖片

在上面這個圖中最小頂點覆蓋=3,即2,4,7構成最小頂點覆蓋,則其他點6個構成最大獨立集。且其他點不可能相連。假設其他點相連則這條邊必定沒有被2,4,7 覆蓋,與2,4,7是最小頂點覆蓋矛盾。因此其他點之間必定沒有邊。而2,4,7是最小頂點覆蓋,所謂最小就是不能再小了,因此我們的獨立集就是最大了。

二分圖的最大團

定義:對於一般圖來說,團是一個頂點集合,且由該頂點集合誘導的子圖是一個完全圖,簡單說,就是選出一些頂點,這些頂點兩兩之間都有邊。最大團就是使得選出的這個頂點集合最大。對於二分圖來說,我們默認為左邊的所有點之間都有邊,右邊的所有頂點之間都有邊。那麽,實際上,我們是要在左邊找到一個頂點子集X,在右邊找到一個頂點子集Y,使得X中每個頂點和Y中每個頂點之間都有邊。

方法:二分圖的最大團=補圖的最大獨立集。

補圖的定義是:對於二分圖中左邊一點x和右邊一點y,若x和y之間有邊,那麽在補圖中沒有,否則有。

這個方法很好理解,因為最大獨立集是兩兩不相鄰,所以最大獨立集的補圖兩兩相鄰。

二分圖的最小頂點覆蓋 最大獨立集 最大團