floyd算法matlab程序的几个菜鸟问题。 20
a=[02312205InfInf3506Inf1Inf6062InfInf60]n=size(a,1);D=a;path=zeros(n,n);fori=1:nforj...
a=[0 2 3 1 2
2 0 5 Inf Inf
3 5 0 6 Inf
1 Inf 6 0 6
2 Inf Inf 6 0]
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;
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,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
结果是d =
0 2 3 1 2
2 0 5 3 4
3 5 0 4 5
1 3 4 0 3
2 4 5 3 0
path =
1 2 3 4 5
1 2 3 1 1
1 2 3 1 1
1 1 1 4 1
1 1 1 1 5
k =
5
问题:1.结果path的矩阵代表什么意思?是不是意思就是说中心点选为1是最佳,另外除了第一行的12345外,其他几行的那些数字代表什么呢?(最不理解的问题)
2.结果的k=5代表什么意思呢?
3.为什么要输入两次for i=1:n,j=1:n,不能写在前面吗?
4.为什么有时候程序自动运行,有时候有要输入d,path,k等来查呢?
诚心请教,谢谢各位,好的必加分。 展开
2 0 5 Inf Inf
3 5 0 6 Inf
1 Inf 6 0 6
2 Inf Inf 6 0]
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;
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,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
结果是d =
0 2 3 1 2
2 0 5 3 4
3 5 0 4 5
1 3 4 0 3
2 4 5 3 0
path =
1 2 3 4 5
1 2 3 1 1
1 2 3 1 1
1 1 1 4 1
1 1 1 1 5
k =
5
问题:1.结果path的矩阵代表什么意思?是不是意思就是说中心点选为1是最佳,另外除了第一行的12345外,其他几行的那些数字代表什么呢?(最不理解的问题)
2.结果的k=5代表什么意思呢?
3.为什么要输入两次for i=1:n,j=1:n,不能写在前面吗?
4.为什么有时候程序自动运行,有时候有要输入d,path,k等来查呢?
诚心请教,谢谢各位,好的必加分。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询