欢迎光临本站!

最短路径搜索算法的选取

来源:技术探讨    更新时间:2019-12-20 15:46:05    编辑:老王    浏览:510

  根据对原始Dijkstra算法优化方法的论述可知,其优化途径有两个:一是对临时标记结点进行排序,二是减小永久标记结点的数量。

  对临时标记结点的排序选取堆排序方法[81。将结点最短路径值作为堆排序的关键字,采用堆排序有如下考虑:

  (1)充分利用了现有堆数据,大大降低了数据比较的频率。堆排序的主要运行时间消耗在建初始堆上,而对于Dijkstra算法来说,整个最短路径的搜索过程中进行的一次堆排序只需要建一个堆,从fni明显克服了堆排序的主要缺点,使堆排序的优势更加明显地发挥出来。

  (2)Dijkstra算法中结点最短路径值的修改总是比原来的值小。Dijkstra算法中采用小根堆即堆顶元素为关键字值最小的元素。堆中某元素的关键字(即结点的最短路径值)修改后,进行堆的重新整理操作时,只需要判断此元素是否需要和其父结点进行位置调整。所以Dijkstra算法中堆的重新整理操作要比传统堆的重新整理过程简单、高效。

  (3)堆排序只需要一个记录大小的辅助空间。快速排序需要O(109n)的辅助存储空问,而归并排宁则需要oh)的辅助存储空间。

  基于以上的讨论,对原始Dijkstra算法(算法1)、堆优化Dijkstra算法(算法2)、直线优化Dijkstra算法(算法3)、堆优化结合直线优化Dijkstra算法(算法4)的速度测试结果如表2。

最短路径搜索算法的选取

  实验数据采用全国ItI 000 000公路网,共有22 320个结点,55 772个弧段。

  操作系统:Windows 2000 Professional。

  硬件设备:CPU:Intel Pentium MMX200·内存:128M,硬盘:6。4G。

  最短路径搜索算法采用堆排序结合直线优化Dijkstra算法;临时标记结点采用堆来存储t永久标记结点的搜索采用直线优化Dijkstra算法,可进而达到从两个方面分别对Diikstra算法进行优化的目的。

评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻

评论排行榜