说明
我想从无向图数据集中(最好在Python中)以节点组的形式识别并获取n个大小的群集。目前,我在自己的舒适和知识领域之外处于困境,所以我认为值得在这里与感兴趣的人联系。
这里的集群的特征是一组节点都通过(非定向)边缘互连。出于简化原因,可以考虑所有边缘权重,权重=1。而且,也没有在节点或边缘内存储的其他信息。
下图说明了数据结构和依赖性
图形方案
为此,我正在努力寻找一种解决方案,该解决方案可以自动检测完全互连的节点集,如下所示:
预期的群集结果
应动态识别群集大小并始终考虑互连节点的最大数量(例如,n1和n2不视为自己的群集,因为n3与它们两个都有联系)。
方法
我尝试通过强连接组件的概念解决此问题,但是由于所有节点之间的连接都不是定向的,因此它似乎无法提供所需的输出。 我也尝试过以矩阵形式解决此问题,如下所示:
图形作为矩阵
但是我无法采用一种优雅的解决方案,该解决方案没有采用使用遍历索引的嵌套循环的不可扩展方法。
是否有人对如何解决这个问题有一个想法,或者甚至以我可以定位的可共享解决方案对此进行了优化? 非常感谢!
答案 0 :(得分:0)
集群的正确命名为complete subgraph。您的问题称为clique problem。 Python最好的图形处理库之一-networkx-有多种算法可以解决此问题: networkx cliques
此功能可以解决您的问题:networkx.algorithms.clique.enumerate_all_cliques
您应该将图形转换为networkx格式,并使用这些算法进行查找。