dijkstra,belllman-ford,spfa最短路算法
2024-10-12 03:19:56
时间复杂度对比:
Dijkstra: O(n2)
Dijkstra + 优先队列(堆优化): O(E+V∗logV)
SPFA: O(k∗E) ,k为每个节点进入队列的次数,一般小于等于2,最坏情况为O(V∗E)
BellmanFord: O(V∗E) ,可检测负圈
Floyd: O(n3) 计算每对节点之间的最短路径
结论:
① 当权值为非负时,用Dijkstra。
② 当权值有负值,且没有负圈,则用SPFA,SPFA能检测负圈,但是不能输出负圈。
③ 当权值有负值,而且可能存在负圈,则用BellmanFord,能够检测并输出负圈。
④ SPFA检测负环:当存在一个点入队大于等于V次时,则有负环。
最新文章
- 开发node桌面级应用工具:apk转化epub
- bzoj 4695: 最假女选手
- OpenGL编程指南(第七版)
- 剑指Offer面试题:3.替换空格
- 用过的正则(更新ing)
- context--command buffer
- 【C++深入浅出】设计模式学习之单例模式
- JavaScript日期时间操作
- Android应用开发中Intent的作用及使用方法
- stage.width/height和stage.stageWidth/stageHeight的区别
- CSS命名规则常用的css命名规则
- numpy C语言源代码调试(三)
- HDU-problem-1002-人类史上最大最好的希望事件-矩阵快速幂
- linux下安装nexus repository及Intellij Idea集成私有maven
- rbac组件权限按钮,菜单,可拔插
- IntelliJ IDEA 创建Web项目(全教程)
- python wsgi 简介
- SSM框架整合搭建教程
- Java第05次实验提纲(Java图形界面编程)
- DataGridView,Dataset,DataTable,DataRow等使用心得