floyd算法能不能用Lingo实现啊,求具体程序啊~要算82阶矩阵,
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/25 17:09:56
floyd算法能不能用Lingo实现啊,求具体程序啊~要算82阶矩阵,
![floyd算法能不能用Lingo实现啊,求具体程序啊~要算82阶矩阵,](/uploads/image/z/18617398-70-8.jpg?t=floyd%E7%AE%97%E6%B3%95%E8%83%BD%E4%B8%8D%E8%83%BD%E7%94%A8Lingo%E5%AE%9E%E7%8E%B0%E5%95%8A%2C%E6%B1%82%E5%85%B7%E4%BD%93%E7%A8%8B%E5%BA%8F%E5%95%8A%7E%E8%A6%81%E7%AE%9782%E9%98%B6%E7%9F%A9%E9%98%B5%2C)
用matlab啊,不过你应该可以转过来的吧.
function [w,path]=shortfloyd(d) %输入d为赋权邻接矩阵
n=length(d); %输出为距离矩阵w,和最短路径矩阵path
w=d;
path=zero(n,n);
for i=1:n
for j=1:n
if w(i,j)~=inf
path(i,j)=j
end
end
end
for k=1:n
for i=1:n
for j=1:n
if w(i,j)>w(i,k)+w(k,j)
w(i,j)=w(i,k)+w(k,j)
path(i,j)=path(i,k)
end
end
end
end
再问: matlab里面运行不出来~ Undefined function or method 'zero' for input arguments of type 'double'. Error in ==> shortfloyd at 4 path=zero(n,n); 麻烦了!
再答: 哦,是zeros(n,n)产生初始矩阵。。。
function [w,path]=shortfloyd(d) %输入d为赋权邻接矩阵
n=length(d); %输出为距离矩阵w,和最短路径矩阵path
w=d;
path=zero(n,n);
for i=1:n
for j=1:n
if w(i,j)~=inf
path(i,j)=j
end
end
end
for k=1:n
for i=1:n
for j=1:n
if w(i,j)>w(i,k)+w(k,j)
w(i,j)=w(i,k)+w(k,j)
path(i,j)=path(i,k)
end
end
end
end
再问: matlab里面运行不出来~ Undefined function or method 'zero' for input arguments of type 'double'. Error in ==> shortfloyd at 4 path=zero(n,n); 麻烦了!
再答: 哦,是zeros(n,n)产生初始矩阵。。。