基于matlab的floyd算法 matlab计算最短路径基于matlab的floyd算法 matlab计算最短路径
function [d,path]=floyd(a,sp,ep)
% floyd - 最短路问题
%
% Syntax: [d,path]=floyd(a,sp,ep)
%
% Inputs:
% a - 距离矩阵是指i到j之间的距离,可以是有向的
% sp - 起点的标号
% ep - 终点的标号
%
% Outputs:
% d - 最短路的距离
% path - 最短路的路径
%
a =[
...
基于matlab的floyd算法 matlab计算最短路径
function [d,path]=floyd(a,sp,ep)
% floyd - 最短路问题
%
% Syntax: [d,path]=floyd(a,sp,ep)
%
% Inputs:
% a - 距离矩阵是指i到j之间的距离,可以是有向的
% sp - 起点的标号
% ep - 终点的标号
%
% Outputs:
% d - 最短路的距离
% path - 最短路的路径
%
a =[
0 50 inf;
50 0 15 ;
Inf 15 0 ];% a(i,j),从节点i到j之间的距离
% [d,path]=floyd(a,2,5)
sp=3;
ep=1;
n=size(a,1);
D=a;
path=zeros(n,n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j; %j是i的后续点
end
end
end
for k=1:n
for i=1:n
for j=1:n
if D(i,j)>D(i,k)+D(k,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
p=[sp];
mp=sp;
for k=1:n
if mp~=ep
d=path(mp,ep);
p=[p,d];
mp=d;
end
end
d=D(sp,ep)
path=p
试计算下图的最短路径,
1. 起点C点,终点A点。
2. 起点A点,终点G点。
3. 起点D点,终点F点。
试计算下图的最短路径,
1.起点F点,终点A点。
2. 起点E点,终点C点。
本文档为【基于matlab的floyd算法 matlab计算最短路径】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。