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

如何通过循环移除节点并恢复图,存储连通性判断结果?

修正后的循环实现代码

你原代码的核心问题:

  • nx.Graph.remove_node() 方法无返回值,你赋值的 c 实际是 None,后续调用 nx.is_connected(c) 和 c.add_node() 会直接报错
  • 错误操作不存在的图对象 c,应该直接操作 testg2 本身
  • 未正确初始化存储结果的列表,错误尝试访问 stor[i](stor 是布尔值而非列表)

以下是修正后的完整代码:

import networkx as nx

# 初始化原始完全图
testg = nx.Graph()
testg.add_nodes_from([1,2,3,4])
testg.add_edges_from([(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)])

# 复制原始图用于操作
testg2 = nx.Graph()
testg2.add_nodes_from([1,2,3,4])
testg2.add_edges_from([(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)])

# 初始化存储结果的列表
connectivity_results = []
nodez = list(range(1,5))

for i in nodez:
    # 移除节点
    testg2.remove_node(i)
    # 判断连通性并存入列表
    is_conn = nx.is_connected(testg2)
    connectivity_results.append(is_conn)
    # 恢复节点和对应的边
    testg2.add_node(i)
    testg2.add_edges_from(testg.edges(i))

# 输出节点与对应连通性的映射
result_dict = dict(zip(nodez, connectivity_results))
print(result_dict)

关键说明:

  1. 直接操作目标图:所有移除、恢复操作都在testg2上执行,无需额外赋值无效对象
  2. 正确存储结果:初始化connectivity_results列表,每次将判断得到的布尔值追加进去
  3. 精准恢复图状态:借助原始图testg获取被移除节点的全部关联边,确保每次循环后testg2回到初始状态

运行代码后,会输出每个节点移除后的连通性结果,针对你的完全图测试用例,所有结果都会是True,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:25:08