几种最短路算法对比

!> 众所周知,关于SPFA,它死了。

几种最短路算法对比:

名称 时间复杂度 优点 缺点 使用情况
Floyd-Warshall Θ(n3) 仅有的多源最短路径算法(即跑一遍Floyd能求出每个点到其它点的距离)、其核心代码就 5 行 时间复杂度过高 多源最短路、对时间复杂度没要求
Dijkstra(朴素) Θ(n2) 编码复杂度非常高、不能处理负权,即边的权值是负数的情况(跟它用的是贪心有关) 不怎么用
Dijkstra(优先队列优化) Θ(mlogm) 最快了 同朴素版 对时间复杂度有要求
Bellman-Ford Θ(nm) 我个人比较喜欢的算法,能处理负权,时间复杂度还行,而且核心代码只有 4 行 跟Dijkstra时间复杂度互有胜负,有时还是 Dijkstra赢了 稀疏图
SPFA 最坏也是 Θ(nm) 优化版Bellman-Ford 众所周知,它死了 稀疏图
Jonson Θ(nm+nmlogm) 仅有的全源最短路算法,结合了 Dijksra 和 SPFA 的优势 感觉跑多遍单源叫多源比较牵强、编码复杂度极高 不怎么常用……
BFS Θ(n+m) 思路简单 只能处理等权图或无权图 等权图/无权图

注:n 为点的个数,m 为边的个数。

posted @   worker2011  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示