首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Dijkstra算法求解地铁换乘时间最短路径

用Dijkstra算法求解地铁换乘时间最短路径
EN

Stack Overflow用户
提问于 2020-06-15 14:42:52
回答 1查看 155关注 0票数 0

我正面临着一个小技巧的问题。我需要帮助!

问题是在地铁中找到从起点到目的地的最短路径。地铁数据提供了每个节点与其线路之间所用的时间。每次换乘(换线)都需要5分钟。

我试着用Dijkstra的算法编写这个算法。Dijkstra和这个问题的主要区别是这个问题有可能改变那些已经计算的节点中的最短路径(将它们放在集合S中)。

例如,有A,B,C,D,E节点。我想找一条从A到E的最短路径。

假设A:行1,行2 B:行1 C:行1,行2 D:行2 E:行1

代码语言:javascript
运行
复制
A -> B: 2 minutes
B -> C: 2 minutes
A -> D: 1 minutes
D -> C: 2 minutes
C -> E: 2 minutes

在这种情况下,Dijkstra算法将首先接收集合S(计算的)节点A,然后是节点D,然后是节点B,然后是节点C,最后是节点E。

也就是说,Dijkstra的算法将A -> D -> C -> E显示为10分钟的最短路径,因为在节点C,传输需要5分钟。然而,实际的最短路径是6分钟的A->B->C->E,因为它不需要传输时间!

也就是说,在集合S中取E之后,Dijkstra的路径A->D->C应该修改为A->B->C。

然而,我不知道如何在编程代码中实现这个想法。我使用的是JAVA。

请帮助任何人!给我点子!!

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-06-15 15:24:28

Dijkstra运行得很好,只需要稍微修改一下边权重,当有一条边从节点uvline[u] != line[v]时,我们只需要将边的长度增加5 (transfer time)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62382732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档