分布式算法 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中删除。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值