问题 查找图表中的所有完整子图


是否有已知的算法或方法来查找图中的所有完整子图?我有一个无向的,未加权的图形,我需要找到其中的所有子图,其中子图中的每个节点都连接到子图中的每个其他节点。

是否有现有的算法?


4494
2018-05-10 07:59


起源

@bummi你在开玩笑吧? StackOverflow不仅最初是为算法设计问题而构建的,软件算法也是帮助中心“我可以询问的事情”的第二个主题。 stackoverflow.com/help/on-topic - Mantas Vidutis


答案:


这被称为 集团问题;它很难并且通常是NP-complete,是的,有很多算法可以做到这一点。

如果图形具有附加属性(例如它的二分),则问题变得相当容易并且在多项式时间内可以解决,但是否则它非常困难,并且仅对于小图形是完全可解的。

来自维基百科

在计算机科学中,集团问题指的是与在图中找到特定完整子图(“集团”)相关的任何问题,即,每对元素连接的元素集。

Clique问题包括:

  • 找到最大集团(一个顶点数量最多的集团),
  • 在加权图中找到最大权重集,
  • 列出所有最大派系(不能放大的派系)
  • 解决测试图表是否包含大于给定大小的集团的决策问题。

这些问题都很难:集团决策问题是NP完全的(Karp的21个NP完全问题之一),找到最大集团的问题既是固定参数难以处理又难以近似,并列出所有最大集团可能需要指数时间因为存在具有指数多个最大集团的图。然而,存在针对这些问题的算法,这些算法以指数时间运行或者在多项式时间内处理某些更专业的输入图。

也可以看看


14
2018-05-10 08:02



另外,看看这篇论文: portal.acm.org/citation.cfm?id=1769378 - Bolo
我们在家的观众应该注意到,本文的全文是ACM会员墙的背后 - Mantas Vidutis
嗨,NP-hard,你的意思是没有算法在多项式时间内运行吗? - SexyBeast
是的,NP-Hard意味着没有算法可以在渐近多项式时间内解决这个问题。更重要的是,这意味着也不能在多项式时间内检查算法的校正。 - divanshu


那么在大小为n的图中找到k-顶点子图的问题是复杂的

O(n ^ k k ^ 2)

既然有 n^k 要检查的子图和每个子图都有 k^2 边缘。

您要求的是,在图中查找所有子图是NP完全问题,并在上​​面列出的Bron-Kerbosch算法中进行了解释。


0
2017-08-07 15:05