寻找包含某个顶点的最大集团

时间:2017-06-21 23:08:46

标签: python algorithm clique

我想在连接图中找到包含某些顶点的最大集团。 在wiki中,它说贪婪的搜索可以找到最大的集团。但是,这不能确保您找到最大的集团IMO。例如, enter image description here

如果我想找到包含A的最大集团,并且我通过贪婪搜索来做这件事,我可能最终找到(A,B),这比另一个集团(A,C,D)小。

我提出了一种避免较小派系的天真方法:首先找到与起点相邻的所有顶点,然后对于每个顶点(让我们称之为x),计算x不是多少个其他顶点毗邻。在此之后,删除与大多数顶点不相邻的顶点,并检查其余顶点是否形成一个派系。如果没有,请重复该过程,直到其余部分形成一个集团。

我知道这是一个愚蠢的问题,但如果有人能告诉我这种方法是否正确,我会非常感激。

1 个答案:

答案 0 :(得分:0)

枚举图表中的所有最大派系,然后检查 - 它们是否包含给定的顶点或不包含。

最大集团枚举是 NP-hard 问题,也就是说,我们目前还不知道解决它的有效方法。我已经尝试了MACE (MAximal Clique Enumerater, ver. 2.2,它对我来说效果很好(它在有数千个顶点的图形上工作)。您可以在相应的article中查看详细信息。

EDIT 如果您只想检查最大集团是否包含顶点,您可以尝试cliquer来查找最大集团。