第6章图

Floyd算法基本思想 (2)在vi、vj间加入顶点v2,得(vi, …, v2)和(v2, …, vj), 其中(vi, …, v2)是vi到v2 的且中间顶点号不大于1的最短路径, (v2, …, vj)是v2到vj 的且中间顶点号不大于1的最短路径,这两条路径在上一步中已求出。将(vi, …, v2, …, vj)与上一步已求出的且vi到vj 中间顶点号不大于1的最短路径比较, 取其中较短的路径作为vi到vj 的且中间顶点号不大于2的最短路径。 …… 依此类推,经过n次比较和修正,在第(n-1)步,将求得vi到vj 的且中间顶点号不大于n-1的最短路径,这必是从vi到vj的最短路径。 Floyd算法基本思想 图g中所有顶点偶对vi、vj间的最短路径长度对应一个n阶方阵D。在上述n+1步中,D的值不断变化,对应一个n阶方阵序列。 定义: n阶方阵序列:D(-1), D(0), D(1), D(2),…, D(n-1), 其中: D(-1)[i][j]=g.arcs[i][j], D(k)[i][j]=Min{D(k-1)[i][j], D(k-1)[i][k]+D(k-1)[k][j]} 0≤k≤n-1 显然,D(n-1)中为所有顶点偶对vi、vj间的最终最短路径长度。 Floyd算法 typedef SeqList VertexSet; Shortest

文档评论(0)

1亿VIP精品文档

相关文档