是否有已知的算法或方法来查找图表中的所有完整子图?我有一个无向的,未加权的图形,我需要找到其中的所有子图,其中子图中的每个节点都连接到子图中的每个其他节点。
是否有现有算法?
答案 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算法对此进行了解释。