多源最短路径算法:Floyd算法
2020-05-04 11:25
344 查看
## 前言
由于本人太菜,这里不讨论Floyd的正确性。
## 简介
多源最短路径,解决的是求从图中任意两点之间的最短路径的问题。
## 分析
代码短小精悍,主要代码只有四行,直接放上:
```cpp
for(int k=1;kj和i->j作比较吗,如果i->a->b->j比i->k->j更短呢?
这时候,就要回顾一下我们的```dis```数组的含义了。```dis[i][j]```只表示点i到点j的**最短路径**的长度,**并不是**i->j的**路径**的长度。也就是说,我们不关心是怎么从i走到j的(可能是i->a->b->j,也可能是i->c->j),但是我们只想知道从i到j最短需要走多长,其实这就是dp(动态规划)的想法了。
你可能会说:
> 如果到不了呢??那还怎么算?
这就涉及到初始化的问题了。
由于是**最短**路径问题,所以如果到不了,我们可以将```dis[i][j]```的值设为```inf```(无穷大)。
如果能从节点i直接走到节点j(这里是直接走到,就是i,j有一条边相连),就可以把```dis[i][j]```设为这条边的权值。
在重新回顾一下Floyd的三重循环:
```cpp
for(int k=1;k
相关文章推荐
- 无权图单源最短路径算法和有权图单源最短路径算法(用到Dijkstra算法)和多源最短路径算法(用到Floyd算法)
- 算法基础 - 多源点最短路径(Floyd算法)
- Floyd算法--多源最短路径
- 最短路径算法之一——Floyd算法
- “chaos”的算法--之Floyd算法详解(求最短路径)
- 经典算法之Floyd算法(求图中任意一对顶点间的最短路径)
- Dijkstra算法和Floyd算法简介(最短路径算法)
- Dijkstra [迪杰斯特拉]算法思路(求单点到其他每个点的各个最短路径)Floyd算法:任意两点间最短距离
- Floyd 算法求多源最短路径
- 多源最短路径( Floyd算法)JAVA实现
- 多源有权图的最短路径 floyd算法(动态规划能解决负权边)7.1.3
- folyd 算法模板 计算多源最短路径 效率 n的三次方
- Floyd 算法求多源最短路径
- 数据结构与算法15:单源最短路径弗洛伊德Floyd算法
- 最短路径算法正确性和操作性闲杂谈-Dijkstra&Floyd算法
- 多源最短路径 Floyd 算法(有向图) C实现 ~
- 加权有向图----多源最短路径问题(Floyd算法)
- 6.3.3 最短路径算法--Dijkstra算法,Bellmanford算法,Floyd算法,Johnson算法
- Floyd算法:用动态规划求解多源(全源)最短路径
- 最短路径Dijkstar算法和Floyd算法详解(c语言版)