【问题标题】:Correctness of algorithm to calculate maximal independent set计算最大独立集的算法的正确性
【发布时间】:2013-01-23 17:38:35
【问题描述】:

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

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

谁能告诉我这是否正确?如果不是,那为什么这种方法在计算图中的最大独立集时会出错?

【问题讨论】:

  • 你想要一个最大独立集(一个不能在不删除节点的情况下增加大小的集)还是一个最大独立集(一个size 是图中所有独立集合中最大的?)
  • 我想要最大集,而不是最大集。在第一步中,我选择节点数量最少的节点只是为了最大化输出,但我不需要最大值。我也可以选择任何随机节点
  • 这可能更适合cstheory.stackexchange.com。
  • 感谢您的澄清 - 我只是想确保我正在正确分析您描述的算法。
  • @WaleedKhancstheory 更适合 CS 中的研究级问题。这个问题非常适合 SO 或 cs.stackexchange.com。

标签: algorithm graph graph-theory


【解决方案1】:

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

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

【讨论】:

  • 我认为问题在于算法是否会找到 a 最大独立集,而不是 最大独立集。
  • 我意识到我刚才没有正确回答他的问题,编辑:)
【解决方案2】:

您所描述的将选择一个最大独立集。我们可以这样看:

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

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

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    在您阐明 cmets 的情况后,您的解决方案是正确。 更好的是,根据本文的推论 3 http://courses.engr.illinois.edu/cs598csc/sp2011/Lectures/lecture_7.pdf 您获得子集顺序的 good 近似值。 Greedy gives a 1 / (d + 1) -approximation for (unweighted) MIS in graphs of degree at most d

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2016-07-19
      相关资源
      最近更新 更多