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

Java 用Dijkstra算法求解有换乘时间的地铁最短路径,java,algorithm,Java,Algorithm,我正面临一个小把戏的问题。我需要帮助 问题是在地铁中找到从起点到终点的最短路径。 地铁数据提供每个节点与其线路之间的时间。每次换车都需要5分钟 我试着用Dijkstra的算法来编写这个算法。 Dijkstra和这个问题的主要区别在于,这个问题有可能改变那些已经计算的节点之间的最短路径,将它们放在集合s中 比如说,, 有A,B,C,D,E点点头。我想找到从A到E的最短路径 比方说 A:一号线,二号线 B:一号线 C:1号线,2号线 D:2号线 E:第一行 A -> B: 2 minutes

我正面临一个小把戏的问题。我需要帮助

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

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

比如说,, 有A,B,C,D,E点点头。我想找到从A到E的最短路径

比方说 A:一号线,二号线 B:一号线 C:1号线,2号线 D:2号线 E:第一行

A -> B: 2 minutes
B -> C: 2 minutes
A -> D: 1 minutes
D -> C: 2 minutes
C -> E: 2 minutes
在这种情况下,Dijkstra算法将首先采用集合缩放节点A,然后是节点D,然后是节点B,然后是节点C,然后是节点E

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

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

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

请帮助任何人!给我任何想法


谢谢

Dijkstra工作得很好,只要稍微修改一下边权重,当有一条从节点u到v的边和线[u]!=行[v]我们只需要将边缘长度增加5个传输时间