找到最大独立集

时间:2014-03-11 09:37:06

标签: c++ algorithm

在给定邻接矩阵的情况下,找到无向图的最大独立集的基本天真方法是什么。它的复杂性是什么?

如果我们有3个顶点并且矩阵是:

0 1 0

1 0 1

0 1 0

此解决方案将为2,因为最大独立集包括{1,3}。

如何改善天真的方法?

我的方法:选择具有最小边数的节点并消除它的所有邻居。从其余节点中,选择边数最小的节点,然后重复这些步骤,直到覆盖整个图形 这是对的吗?

1 个答案:

答案 0 :(得分:0)

寻找最大独立集(MIS):

  

并行MIS算法使用随机化来获得并发性(Luby的图着色算法)。

     

最初,每个节点都在候选集C中。每个节点生成一个(唯一的)随机数,并将其传递给邻居。

     

如果节点数超过其所有邻居的节点数,则它加入集I。其所有邻居都已从C中删除。

     

此过程一直持续到C为空。

     

平均而言,此算法在O(log|V|)个此类步骤之后收敛。