ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-09 20:43:55  阅读:730  来源: 互联网

标签:python graph networkx centralized


我有两个问题.

>在无向图中,我想找到最大的连通分量.
我阅读了networkX的API文档,找到了这个功能
nx.connected_component_subgraphs().但我不知道如何使用它,因为它的返回值是一个生成器,我无法得到一个最大连通组件的子图.
>和一个一样.但图表是针对性的.我想找到有向图中最大的弱连通分量.因此,我使用nx.weakly_connected_component_subgraphs(),这个函数.问题1中存在同样的问题.

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

我使用NetworkX 1.9.1.

解决方法:

NetworkX组件函数返回Python生成器.您可以使用Python列表函数在生成器中创建项列表.这是一个示例,显示并找到最大的弱连接组件.

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,graph,networkx,centralized
来源: https://codeday.me/bug/20190609/1207225.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有