您的位置:首页 > 其它

多源最短路径算法: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: