计算最大独立集的算法的正确性

时间:2013-02-08 01:39:25

标签: algorithm graph graph-theory

我试图找到无向图的最大集合,这是我用来做的算法:

1)选择边数最小的节点 2)消除它的所有邻居 3)从其余节点中选择边数最小的节点 4)重复这些步骤,直到覆盖整个图表

有人可以告诉我这是否正确?如果没有,那么为什么这个方法在图中计算最大独立集是错误的呢?

3 个答案:

答案 0 :(得分:2)

你所描述的将选择一个最大的独立集。我们可以看到如下:

  1. 这会产生一个独立的集合。通过矛盾,假设它没有。然后,必须有两个通过边连接的节点,这些节点被添加到您生成的集合中。首先选择其中一个(称为u,让另一个为v)然后当它被添加到集合中时,你将从集合中删除所有相邻节点,包括节点v。然后v不会已被添加到集合中,给出了矛盾。

  2. 这会产生一个最大的独立集。通过矛盾,假设它没有。这意味着有一些节点v可以添加到算法生成的独立集中,但未添加。由于未添加此节点,因此必须通过算法将其从图中删除。这意味着它必须与已添加到集合中的某个节点相邻。但这是不可能的,因为它意味着节点v不能被添加到生成的独立集合而不使结果不是独立集合。我们有矛盾。

  3. 希望这有帮助!

答案 1 :(得分:0)

任何图中都没有一个确定的最大独立集;例如,在3个节点上进行循环,每个节点形成最大独立集。您的算法将为您提供图表的最大独立集之一,而不保证它具有最大基数。

另一方面,在图中找到最大独立集是NP完全的(因为那问题与寻找最大集团的问题相辅相成,因此可能没有一种有效的算法。

答案 2 :(得分:0)

在您的评论澄清后,您的解决方案正确。 更好的是,根据本文的推论3 http://courses.engr.illinois.edu/cs598csc/sp2011/Lectures/lecture_7.pdf 对于子集顺序,你得到 aproximation。 Greedy gives a 1 / (d + 1) -approximation for (unweighted) MIS in graphs of degree at most d