本文主要是介绍最短路径之弗洛伊德算法(Floyd),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法。
路径矩阵
通过一个图的权值矩阵 求出它的每两点间的最短路径矩阵。
从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归的进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);
又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)
的 i 行 j 列元素便是 i 号顶点到 j 号顶点的最短路径长度,称D(n)为图的距离矩阵 ,同时还可引入一个后继节点
矩阵path来记录两点间的最短路径。采用松弛技术(松弛操作),对在i和j之间的所有其他点进行一次松弛。所以时间复杂度为O(
又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)
的 i 行 j 列元素便是 i 号顶点到 j 号顶点的最短路径长度,称D(n)为图的距离矩阵 ,同时还可引入一个后继节点
矩阵path来记录两点间的最短路径。采用松弛技术(松弛操作),对在i和j之间的所有其他点进行一次松弛。所以时间复杂度为O(
这篇关于最短路径之弗洛伊德算法(Floyd)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!