clear clc A=xlsread('C:\Documents and Settings\Administrator\桌面\B\zuobiao'); C=xlsread('C:\Documents and Settings\Administrator\桌面\B\qizhibiaohao') ; %n=input('输入站点个数n=') n=100; DD=zeros(n,n)+inf; for i=1:n P=find(A(:,1)==i); leng=length(P); for j=1:leng k=P(j); m=C(k,2); DD(i,m)= sqrt( (A(i,2)-A(m,2))^2+ (A(i,3)-A(m,3))^2 ); DD(m,i)=DD(i,m); end end
function =dijkstra(D,s) %Dijkstra最短路算法Matlab程序用于求从起始点s到其它各点的最短路 %D为赋权邻接矩阵 %d为s到其它各点最短路径的长度 %DD记载了最短路径生成树 =size(D); d=inf.*ones(1,m); d(1,s)=0; dd=zeros(1,m); dd(1,s)=1; y=s; DD=zeros(m,m); DD(y,y)=1; counter=1; while length(find(dd==1))m for i=1:m if dd(i)==0 d(i)=min(d(i),d(y)+D(y,i)); end end ddd=inf; for i=1:m if dd(i)==0d(i)ddd ddd=d(i); end end yy=find(d==ddd); counter=counter+1; DD(y,yy(1,1))=counter; DD(yy(1,1),y)=counter; y=yy(1,1 dd(1,y)=1; end