基于matlab的floyd算法matlab计算最短路径

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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点。

相关文档
最新文档