这里通过Dijkstra算法实现求最短路径。
问题描述:一条环线地铁线路A-B-C-D-E-F以及一条直线地铁线路J-F-G-C-I。其中F和C是换乘车站,当我任意输入一个起始车站以及终点站,求出最短的乘车路线。
问题分析:其实就是在无向图中求两个节点间的最短路径。
思路:Dijkstra算法步骤如下
1:遍历所有节点找到未访问过的节点中累积权值(其实就是从源节点到当前节点的路径值和)最小的(设为A)。
2:遍历该节点所有可达边(连通到目标节点B),如果节点A累积权值加可达边权值小于目标节点B自身的累积权值,则对目标节点B进行更新。
3:将节点A设定为已访问。