Floyd算法Matlab程序

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

Floyd算法Matlab程序第一种:

%floyd.m

%采用floyd算法计算图a中每对顶点最短路

%d是矩离矩阵

%r是路由矩阵

function ,d,r,=floyd(a)

n=size(a,1);

d=a;

for i=1:n

for j=1:n

r(i,j)=j;

end

end

r

for k=1:n

for i=1:n

for j=1:n

if d(i,k)+d(k,j)

d(i,j)=d(i,k)+d(k,j);

r(i,j)=r(i,k)

end

end

end

k

d

r

end

第二种:

%Floyd算法

%解决最短路径问题,是用来调用的函数头文件

%[D,path]=floyd(a)

%输入参数a是求图的带权邻接矩阵,D(i,j)表示i到j的最短距

离,path(i,j)i,j之间最短路径上顶点i的后继点

%[D,path,min1,path1]=floyd(a,i,j) %输入参数a是所求图的带权邻接矩阵,i,j起点终点,min1表示i与j最短距离,path1为最短路径function [D,path,min1,path1]=floyd(a,start,terminal)

D=a;n=size(D,1);path=zeros(n,n);

for i=1:n

for j=1:n

if D(i,j)~=inf

path(i,j)=j;

end

end

end

for k=1:n

for i=1:n

for j=1:n

if 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

if nargin==3

min1=D(start,terminal);

m(1)=start;

i=1;

path1=[ ];

while path(m(i),terminal)~=terminal k=i+1;

m(k)=path(m(i),terminal);

i=i+1;

end

m(i+1)=terminal;

path1=m;

end

相关文档
最新文档