dijkstra算法再整理

来源:互联网 发布:js获取当前网页url 编辑:程序博客网 时间:2024/06/06 21:29

dijkstra算法再整理

我好像更习惯于抓住一个点慢慢地往下磨,看起来好像适合读博士啊。
那么,最近一周一直更新dijkstra算法。目前已经实现了纯C完成的邻接矩阵形式和C++利用STL的优先队列形式。当然,能坚持这么久持续更新主要归功于交这个作业的期限又延迟了一周。但是好像很难在这个基础上把二项堆和斐波那契堆实现出来了(当然主要原因还是因为作业这个周日就要交了)。
有点困,按理说应该好好写写排错和预防处理的,但是。。。
好吧,勉强还是加了一点2333,但是更进一步地排错、鲁棒性就,,,,电脑没电写下去了。

简单来分析一下以邻接矩阵形式和STL最小优先队列形式实现dijkstra的性能比较:
不管是在Windows系统下还是在linux系统下,邻接矩阵形式总是比STL最小优先队列快一点点。
现在这个天居然已经有蚊子了,有点吵
按理说最小优先队列是对其进行了优化才对啊,那么为啥会出现越优化越慢的情况呢?
按照我的理解是:邻接矩阵以C写成,而STL是C++。在数据量(即节点数和边数)不大的情况下,单纯算法能节省的时间很少。其性能差距主要体现在语言上。C的执行速度会比STL快些,那么出现这种“少量数据下C语言邻接矩阵比STL最小优先队列快”也就说的通了。
我的源码仍旧在github上更新,两种实现形式已经完全解耦了(两种形式单独以子函数的形式写成,其余完全一致)。日后如果有机会将二项堆和斐波那契堆实现优先队列的代码加上的时候也会非常容易。

电脑没电了,打下时间戳睡觉了。晚安~
星期六, 15. 四月 2017 02:00上午

1 0
原创粉丝点击