【问题标题】:Return a list of cliques larger than n with NetworkX使用 NetworkX 返回大于 n 的集团列表
【发布时间】:2021-09-30 10:54:41
【问题描述】:

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

我试过了

cliques = list(networkx.enumerate_all_cliques(G)) 

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

【问题讨论】:

  • 如果我没记错的话,你仍然需要计算所有的派系,对吧?
  • 是的,你是对的。但即使计算时间没有办法,我如何才能只访问超过 5 个成员的集团?

标签: python networkx clique


【解决方案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]

根据documentationenumerate_al_cliques返回一个迭代器:

返回迭代器

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多