matlab里有没有现成的floyd函数
3个回答
展开全部
最短路函数代码如下
function [D R]=floyd(a)
D=a
n=size(D,1)
for i=1:n
for j=1:n
R[i,j]=j
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,j)=D(i,k)+D(k,j)
R(i,j)=R(i,k)
end
end
end
D
R
k
end
不懂请追问,满意请采纳!
function [D R]=floyd(a)
D=a
n=size(D,1)
for i=1:n
for j=1:n
R[i,j]=j
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,j)=D(i,k)+D(k,j)
R(i,j)=R(i,k)
end
end
end
D
R
k
end
不懂请追问,满意请采纳!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你是要算n个D矩阵和S矩阵,可以用这个
function [D,S]=floyd(A);
n=size(A,1);
D=zeros(n,n,n);
D(:,:,1)=A;
D(:,:,2:n)=999999;
for m=1:n-1
for i=1:n
for j=1:n
for k=1:n
if(D(i,k,m)+D(k,j,1)<D(i,j,m+1))
D(i,j,m+1)=D(i,k,m)+D(k,j,1);
end
end
end
end
end
for i=1:n
for j=1:n
S(i,j)=min(D(i,j,:));
end
end
S
D
function [D,S]=floyd(A);
n=size(A,1);
D=zeros(n,n,n);
D(:,:,1)=A;
D(:,:,2:n)=999999;
for m=1:n-1
for i=1:n
for j=1:n
for k=1:n
if(D(i,k,m)+D(k,j,1)<D(i,j,m+1))
D(i,j,m+1)=D(i,k,m)+D(k,j,1);
end
end
end
end
end
for i=1:n
for j=1:n
S(i,j)=min(D(i,j,:));
end
end
S
D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
现成的floyd函数参见我在下面问题的回答:
http://zhidao.baidu.com/question/580920215.html?oldq=1
http://zhidao.baidu.com/question/580920215.html?oldq=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询