一个著名的最贪心也最厉害的算法——Dijkstra算法( 二 )


此时distance[N]取值情况为:{distance[0]={5,1} ,  distance[1]={2,2}, distance[2]={0,-1}, distance[3]={9,0}} 。
(6)重复步骤2 , 再集合Y中找出距离起点2最近的节点 , 遍历distance[N]可知节点3距离最近 , 并将其纳入集合U中 。此时集合U={2,1,0,3} , 集合Y={} 。
(7)重复步骤3 , 以节点3为中间节点更新集合Y中节点到起点2的距离 , 此时发现集合Y为空 , 过程结束 。
最后我们获得了加入集合U的所有节点 , 因为没有节点都记录了自己的前驱节点 , 所以可以获得从起点到任意目的节点见的最短路径 。
实现代码:

一个著名的最贪心也最厉害的算法——Dijkstra算法

文章插图
 
 
求给定终点的最短路径:
一个著名的最贪心也最厉害的算法——Dijkstra算法

文章插图
 




推荐阅读