獨立集就是指:
圖G=(V,E)中,I是G中的一個子集,如果I中任意兩個點之間不存在e屬於E,則I就是獨立集。
如果無法加入G中的任意一個點使得I依然保持獨立集,那麼I就是最大獨立集。(最大獨立集並不要求其中包含的點要最多,也就是說一個圖G可以有多個最大獨立集,例子:下圖,白色和黑色都是最大獨立集)計算最大獨立集的算法lubyMIS算法:(一種隨機化算法,有一定的概率(概率趨向於0)無法收斂)
多次迭代:每次迭代從G中選擇出一個獨立集 I` ,然後從圖G中刪除這個獨立集的點和與這些點相鄰接的點。然後重複這一過程,每次選出來的I`都合併入獨立集I,直到G變爲空。我們就得到了最大獨立集I
每次選出獨立集 I` 的算法:
假設有n個進程節點
- 每個進程都在0-n^4中選擇一個數字,作爲自己的val,(有較高的概率每個進程的val不同),並把這個數字發向相鄰節點。
- 如果一個進程i,val(i)比自己的相鄰節點的val都大,它就標記自己爲winner。否則就標記自己爲loser。
- winner把自己是winner的消息發向自己的鄰居,這樣所有的loser就知道自己哪些鄰居是winner
- loser把自己是loser的消息發向自己的鄰居,這樣所有的winner就知道自己的哪些鄰居是loser
- 所有的winner從圖G中被刪除,成爲了 I` 。所有和winner相鄰的loser以及相關的邊也被從G中刪除。