- 积分
- 9
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-10-22
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
%程序用来计算两点之间的最短距离
%节点矩阵A=[M,N];节点计算是按行计算
function [ZZ, L]=dis_min_two(start_point,end_point, num_ti)
M=5;
N=4;
%开始结束点数
% start_point=1;
% end_point=17;
%节点的总数目=m*n
num_total=M*N;
%需要剔除的节点数目;num_ti=[17]
% num_ti=[9 10 11 12];
start_point_true=-sum(start_point>num_ti)+start_point;
end_point_true=-sum(end_point>num_ti)+end_point;
%待权临接矩阵-W
W=zeros(num_total-length(num_ti),num_total-length(num_ti));
dis_x_y=zeros(num_total-length(num_ti),num_total-length(num_ti));
X=[];
Y=[];
for i=1:M
Y=[Y,i*ones(1,N)];
end
for i=1:M
X=[X,1:N];
end
X(num_ti)=[];
Y(num_ti)=[];
for i=1:num_total-length(num_ti)
for j=1:num_total-length(num_ti)
dis_x_y(i,j)=sqrt((X(i)-X(j))^2+(Y(i)-Y(j))^2);
end
end
W(dis_x_y==1)=1;
W(dis_x_y~=1)=inf;
W(dis_x_y==0)=0;
[L,Z]=dijkstra(W,start_point_true,end_point_true);
for j=1:length(Z)
ZZ(j)=Z(j)+sum(Z(j)>=num_ti);
if (sum(ZZ(j)==num_ti))
ZZ(j)=ZZ(j)+1;
end
end
for jj=2:length(ZZ)
if(ZZ(jj)==ZZ(jj-1))
ZZ(jj)=ZZ(jj)+1;
end
end
end
里面有一些是学习的注释,希望大神更加详细地帮忙解释一下,我是初学者,渴望得到大神的指导,非常感谢!!!
|
|