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

NetworkX图DFS遍历实现地铁站点路径查询返回None问题求助

问题排查解决方案

1. 首要问题:终点参数格式错误

你调用dfs方法时传入的终点参数为带额外双引号的"Victoria"(对应你代码里的'"Victoria"'),但图中存储的地铁站节点名称是无额外引号的Victoria,二者字符串匹配失败,导致DFS遍历完所有可达节点都找不到目标,最终返回None。
将调用代码修改为如下即可:

solution = dfs(G, 'Euston', 'Victoria')

2. 可能存在的第二个问题:有向图边缺失反向路径

你构建图时使用的是有向图nx.DiGraph(),且仅添加了从csv第一列站点指向第二列站点的单向边,但地铁线路是双向通行的,若数据中仅记录了单向的边顺序,就会出现部分路径无法通达的问题。
有两种修复方案可选:

  • 方案1:将有向图替换为无向图,适合地铁这种双向通行的场景:
    # 把原来的G = nx.DiGraph()替换为
    G = nx.Graph()
    
  • 方案2:构建边时同时添加双向边:
    edgelist = []
    for _, x in data.iterrows():
        edgelist.append((x[0],x[1],x[3]))
        edgelist.append((x[1],x[0],x[3]))
    G = nx.DiGraph()
    G.add_weighted_edges_from(edgelist)
    

3. 补充:路径提取逻辑

你当前实现的DFS返回的是最后匹配到的节点字典,需要额外回溯父节点才能得到预期的路径列表,补充以下代码即可输出路径:

def parse_path(result_node):
    path = []
    current = result_node
    while current:
        path.append(current['label'])
        current = current['parent']
    # 翻转得到从起点到终点的顺序
    return path[::-1]

# 调用示例
if solution:
    print(parse_path(solution))
else:
    print("未找到可达路径")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:05