分佈式算法 3 最大獨立集

獨立集就是指:

圖G=(V,E)中,I是G中的一個子集,如果I中任意兩個點之間不存在e屬於E,則I就是獨立集。

如果無法加入G中的任意一個點使得I依然保持獨立集,那麼I就是最大獨立集。(最大獨立集並不要求其中包含的點要最多,也就是說一個圖G可以有多個最大獨立集,例子:下圖,白色和黑色都是最大獨立集
         

計算最大獨立集的算法lubyMIS算法:(一種隨機化算法,有一定的概率(概率趨向於0)無法收斂)
多次迭代:每次迭代從G中選擇出一個獨立集 I` ,然後從圖G中刪除這個獨立集的點與這些點相鄰接的點。然後重複這一過程,每次選出來的I`都合併入獨立集I,直到G變爲空。我們就得到了最大獨立集I


每次選出獨立集 I` 的算法:
假設有n個進程節點
  1. 每個進程都在0-n^4中選擇一個數字,作爲自己的val,(有較高的概率每個進程的val不同),並把這個數字發向相鄰節點。
  2. 如果一個進程i,val(i)比自己的相鄰節點的val都大,它就標記自己爲winner。否則就標記自己爲loser。
  3. winner把自己是winner的消息發向自己的鄰居,這樣所有的loser就知道自己哪些鄰居是winner
  4. loser把自己是loser的消息發向自己的鄰居,這樣所有的winner就知道自己的哪些鄰居是loser
  5. 所有的winner從圖G中被刪除,成爲了 I` 。所有和winner相鄰的loser以及相關的邊也被從G中刪除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章