摘 要: 改进的Dijkstra算法和Floyd算法是求两点间最短距离和最短路径的最简单有效的方法。但是当图的顶点个数为上万或者几十万时,计算两点间的最短距离的时间开销将是非常巨大的。利用加权图的子图来解决这一问题。
关键词: 最短路径;加权图;子图;Dijkstra算法;Floyd算法
中图分类号:TP301.6 文献标识码:A 文章编号:1671-7597(2012)0220091-02
0 引言
交通系统中的最优路径算法等同于图论中的最短路径算法,根据不同的具体要求可以是长度最短或行驶时间最短。Dijkstra算法和Floyd算法是求解最短路径问题中最简单有效的两种算法。但是当加权图中的定点数非常大时,时间开销也会非常大。本文将讨论并解决这一问题。
1 改进的Dijkstra算法
传统Dijkstra算法是求解带权图G中从某一源点到其余各点的最短路径的一种有效算法,能够得到最优解.针对我们在公交换乘中最常需要计算的两点间的最短距离和路径,将传统的Dijkstra算法进行改进。算法的基本思想如下:输入起始节点s ,输入终点v。1)从存放图G中所有节点的集合U中找出距起始点最近的子节点;2)遍历考察这个点的子节点距离起始点的距离值,求出最小值;3)把该最小值放入集合S中,把该子节点放入集合H中,重复上述步骤直到集合U为空,或者找到终点。改进的Dijkstra算法实例分析:设加权图G(如图1):
应用改进的Dijkstra算法编程实现任意两点间的最短路径求解,例如求解图中1到7的最短路径运行程序结果为:最短路径为1 3 5 7,最短距离为9.00000。
2