您的位置:首页 > 其它

最短路的理解

2015-12-12 13:48 260 查看
最短路算法的几个问题

Dijkstra算法不能有负权的原因

:Dijkstra算法是一种贪心算法。每次寻找距离源最短的点。然后在这个点上面进行松弛操作.如果有负权。则这种贪心在本质上就不成立,比如A->B 10 B->C -1 A->C 15 先是A->B最短,更新C后 A->C比A->B还短。

2.Bellman-Ford算法原理解释

对于环,有正环,0环,负环。

如果有最短路。则一定没有环。正环,0环好理解,对于负环。比如C在一个负环中。A为源点。 A->C的最短路会持续不断的减少,相当于走了很多次负环(自己YY的,不知对不对.)

所以对于n个节点。只需要 n-1次松弛操作即可。但是效率比较低下,有很多无用的比较。

所以出来了spfa算法。 这是在Bellman-Ford算法上面的优化。因为只有松弛操作成功后的点才有用。

3.Flyod算法的理解、

对于k的顺序的理解

k如果不放在第一位,那么就会提早确定最短路。 比如 A-B的最短路 可以由 A->C->D->B得来,但是k放在最后面的话。C->D的大小无法顾及到。

参考博客:

最短路

spfa

多说无益,需要练习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: