Floyd算法不同于Dijkstra算法的地方在于:Dijkstra算法是计算一个点到其他各个点的最短路径,如果计算所有的点到其他点的最短路径,就是把每个点都应用一次Dijkstra算法,但是Floyd算法可以一次性计算出所有的最短路径。
算法的核心思想,将图中每个点排序,v0,v1,v2...vk,...,vn-1。计算v到v’的路径:
k从0开始,将路径分为两段<v,v0>,<v0,v‘>,路径长度是两个路径长度之和,比较这个路径和已知最小路径,从而确定k不大于0的最短路径
k=1,计算k不大于1的最短路径
<v,...,v1><v1,...,v'>
k=2:以此类推
采用邻接矩阵的方法实现算法。具体可以评论区详聊。
网友评论