如何找到最大集团或集团号码的大小?

时间:2014-03-30 21:58:45

标签: algorithm clique

给定无向图G = G(V,E),如何在多项式时间内找到其中最大团的大小?知道边数,我可以用

对最大团体大小设置一个上限

https://cs.stackexchange.com/questions/11360/size-of-maximum-clique-given-a-fixed-amount-of-edges

,然后我可以从那个上限向下迭代到1.由于这个上限是O(sqrt(| E |)),我想我可以检查O中的最大团队大小(sqrt(| E | )* sqrt(| E |)* sqrt(| E |))时间。

有没有更有效的方法来解决这个NP完全问题?

2 个答案:

答案 0 :(得分:4)

在图表中查找最大集团是图表的集团数量,也称为最大集团问题(MCP)。这是图域中研究最深入的问题之一,并且已知是NP-Hard,因此在一般情况下没有预期找到多项式时间算法来解决它(有特殊图形配置确实有多项式时间算法)。最大集团甚至难以近似(即找到一个接近集团数的数字)。

如果您对精确的MCP算法感兴趣,过去十年中已经有了许多重要的改进,其性能提高了大约两个数量级。当前领先的算法族是分支和绑定的,并使用近似着色来计算边界。我说出最重要的一点和改进:

  • 分色(MCQ)
  • 每个子问题(MCS和BBMC)中的静态初始排序
  • 重新着色:MCS
  • 使用位串对图形和主要操作(BBMC
  • 进行编码
  • 降低到最大可满足性以改善界限(MaxSAT)
  • 选择性着色(BBMCL)

和其他人。 它实际上是科学界非常活跃的研究领域。 顶级算法目前是BBMC,MCS,我会说MaxSAT。其中可能BBMC及其变体(使用位串编码)是当前领先的通用解算器。用于BBMC的位串库是publicly available

答案 1 :(得分:1)

我正在思考一些动态编程方法,也许我想出了一些东西。

首先:找到程度很低的节点(可以在O(n)中完成)。测试他们,如果他们是任何集团的一部分,然后删除它们。带点运气"你可以将图形压缩成几个独立的组件,然后独立地解决每个组件(这要快得多)。 (要识别组件,需要O(n)时间。)

第二:对于每个组件,您可以找到尝试查找给定大小的任何clique是否有意义。怎么样?让我们说,你想要找到大小为19的集团。然后必须存在至少19个节点,至少19度。否则,这样的集团不可能存在,你不必测试它。