最短路径算法大讨论!!

xiaolinxianju 2010-09-20 10:55:22
加精
目前我知道的最短路径算法只有DIJKSTRA算法跟A*算法,算是菜鸟了。前段时间本人优化了下最短路径算法,效率大大提升。不知道DIJKSTRA算法能否算大数据量网络的最短路径。

算大数据量网络最短路径的算法都有哪些?效率如何?

欢迎各位高手进来讨论一二,让我们学习一下!顺带散分~
...全文
9405 233 打赏 收藏 转发到动态 举报
写回复
用AI写文章
233 条回复
切换为时间正序
请发表友善的回复…
发表回复
pepsl_412 2013-03-19
  • 打赏
  • 举报
回复
mark一下
灰灰君呀 2012-12-18
  • 打赏
  • 举报
回复
帮顶一哈!原来都知道怎么用的,现在忘光了。
noWen 2012-12-13
  • 打赏
  • 举报
回复
Mark~高哥神贴~留名~~嘿嘿~~~
依文依叶 2011-11-24
  • 打赏
  • 举报
回复
今天还在学Dijkstra算法,没有考虑时间问题。
xiaolinxianju 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 228 楼 juliahappy 的回复:]
论文正好是这个题目

我测试的50万点,100多万条边的平均dij搜寻时间都在1秒内,进行预处理大幅减少搜索空间后基本平均还能加快6-10倍

我用的是自己的pc机, e7600,4m内存,ubuntu下测试
[/Quote]
楼上论文是只毕业论文吗?可以分享一下吗?有机会想跟你交流一下最短路径效率方面的一些东西
juliahappy 2011-08-22
  • 打赏
  • 举报
回复
论文正好是这个题目

我测试的50万点,100多万条边的平均dij搜寻时间都在1秒内,进行预处理大幅减少搜索空间后基本平均还能加快6-10倍

我用的是自己的pc机, e7600,4m内存,ubuntu下测试
yangyiming0516 2011-03-23
  • 打赏
  • 举报
回复
我是高中搞竞赛的,从竞赛的角度来说的话,bellman-Ford时间复杂度太高,SPFA虽然很快但是不稳定,Dijstra+堆是最稳定的但是编程复杂度太高。一般竞赛时为追求稳定使用最后者,平时SPFA表现极好。
cwbcwb505 2011-01-28
  • 打赏
  • 举报
回复
哈哈,有没有A*算法的啊?贴出来看看
xiaolinxianju 2010-11-09
  • 打赏
  • 举报
回复
感谢各位的参与和讨论,我获益良多!!谢谢!!
xcxxu 2010-10-10
  • 打赏
  • 举报
回复
顶!!!
qdrnocking 2010-10-10
  • 打赏
  • 举报
回复
现在在面对多节点的情况下,像D算法和A*算法都有些明显的不足,就是算法的时间复杂度会随着节点的数量的增多明显增加,这在很多论文中都有详细的描述,目前比较好的方法就是使用智能算法,如:遗传算法、蚂蚁群算法都可以解决最短路径等问题的。
qyxqyxqyx 2010-10-10
  • 打赏
  • 举报
回复
学习软件工程确实有很多值得深入思考的地方,有时思考到发愣,唉,没分用了,好惨啊,特此回帖
lzsdc 2010-10-10
  • 打赏
  • 举报
回复
我知道cisco路由器用的是Bellman-ford。对于稀疏图首选。现在稠密图的情况很少。而且Bellman-ford的代码长度远比Dij短。
zq328jlu 2010-10-09
  • 打赏
  • 举报
回复
看不懂,看热闹,回头自己研究一下,呵!
mehere8 2010-10-08
  • 打赏
  • 举报
回复
take a look
flyskytoday 2010-10-08
  • 打赏
  • 举报
回复
这个貌似不错啊~~
pcevil 2010-10-08
  • 打赏
  • 举报
回复
学习,收藏
posa888 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 power721 的回复:]
Floyd:求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。

Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度O(V^2)。可以用堆优化。

Bellman-Ford:求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(VE)。

SPFA:是Bellman-Ford的队列优化,时效性相对好,时……
[/Quote]

15楼讲的可以,再加上A*等和各种变形就差不多了,最短路不得不说说网络流中的最小费用流啊!
wongfunny 2010-10-06
  • 打赏
  • 举报
回复
.............
yu182035045 2010-10-06
  • 打赏
  • 举报
回复
我了个去。。

最短路有基于贪心的Dijkstra,基于动态规划的floyed,基于三角不等式松弛技术的bellman-Ford

还有现在红的发紫的bellman-Ford的队列优化SPFA

SPFA在分层图上比较慢,但是有两个相当著名的优化LLL和SLF,不过貌似现在流行卡SPFA

再然后是dijkstra的堆优化,用二叉堆,二项堆或者斐波那契都可以,不过斐波那契编写复杂度极高,C++里也没有相应的库,所以我一般就写二叉堆仂。。
加载更多回复(191)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧