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

如何高效查找移除后会导致图分裂的节点对?求NetworkX优化方法

高效查找双连通图中导致分裂的节点对方案
  • 暴力枚举所有节点对的方法在10000节点的大图中完全不可行:节点对总数约5000万,每一次移除节点并计算连通分量的操作都要遍历图,时间复杂度爆炸。
  • 直接使用NetworkX内置的nx.all_node_cuts函数即可高效解决问题,该函数专门用于查找图中的最小节点割集合。对于无1-顶点割的双连通图,能让图分裂的节点对就是大小为2的节点割,只需指定参数k=2就能获取所有这类节点对。

代码示例

import networkx as nx

# 初始化钻石图示例
G = nx.diamond_graph()
# 获取所有移除后会导致图分裂的节点对
two_vertex_cuts = list(nx.all_node_cuts(G, k=2))
print(two_vertex_cuts)  # 输出: [{1, 2}]

关键说明

  • nx.all_node_cuts(G, k=2)会返回所有大小恰好为2的节点割集合,这些集合中的节点对就是目标——移除它们会使原双连通图分裂为多个连通分量。
  • 该方法基于图论中的割查找算法,时间复杂度远低于暴力枚举,在10000节点的大图中能大幅提升运行效率。
  • 如果原图的最小节点割大小大于2,说明不存在这样的节点对,函数会返回空列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:35:12