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

时间:2010-05-10 07:59:21

标签: language-agnostic graph-theory subgraph

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

是否有现有算法?

2 个答案:

答案 0 :(得分:14)

这被称为clique problem;它很难,一般都是NP-complete,是的,有很多算法可以做到这一点。

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

来自维基百科

  

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

     

Clique问题包括:

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

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

另见

答案 1 :(得分:0)

在大小为n的图中找到k顶点子图的问题很复杂

  

O(n ^ k k ^ 2)

由于要检查n^k个子图,并且每个子图都有k^2个边。

您想要的是,找到图中的所有子图是一个NP完全问题,上面列出的Bron-Kerbosch算法对此进行了解释。