简单的matlab运行程序

来源:百度知道 编辑:UC知道 时间:2024/06/30 22:55:25
求下图中任意两点间的最短路 :
Matlab程序:

%floyd1.m文件

function [d,r1]=floyd1(vx,vy)
b=inf;
a=[0 2 8 1 b b b b
2 0 6 b 1 b b b
8 6 0 7 5 1 2 b
1 b 7 0 b b 9 b
b 1 5 b 0 3 b 8
b b 1 b 3 0 4 6
b b 2 9 b 4 0 3
b b b b 8 6 3 0 ];
d=a;
vx=vx+1;
vy=vy+1;
global r;
r=a;
for i=1:8
for j=1:8
d(i,j)=a(i,j);
r(i,j)=j;
k=1;
end
end
for k=1:8
for i=1:8
for j=1:8
if d(i,k)+d(k,j)<d(i,j)
d(i,j)=d(i,k)+d(k,j);
r(i,j)=k;
end

end
end
end
r1=r-1;
fun3(vx,vy);

%fun3.m文件

function fun3(vx,vy)
global r
t=r(vx,vy);
if vy==t
return
else
fun3(vx,t);
disp(t-1);
fun3(t,vy);

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [d,r1]=floyd1(vx,vy)
b=inf;
a=[0 2 8 1 b b b b
2 0 6 b 1 b b b
8 6 0 7 5 1 2 b
1 b 7 0 b b 9 b
b 1 5 b 0 3 b 8
b b 1 b 3 0 4 6
b b 2 9 b 4 0 3
b b b b 8 6 3 0 ];
d=a;
vx=vx+1;
vy=vy+1;
global r;
r=a;
for i=1:8
for j=1:8
d(i,j)=a(i,j);
r(i,j)=j;
k=1;
end
end
for k=1:8
for i=1:8
for j=1:8
if d(i,k)+d(k,j)<d(i,j)
d(i,j)=d(i,k)+d(k,j);
r(i,j)=k;
end

end
end
end
r1=r-1;
fun3(vx,vy);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%