Floyd算法matlab程序问题

functionFloyd(w,router_direction,MAX)%x为此图的距离矩阵%router_direction为路由类型:0为前向路由;非0为回溯路由%... function Floyd(w,router_direction,MAX)   %x为此图的距离矩阵   
%router_direction为路由类型:0为前向路由;非0为回溯路由   
%MAX是数据输入时的∞的实际值   
len=length(w);   
flag=zeros(1,len);   %根据路由类型初始化路由表   
R=zeros(len,len);   
for i=1:len   
if router_direction==0%前向路由   
R(:,i)=ones(len,1)*i;   
else %回溯路由   
R(i,:)=ones(len,1)*i;   
end   R(i,i)=0;   
end   
disp('');   
disp('w(0)');   
dispit(w,0);   
disp('R(0)');   
dispit(R,1);   %处理端点有权的问题   
for i=1:len   tmp=w(i,i)/2;   
if tmp~=0   w(i,:)=w(i,:)+tmp;   
w(:,i)=w(:,i)+tmp;   
flag(i)=1;   
w(i,i)=0;   
end   
end   %Floyd算法具体实现过程   
for i=1:len   
for j=1:len   
if j==i || w(j,i)==MAX   continue;   
end   for k=1:len   if k==i || w(j,i)==MAX   continue;   
end   if w(j,i)+w(i,k)<w(j,k) %Floyd算法核心代码   
w(j,k)=w(j,i)+w(i,k);   
if router_direction==0%前向路由   
R(j,k)=R(j,i);   else %回溯路由   
R(j,k)=R(i,k);   
end   
end   
end   
end   %显示每次的计算结果   
disp(['w(',num2str(i),')'])   dispit(w,0);   
disp(['R(',num2str(i),')'])   dispit(R,1);   
end   %中心和中点的确定   
[Center,index]=min(max(w'));   
disp(['中心是V',num2str(index)]);   
[Middle,index]=min(sum(w'));   
disp(['中点是V',num2str(index)]);   
end   
function dispit(x,flag)   %x:需要显示的矩阵  
%flag:为0时表示显示w矩阵,非0时表示显示R矩阵   
len=length(x);   
s=[];   
for j=1:len   
if flag==0   
s=[s sprintf('%5.2f\t',x(j,:))];   
else   s=[s sprintf('%d\t',x(j,:))];   
end   s=[s sprintf('\n')];   
end   disp(s);   
disp('---------------------------------------------------');   
end   

报错为:Error: File: D:\MATLAB7\work\Floyd.m Line: 1 Column: 40
麻烦高手帮忙看看是哪的问题!
展开
 我来答
丑巍然iL
2011-12-12
知道答主
回答量:5
采纳率:0%
帮助的人:6.2万
展开全部
看下matlab help 如果不行 联系我
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式