Floyd算法

FLOYD:

floyd算法可谓是初学者当中接触过最短路径的必学的一个算法,也是很多OIer转向学习算法的第一个算法,这个算法就是——floyd。
floyd算法的经典例子就是{usaco 2.4.4Bessie Come Home回家}这道题目。典型的floyd算法,当然也可以用spfa解决。

下面解释一下floyd算法:
floyd是求一个单源最短路径,也就是一个点到其他点的距离,所以floyd的核心思想就是:求当前第i个点到第j个点的最短路径之中是否还存在一个点k,使得点i到点k,再由点k到点j的值小于当前i到j点的最短路径呢?
所以,直接上代码:
for k:=1 to n do
                for i:=1 to n do
                        for j:=1 to n do
                                if d[i,k]+d[k,j]<d[i,j] then
                                        d[i,j]:=d[i,k]+d[k,j];<span style="white-space:pre">		</span>//核心思想
当然这个算法的前提就是两点相连的权值需要初始化的时候记录,如果不想连,则权值为无限大。
 

你可能感兴趣的:(Floyd算法)