基于matlab的floyd算法+matlab计算最短路径
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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点。