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

如何基于自定义邻接矩阵Org_graph在NetworkX中计算节点最短路径

实现自定义邻接矩阵转NetworkX图并计算最短路径

没问题,你的思路完全可行!我帮你把整个流程梳理清楚,附上可直接运行的代码和细节说明:

步骤1:导入依赖库

首先确保你已经安装了numpy和networkx,如果没装的话可以用pip install numpy networkx安装。然后在代码里导入:

import numpy as np
import networkx as nx

步骤2:定义邻接矩阵并转换为NetworkX图

你给出的邻接矩阵可以直接用numpy转换成矩阵,再通过NetworkX的from_numpy_matrix方法生成图结构:

# 定义你的原始邻接矩阵
Org_graph = [
    [0, 1, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 1, 0, 0],
    [0, 0, 1, 0, 0, 1, 0],
    [0, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0, 0],
]

# 转换为numpy矩阵
org_matrix = np.matrix(Org_graph)

# 生成NetworkX有向图(默认节点是从0开始的整数索引,和你的矩阵下标对应)
Org_graph2 = nx.from_numpy_matrix(org_matrix, create_using=nx.DiGraph())

这里一定要加上create_using=nx.DiGraph(),因为你的邻接矩阵是有向图(比如节点0指向1,但1不指向0),如果不指定的话会生成无向图,完全不符合你的原始结构。

步骤3:计算指定节点间的最短路径

NetworkX提供了shortest_path和shortest_path_length两个常用函数,分别返回路径节点列表和路径长度:

示例1:计算单个节点对的最短路径

比如计算节点0到节点2的路径:

# 获取路径节点列表
path_0_to_2 = nx.shortest_path(Org_graph2, source=0, target=2)
# 获取路径长度(边的数量)
length_0_to_2 = nx.shortest_path_length(Org_graph2, source=0, target=2)

print(f"节点0到节点2的最短路径:{path_0_to_2}")
print(f"路径长度:{length_0_to_2}")

输出结果:

节点0到节点2的最短路径:[0, 1, 2]
路径长度:2

示例2:批量计算多个节点对的最短路径

如果你需要批量计算部分节点间的路径,可以用循环处理,同时捕获无路径的异常:

# 定义需要计算的节点对列表(注意节点编号范围是0-6,对应7x7矩阵)
node_pairs = [(3, 2), (4, 6), (0, 5)]

for source, target in node_pairs:
    try:
        path = nx.shortest_path(Org_graph2, source=source, target=target)
        length = nx.shortest_path_length(Org_graph2, source=source, target=target)
        print(f"节点{source}到节点{target}的最短路径:{path},长度:{length}")
    except nx.NetworkXNoPath:
        print(f"节点{source}到节点{target}之间没有可达路径")

对于你的图,节点3到2的路径是[3,4,2],长度为2;节点4到6没有路径,会触发异常提示;节点0到5也没有路径,同样会提示。

额外小提示

  • 如果你的图是无向图,只需要去掉create_using=nx.DiGraph()参数即可,默认生成无向图。
  • 如果你想可视化图结构,可以安装matplotlib后用nx.draw(Org_graph2, with_labels=True)快速查看节点连接情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:20