您的位置:首页 > 理论基础 > 计算机网络

分布式算法 3 最大独立集

2015-04-07 20:13 218 查看
独立集就是指:

图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中删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息