分团问题
在计算复杂度理论中,分团问题(clique problem)是图论中的一个NP完全(NP-complete)问题。
团(clique)是一个图中两两相邻的一个顶点集,或是一个完全子图(complete subgraph),如右图中的1、2、5三个顶点。
分团问题是问一个图中是否有大小是k以上的团。任意挑出k个点,我们可以简单的判断出这k个点是不是一个团,所以这个问题属于NP。
证明这问题是NP完备,我们可以很简单的将独立顶点集问题(Independent set problem)归约成这个问题。因为存在一个大小是k以上的分团,等价于它的补图中存在一个大小是k以上的独立集。
算法
最简单的方法是用暴力法列举图中所有k个点的子集合,并检查它是不是团。在一个有V个点的图中用暴力法找大小是k的团至少要检查个子集合。
另外一个启发式的方法是先找出所有一个点的团,再慢慢合并成更大的团直到不能再合并为止。