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

如何使用networkx库查找并列出图中的所有孤立岛屿

NetworkX 提取图中所有孤立岛屿(连通分量)方案

你提到的“孤立岛屿”对应图论中的连通分量,NetworkX 已经内置了对应功能,无需自行实现核心逻辑:

1. 适用函数说明

  • 无向图场景:使用 nx.connected_components(G),返回迭代器,每个元素为对应连通分量的节点集合
  • 有向图场景(节点可通过任意方向边连通即归为同一岛屿):使用 nx.weakly_connected_components(G)
  • 有向图场景(节点可双向可达即归为同一岛屿):使用 nx.strongly_connected_components(G)

2. 完整代码示例

import networkx as nx

# 示例:构造包含3个孤立岛屿的无向图
G = nx.Graph()
# 第一个岛屿:节点0-1-2
G.add_edges_from([(0,1), (1,2)])
# 第二个岛屿:节点3-4
G.add_edges_from([(3,4)])
# 第三个岛屿:单独节点5(孤立节点也属于独立岛屿)
G.add_node(5)

# 提取所有连通分量(即所需的所有孤立岛屿)
islands = [comp for comp in nx.connected_components(G)]
print("所有孤立岛屿的节点集合:", islands)
# 输出:所有孤立岛屿的节点集合: [{0, 1, 2}, {3, 4}, {5}]

3. 常用衍生操作

  • 统计岛屿总数:直接调用 nx.number_connected_components(G) 即可,无需手动遍历计数
  • 提取每个岛屿对应子图:配合 nx.subgraph 方法实现,示例:island_subgraphs = [G.subgraph(comp).copy() for comp in islands]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:09:04