关于MATLAB。floyd算法的求助

%floyd.m%采用floyd算法计算图a中每对顶点最短路%d是矩离矩阵%r是路由矩阵function[d,r]=floyd(a)n=size(a,1);d=a;for... %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

用matlab运行时,说a没有定义。。谁能清楚解释一下上面那段程序什么意思啊?如果我要读入矩阵,应该怎么办?
“%采用floyd算法计算图a中每对顶点最短路” a是指a图吗?如果我要读入自己的图应该怎么办??
展开
 我来答
Paradise1022
推荐于2016-05-31 · TA获得超过434个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:267万
展开全部
这个是M文件中的函数啊,只有运行在主界面并且这样运行:
floyd(a)(把a输入括号这里才行)
单独运行当然没有定义a啊

%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);%这里是不是输入错了?看不懂中间为甚么有个空格;
但总体意思是说如果从i节点先到k节点再到j节点间距离比从i直接到j要近的话就替换掉原先那条路径
r(i,j)=r(i,k)
end
end
end
k
d
r
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式