② 将图中一个顶点Vk 加入到S中,修改A[i][j]的值,修改方法是: A[i][j]=Min{A[i][j] , (A[i][k]+A[k][j]) } 1 算法思想 设顶点集S(初值为空),用数组A的每个元素A[i][j]保存从Vi只经过S中的顶点到达Vj的最短路径长度,其思想是: ① 初始时令S={ } , A[i][j]的赋初值方式是: Wij i≠j且vi,vj∈E, wij为弧上的权值 ∞ i≠j且vi,vj不属于E A[i][j]= 0 i =j时 * 7.7.2 每一对顶点间的最短路径 原因: 从Vj只经过S中的顶点(Vk)到达Vj的路径长度可能比原来不经过Vk的路径更短。 ③ 重复②,直到G的所有顶点都加入到S中为止。 2 算法实现 ◆ 定义二维数组Path[n][n](n为图的顶点数) ,元素Path[i][j]保存从Vi到Vj的最短路径所经过的顶点。 ◆ 若Path[i][j]=k:从Vi到Vj 经过Vk ,最短路径序列是(Vi , …, Vk , …, Vj) ,则路径子序列:(Vi , …, Vk)和(Vk , …, Vj)一定是从Vi到Vk和从Vk到Vj 的最短路径。从而可以根据Path[i][k]和Path[k][j]的值再找到该路径上所经过的其它顶点,…依此类推。 * 7.7.2 每一对顶点间的最短路径 ◆ 初始化为Path[i][j]=-1,表示从Vi到Vj 不经过任何(S中的中间)顶点。当某个顶点Vk加入到S中后使A[i][j]变小时,令Path[i][j]=k。 表7-4给出了利用Floyd算法求图7-26的带权有向图的任意一对顶点间最短路径的过程。 图7-26 带权有向图及其邻接矩阵 0 2 8 ∞ 0 4 5 ∞ 0 V1 4 8 2 V2 V0 5 * 7.7.2 每一对顶点间的最短路径 根据上述过程中Path[i][j]数组,得出: V0到V1 :最短路径是{ 0, 1 } ,路径长度是2 ; V0到V2 :最短路径是{ 0, 1, 2 } ,路径长度是6 ; V1到V0 :最短路径是{ 1, 2, 0 } ,路径长度是9 ; 表7-4 用Floyd算法求任意一对顶点间最短路径 0 2 8 ∞ 0 4 5 ∞ 0 0 2 8 ∞ 0 4 5 7 0 0 2 6 ∞ 0 4 5 7 0 0 2 6 9 0 4 5 7 0 A -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 1 -1 -1 -1 -1 0 -1 -1 -1 1 2 -1 -1 -1 0 -1 Path S { } { 0 } { 0, 1 } { 0, 1, 2 } 步骤 初态 k=0 K=1 K=2 * V1到V2 :最短路径是{ 1, 2 } ,路径长度是4 ; V2到V0 :最短路径是{ 2, 0 } ,路径长度是5 ; V2到V1 :最短路径是{ 2, 0, 1 } ,路径长度是7 ; 算法实现 int A[MAX_VEX][MAX_VEX] ; int Path[MAX_VEX][MAX_VEX] ; void Floyd_path (AdjGraph *G) { int j, k, m ; for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) { A[j][k]=G-adj[j][k] ; Path[j][k]=-1 ; } /* 各数组的初始化 */ * 7.7.2 每一对顶点间的最短路径 for ( m=0; mG-vexnum; m++) for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) if ((A[j][m]+A[m][k])A[j][k]) { A[j][k]=A[j][m]+A[m][k] ; Path[j][k]=k ; } /* 修改数组A和Path的元素值 */ for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) if (j!
您可能关注的文档
- 2015年中考物理试题汇编考点14:动能 势能 机械能及其转化.doc
- 2016_07昆山同丰路项目主题表现与会所定位意大利.ppt
- 2015年自主品牌市场总结和2016年前瞻.pptx
- 2016《一点一练》高考物理复习专题演练:专题二十电学实验(一).doc
- 2016—2017(上)教导处工作计划.doc
- 2016-2017学年北师大版必修五 1.1 正弦定理 课件(18张).ppt
- 2015年最新人教版七年级上一元一次方程销售问题课件.ppt
- 2016-2017学年第一学期九年级物理第一次月考试题.doc
- 2016 被子植物分类(单子叶植物纲).ppt
- 2016 山东临沂 家庭安全教育试卷100分.doc
- 2016北京市丰台区中考二模化学试卷及答案.doc
- 2016北京市石景山初三一模物理试题及答案.doc
- 2016-4(第四章)淀积.ppt
- 2016-2017 高考物理一轮复习强化练习:5-2+动能定理(人教新课标).doc
- 2015现代设计理论 优化设计.ppt
- 2015湘教版小学音乐六年级下电子备课教案.doc
- 2016-2017学年北师大版必修五 1.1 正弦定理 课件(54张).ppt
- 2016-2017学年高中地理 1.2 太阳对地球的影响课件.ppt
- 2016单片机实验指导书(vision1).doc
- 2016--2017学年人教版八年级物理上册1.4《测量平均速度》同步练习.doc
原创力文档

文档评论(0)