You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NetworkX获取节点数≥5的团?大型网络高效查询方案

解决方法

你用enumerate_all_cliques运行慢是因为这个函数会枚举所有大小的所有团,包括2节点、3节点的小团,完全没必要。NetworkX有更高效的find_cliques接口,专门返回图的所有极大团,你只要过滤出大小≥5的即可,性能会提升非常多。

代码示例

仅提取大小≥5的极大团

绝大多数场景下极大团就满足需求,代码如下:

import networkx as nx

# G为你已经构造好的网络图对象
min_size = 5
large_max_cliques = [clique for clique in nx.find_cliques(G) if len(clique) >= min_size]

提取所有大小≥5的团(含非极大团)

如果你确实需要所有符合大小要求的团,包括极大团的子团,可以基于上面得到的大尺寸极大团生成子集,比全量枚举所有团效率高得多:

import networkx as nx
from itertools import combinations

min_size = 5
all_large_cliques = []
for max_clique in nx.find_cliques(G):
    clique_len = len(max_clique)
    if clique_len < min_size:
        continue
    # 生成当前极大团下所有大小≥5的子集
    for size in range(min_size, clique_len + 1):
        all_large_cliques.extend(combinations(max_clique, size))

补充说明

  • find_cliques基于Bron–Kerbosch算法实现,仅返回无法再扩展节点的极大团,避免了大量小团子结构的重复计算,适合大图使用
  • 如果你的图是无向图且稀疏度较高,上述方法的运行速度会比enumerate_all_cliques快几个数量级

内容的提问来源于stack exchange,提问作者lonyen11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:57:04