0

我有一个超过 90000 个节点的网络。我想检查它是否有 5 个或更多成员的派系(=其中每个节点都连接到该集合的所有其他节点的节点集)。NetworkX 库中是否有一个命令可以为我的网络返回所有此类集团?

我试过了

cliques = list(networkx.enumerate_all_cliques(G)) 

但由于网络的规模,运行时间是不可接受的,这就是为什么我想设置 5 个或更多成员的阈值,这有望减少运行时间,因为将考虑更少的派系。

4

1 回答 1

1

以下应该有效:

import networkx as nx

# Create a random graph.
G = nx.erdos_renyi_graph(100, .2, seed=0)

# iterate over cliques and keep only those with len(clique) >= 5
cliques = [clique for clique in nx.enumerate_all_cliques(G) if len(clique) >= 5]

根据文档enumerate_al_cliques返回一个迭代器:

返回迭代器

派系的迭代器,每个派系都是 G 中的节点列表。派系根据大小排序。

因此,使用上述解决方案,您只能记住那些拥有 5 个或更多成员的人。

于 2021-09-30T11:32:50.443 回答