最短路径拓扑排序等算法.PPT

最短路径拓扑排序等算法

* 假设有向图G=(V,E)采用邻接矩阵cost存储,另外设置一个二维数组A用于存放当前顶点之间的最短路径长度,分量A[i][j]表示当前顶点vi到顶点vj的最短路径长度。 弗洛伊德算法的基本思想: 递推产生一个矩阵序列A0,A1,…,Ak,…,An 其中Ak[i][j]表示从顶点vi到顶点vj的路径上所经过的顶点编号不大于k的最短路径长度。 初始时,有A-1[i][j]=cost[i][j] * 当求从顶点vi到顶点vj的路径上所经过的顶点编号不大于k+1的最短路径长度时,要分两种情况考虑: 一种情况是该路径不经过顶点编号为k+1的顶点,此时该路径长度与从顶点vi到顶点vj的路径上所经过的顶点编号不大于k的最短路径长度相同; 另一种情况是从顶点vi到顶点vj的最短路径上经过编号为k+1的顶点。 * Ak+1[i,j]=MIN(Ak[i,j],Ak[i,k+1]+Ak[k+1,j] * 该路径可分为两段: (1) 从顶点vi到顶点vk+1的最短路径; (2) 从顶点vk+1到顶点vj的最短路径。 此时最短路径长度等于这两段路径长度之和。这两种情况中的较小值,就是所要求的从顶点vi到顶点vj的路径上所经过的顶点编号不大于k+1的最短路径。 弗洛伊德思想可用如下的表达式来描述: A-1[i][j

文档评论(0)

1亿VIP精品文档

相关文档