单源最短路-SPFA算法
来源:互联网 发布:c语言在线运行 编辑:程序博客网 时间:2024/06/01 09:14
关于单源最短路-SPFA算法
SPFA是Bellman-Ford的队列优化算法。用于稀疏图的效率是特别高的。时间复杂度O(ke),k<=2,神一样的效率,但是小心有些数据会卡SPFA卡到O(n^2)
该算法的主要思想是:把起始点压入队列,查找与队列头代表的结点相连的边进行松弛操作,如果相连的另一个结点不在队列内,则把那一个结点压入队列。当操作完队列头的结点后,弹出,继续操作下一个结点
Function Relax(begin,end)if dist[end] > dist[begin] + begin到end的权值 then dist[end] = dist[begin] + begin到end的权值Function SPFA(start)Q.push(start) //压入起始点 Q是队列while not Q.empty() foreach i in L[Q.front()] //遍历所有相连的结点 L是邻接表 if Relax(Q.front(),i) then //如果松弛成功 if not i in Q then //如果访问的结点不在队列里 Q.push(i)//加入队列 Q.pop()
从结点1开始
原图//就当有向图好了呵呵
此时队列: 1
第一步-由1到2松弛为5
此时队列: 1 2
第二步-由1到3松弛为4
此时队列: 1 2 3
第三步-弹出1
此时队列: 2 3
第四步-从2到4松弛为11
此时队列: 2 3 4
第五步-从2到5松弛为8
此时队列: 2 3 4 5
第六步-弹出2
此时队列: 3 4 5
第七步-由3到5不松弛
此时队列: 3 4 5
第八步-弹出3
此时队列: 4 5
第九步-4到6松弛为12
此时队列: 4 5 6
第十步-弹出4
此时队列: 5 6
第十一步-5到6不松弛并弹出5
此时队列:6
第十二步-弹出6
此时队列: 为空,遍历结束
所以,dist就是结点1到各个结点的最短距离
0 0
- 单源最短路-SPFA算法
- spfa 算法 (单源最短路)
- 单源最短路 SPFA 算法模板
- 单源最短路(SPFA算法)
- 邻接表(spfa算法---单源最短路)
- 【算法】单源最短路——SPFA
- 最潮最短路算法:SPFA
- 最短路--SPFA算法
- 最短路SPFA算法
- 最短路: SPFA算法
- spfa算法 最短路
- SPFA算法 求单源最短路
- SPFA最短路算法
- hdu2544 最短路(SPFA算法)
- 最短路算法(SPFA)
- SPFA算法之最短路。
- 关于最短路算法SPFA
- 最短路(SPFA)算法
- linux目录操作
- Java图片处理
- Android 事件传递总结
- C#读写config配置文件 HelpConfiger类
- LeetCode算法题目:Gas Station
- 单源最短路-SPFA算法
- security-tips
- hadoop怎么处理海量小图片
- dom04 移动盒子案例
- GET请求与POST的秘密
- 学习资料 循环结构
- 三 v4l2文档之——register and open
- C-高精度减法
- gcc编译选项