解决U-turn问题的Dijkstra算法(基于实际道路交通网络)

  • Post author:
  • Post category:其他













算法介绍























Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是从始点S向外迭代,每次迭代产生当前最短路径,当迭代至终点E时算法结束。

























该算法需要设置两个集合,临时标记的节点集合OpenedList和最终标记的节点集合SettledList。OpenedList集合中记录当前访问到的节点(即当前可见节点),SettledList中记录已经求出最短路径的节点。算法基本过程如下:

























1、初始化OpenedList集合为与起始节点S直接相临接的节点T1,T2……Tn。SettledList初始化为起始节点S。

























2、判断OpenedList集合是否为空,若为空则说明找不到一条从S到E的最短路径,算法退出。否则从OpenedList集合中取出距离S最近的节点SettledNode,并将SettledNode加入SettledList集合,判断SettledNode是否是终点E,如果是则转4,如果不是终点,转3。

























3、读取和SettledNode直接相临接的节点T1’,T2’……Tn’,判断Ti’是否在OpenedList集合中,a.若在,则判断S距离Ti’的距离newMinDistance是否小于原有的MinDistance,若是,则更新S到Ti’的最短距离为newMinDistance;b.若不在,将Ti’加入到OpenedList集合中,转2。















版权声明:本文为lovefqing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。