Algorithm 如何求最大团或团数的大小?

Algorithm 如何求最大团或团数的大小?,algorithm,clique,Algorithm,Clique,给定一个无向图G=G(V,E),如何在多项式时间内求出其中最大团的大小?知道了边的数目,我就可以给最大团大小设定一个上限 ,然后我可以从上限向下迭代到1。由于这个上限是O(sqrt(| E |)),我想我可以检查O(sqrt(| E |)*sqrt(| E |)*sqrt(| E |)时间内的最大团体规模 有没有更有效的方法来解决这个NP完全问题?嗯,我在考虑一些动态规划方法,也许我找到了一些解决办法 第一:查找度非常低的节点(可以在O(n)中完成)。测试他们,如果他们是任何集团的一部分,然后

给定一个无向图G=G(V,E),如何在多项式时间内求出其中最大团的大小?知道了边的数目,我就可以给最大团大小设定一个上限

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


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

嗯,我在考虑一些动态规划方法,也许我找到了一些解决办法

第一:查找度非常低的节点(可以在O(n)中完成)。测试他们,如果他们是任何集团的一部分,然后移除他们。只要有一点“运气”,你们就可以把图形分解成几个独立的组件,然后独立地解决每个组件(这要快得多)。 (为了识别部件,需要O(n)时间)


第二:对于每一个组成部分,你都可以找到寻找任何给定规模的集团是否有意义。怎样比如说,你想找一个19号的小集团。然后必须存在至少19个至少具有19度的节点。否则,这样的集团就不可能存在,你也不必对它进行测试。

好吧,我在考虑一些动态规划方法,也许我想出了一些办法

第一:查找度非常低的节点(可以在O(n)中完成)。测试他们,如果他们是任何集团的一部分,然后移除他们。只要有一点“运气”,你们就可以把图形分解成几个独立的组件,然后独立地解决每个组件(这要快得多)。 (为了识别部件,需要O(n)时间)


第二:对于每一个组成部分,你都可以找到寻找任何给定规模的集团是否有意义。怎样比如说,你想找一个19号的小集团。然后必须存在至少19个至少具有19度的节点。否则,这样的集团就不可能存在,你不必对它进行测试。

在图中找到最大的集团就是图中的集团数,也称为最大集团问题(MCP)。这是图形领域中研究最深入的问题之一,已知是NP难问题,因此在一般情况下,预计不会找到多项式时间算法来解决它(有一些特定的图形配置确实有多项式时间算法)。最大派系数甚至很难估计(即找到一个接近派系数的数字)

如果您对精确的MCP算法感兴趣,那么在过去的十年中已经有了许多重要的改进,这些改进在大约两个数量级上提高了性能。目前的主流算法是分支定界算法,使用近似着色来计算定界。我列出了最重要的改进:

  • 颜色分支(MCQ)
  • 每个子问题(MCS和BBMC)中的静态初始排序
  • 回收:MCS
  • 使用位字符串对图形和主操作进行编码()
  • 降低到最大可满足性以改进边界(MaxSAT)
  • 选择性着色(BBMCL)
等等。 这实际上是科学界一个非常活跃的研究领域。
目前排名靠前的算法是BBMC、MCS和MaxSAT。其中,BBMC及其变体(使用位字符串编码)可能是当前领先的通用解算器。用于BBMC的位字符串库为

在图中查找最大团是图的团数,也称为最大团问题(MCP)。这是图形领域中研究最深入的问题之一,已知是NP难问题,因此在一般情况下,预计不会找到多项式时间算法来解决它(有一些特定的图形配置确实有多项式时间算法)。最大派系数甚至很难估计(即找到一个接近派系数的数字)

如果您对精确的MCP算法感兴趣,那么在过去的十年中已经有了许多重要的改进,这些改进在大约两个数量级上提高了性能。目前的主流算法是分支定界算法,使用近似着色来计算定界。我列出了最重要的改进:

  • 颜色分支(MCQ)
  • 每个子问题(MCS和BBMC)中的静态初始排序
  • 回收:MCS
  • 使用位字符串对图形和主操作进行编码()
  • 降低到最大可满足性以改进边界(MaxSAT)
  • 选择性着色(BBMCL)
等等。 这实际上是科学界一个非常活跃的研究领域。
目前排名靠前的算法是BBMC、MCS和MaxSAT。其中,BBMC及其变体(使用位字符串编码)可能是当前领先的通用解算器。用于BBMC的位字符串库为

你确定你理解这个例子吗?具有20个节点且最大团等于图本身的完全图。然后会有20个团大小为19等。知道上界并不能帮助你找到真正的最大团。嗯,我能不能得到上界并以递减的程度迭代节点?或者有没有一种动态规划方法来找到最大团大小?@DavidFaux-你可以,然而,我不认为你节省了很多时间。动态规划可以解决伪多项式的问题,但我不知道一个:)这样你就不会被最广泛使用的术语弄糊涂了,最大团就是如果你添加任何顶点,它就不再是团了。最大团是具有尽可能多的顶点的团。每个最大集团都是一个最大集团,但另一个方向是不正确的。例如,以一个由三个顶点和一条边组成的图为例。孤立顶点是最大团,但不是最大团。你确定吗