回顾了一下floyd算法
这个方法思想就是dp。
在最外围对每一个点依次循环,每一个点都要作为中间点将所有边松弛一遍,进行完之后第i个点和第j个点之间的最短路径就已经求出。
这个方法为什么是对的呢?
动态规划的重要特点就是,当前的结果作为前提,充分信任它,以它为基础得出后一步结果,最后得到最终结果。好像有点像数学归纳法
-
在Floyd算法中的体现就是,在轮到每一个点作为中间点的时候,他可以肯定地认为他的前任们,也就是已经作为中间点的点已经被充分考虑了
-
比如现在按顺序1,2,3...轮到点8作为中间点的轮次,他可以充分相信,他这一轮的松弛结果就是考虑1-8作为可能的中间点能产生的所有路径中最短的。
-
以此类推,所有点都轮完的一轮松弛之后,就可以求出多源最短路径了。