【MATLAB】最短路径Floyd算法 | 您所在的位置:网站首页 › 最短路径问题原理 › 【MATLAB】最短路径Floyd算法 |
目录
1.Floyed算法1.1适用范围1.2算法思想1.3实例
2.代码2.1floyd函数2.2调用函数
1.Floyed算法
1.1适用范围
∙ \bullet ∙ 求每队顶点的最短路径 ∙ \bullet ∙ 有向图、无向图和混合图 1.2算法思想直接在图的带权邻接矩阵中用插入顶点的方法依次递推地构造出n个矩阵D(1),D(2)…D(n)(每次加入一个点然后更新最短路径矩阵D),D(n)是图的最短距离矩阵,同时引入一个后继点矩阵path记录两点间的最短路径。 1.3实例对于如下无向图: 实现步骤: ∙ \bullet ∙ 变量:输入变量与输出变量 输入变量含义w矩阵带权邻接矩阵start初始点terminal终止点 输出变量含义D矩阵D(i,j)表示i到j的最短路径path矩阵path(i,j)表示i到j之间的最短路径上顶点i的后继点min1start与terminal之间的最短距离path1start与terminal之间的最短路径∙ \bullet ∙ 赋初值:对所有的i、j, D ( i , j ) = w ( i , j ) , p a t h ( i , j ) = j , k = 1 ( k 表 示 加 入 的 顶 点 个 数 ) D(i,j)=w(i,j),path(i,j)=j,k=1(k表示加入的顶点个数) D(i,j)=w(i,j),path(i,j)=j,k=1(k表示加入的顶点个数) ∙ \bullet ∙ 更新D(i,j)、path(i,j),对于所有i、j,若 D ( i , k ) + D ( k , j ) < D ( i , j ) D(i,k)+D(k,j)6 ∙ \bullet ∙ 接着我们就要找 path(6,5)=5,到达终点,所以最终路径为1->3->6->5 注意:调用floyd函数的时候,同时还会输出每次插入一个顶点之后D矩阵和path矩阵的变化。 |
CopyRight 2018-2019 实验室设备网 版权所有 |