1|0最短路径问题
最短路问题是图论中一种重要的算法,本章将包括:
1|1一.概念
1.概念
一张图中n条点和m条边,边都有权值,权值可正可负。边可能有向,可能无向,给定起点s和终点t,在所有能链接s和t的路径中,寻找所经权值最小的路径,此为最短路径问题。
2.解决方案
最容易想到的方法是暴力法,枚举所有路径,再进行大小比较,但明显不可行,一定会超时。
更好的方法即为在寻路的过程中,动态规划将要走的最短路径,此也为下文的算法思路和方法。
1|2二. Flord 算法
1.算法思想
求
对于这样的思路,我们可以用动态规划来解决,定义
由状态转移方程可知,
综上,可得出
2.代码详解
由于使用了滚动数组,所以
3.算法应用及局限性
对于
当然,对于求一组点对之间的最短路的单源最短路问题,
综上,
1|3二. Djikstra 算法
1.算法思想
对于
经过手动模拟,可以得出,若一个点
2.代码详解
3.算法特征及其局限性
当然,
1|4三. Bellman−ford 算法
1.算法思路
我们通过多次推出,来松弛(指修改到各点的最短距离)各点的最短距离,也就是说通过一步步地推出最远的点的最近路径。
对于我们进行的每一次松弛来说,对每一条线段进行遍历,看线段端点经过此线段能否比之前距起点的距离更近,若是,则更新。由于考虑回退边的存在,所以共进行
2.代码详解
注:保证在主代码之前初始化
3.算法特性
由算法思路得,
1|5四. SPFA 算法
1.算法思想
既然其是
2.代码详解
3.特征及性质
当给定的图如下图时:
1|6五.总结
这四种算法各有千秋。
| 问题 | 边权 | 算法 | 复杂度 |
|---|---|---|---|
| 非负数 | |||
| 单源最短路 | 允许有负数 | ||
| 允许有负数 | |||
| 多远最短路 | 允许有负数 |
其中,求多源最短路,则使用
__EOF__

本文链接:https://www.cnblogs.com/adsd45666/p/18263462.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
