gpt4 book ai didi

python - networkX 中最大的弱连接组件

转载 作者:太空狗 更新时间:2023-10-30 02:45:01 25 4
gpt4 key购买 nike

我有两个问题。

  1. 在无向图中,我想找到最大的连通分量。并且看了networkX的API文档,找到了这个函数nx.connected_component_subgraphs()。但我不知道如何使用它,因为它的返回值是一个生成器,我无法导出最大连通分量的子图。

  2. 和一个一样。但该图是有向的。我想找到有向图的最大弱连通分量。因此,我使用了nx.weakly_connected_component_subgraphs()这个函数。问题1也有同样的问题。

如何使用 networkX 中的内置函数找到无向图中的最大连通分量和有向图中的最大弱连通分量?

我使用 NetworkX 1.9.1。

最佳答案

NetworkX 组件函数返回 Python 生成器。您可以使用 Python list 函数在生成器中创建项目列表。下面是一个示例,展示了这一点并找到了最大的弱连通分量。

In [1]: import networkx as nx

In [2]: G = nx.DiGraph()

In [3]: G.add_path([1,2,3,4])

In [4]: G.add_path([10,11,12])

您可以使用例如list 将生成器转换为子图列表:

In [5]: list(nx.weakly_connected_component_subgraphs(G))
Out[5]:
[<networkx.classes.digraph.DiGraph at 0x278bc10>,
<networkx.classes.digraph.DiGraph at 0x278ba90>]

max 运算符采用一个关键参数,您可以将其设置为 Python 函数 len,该函数在每个子图上调用 len(g) 来计算节点数。所以要得到节点数最多的组件你可以这样写

In [6]: largest = max(nx.weakly_connected_component_subgraphs(G),key=len)

In [7]: largest.nodes()
Out[7]: [1, 2, 3, 4]

In [8]: largest.edges()
Out[8]: [(1, 2), (2, 3), (3, 4)]

关于python - networkX 中最大的弱连接组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com