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

如何使用NetworkX获取图中的连通节点组?

获取NetworkX图中的所有连通分量

首先修正你代码里的一处错误:add_edges_from中的(7)不是合法的边定义——NetworkX要求边必须是包含两个节点的元组,单个节点无法构成边。由于节点7已经通过add_nodes_from添加到图中,直接移除这个无效项即可。

要提取图中所有两两连通的节点组(即连通分量),可以直接使用NetworkX内置的nx.connected_components()函数,它会返回图中所有连通分量的节点集合。将每个集合转换为列表后,就能得到你想要的数组格式。

完整实现代码

import networkx as nx

G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5, 6, 7])
# 修正边的定义,移除无效的(7)
G.add_edges_from([(1, 2), (1, 3), (2, 4), (5, 6)])

# 提取所有连通分量并转为列表格式
connected_components = [list(comp) for comp in nx.connected_components(G)]
print(connected_components)

运行后输出结果为:

[[1, 2, 3, 4], [5, 6], [7]]

如果需要对连通分量按节点顺序排序(比如按每个分量的首个节点升序排列),可以添加排序逻辑:

# 按分量首个节点升序排序
sorted_components = sorted(connected_components, key=lambda x: x[0])
print(sorted_components)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:07:02