%画图 % a; S; `* [' _! M2 P, y" L; l$ |$ M # Z r9 a. ^& I4 Q4 ^close; ?????? / N% @' f. O: j+ j, A0 G set(gcf,'numbertitle','off'); ?????? ) a% k f1 ~4 F$ T1 t set(gcf,'name','Dijkstra');3 L/ H. V2 L; c2 n
set(gca,'visible','off'); + B9 @. Q9 I. E6 C! N) u. g$ L axis square;2 |# x. k5 l3 B8 I M
hold on;, M1 g7 q! n, [
[+ H M3 t- Y b=linspace(0,2*pi,mx+1);$ W2 b( G" q* Q4 ~% J, A6 U- N
b1=10*sin(b);- h3 n& N* z, S* C" F! [) u1 r+ d" ]: @
b2=10*cos(b); : ~0 p/ C/ `8 ]$ z* l; g" O plot(b1,b2,'ko'); ' b W0 N6 W2 l# r4 q- y5 u4 E hh=char(49:48+mx); ; k' e2 ~, ?! x8 P$ h a for i=1:mx. n3 o: c& S0 u/ Y0 k [
text(b1(i)+0.5,b2(i),hh(i)); Q- g" O9 H* j6 g' O end;+ j7 A+ G" R9 v' z) O( y
for j=1:m 9 S- i6 s0 Z3 i( i; ^ for i=1:2 6 V/ x, f: _6 X8 w4 O5 b+ ` c1(i)=b1(map(j,i)); ! n |. `) H4 G' V c2(i)=b2(map(j,i));, V: e: b1 ~! C
end;! x9 X1 G( z# \* W3 L Q
plot(c1,c2,':'); 4 N O D3 x: S8 N4 F. G* @4 u+ H
end;* F6 ?9 s* E; K$ g
4 }/ b* E6 s0 I" y$ [. C kk=length(p);' h- o3 V1 @2 G# e
k=0;7 B/ [: s0 l% Q; n( P
for i=1:kk " X6 {6 c- A2 W: k if(p(1,i)~=0) 7 j. |) R1 C9 a; z: ~3 D/ g" h" ~ k=k+1; ( F$ z7 R' u4 b end; 1 g0 Y. o4 k$ c, z6 N9 }* s$ G, A end;- K8 i9 F2 \! ^ ?) a( c e! Y
for i=1:k$ Q* C; y) i' Q' Z% @/ L! t
d1(i)=b1(p(1,i));3 X" E" B; H& s. e& V2 b
d2(i)=b2(p(1,i)); ! C( H6 S- O* C3 t) Q! E1 u; [ h=plot(d1,d2,'r');3 |% [% G% ^6 a/ l
end; # T2 Z' T2 h5 |2 f2 `
set(h,'linewidth',2); - t7 |- m& l# u. `1 h7 i
legend(h,'粗线表示最短路');7 h, a& J# z$ }9 E% o( j
hold off* Z4 E& K. a. |. M6 G. P
这是程序的画图部分,里面的p,v,map,f分别是经过狄杰斯卡尔算法算出的最短路径,最短路径所经过的点集,输入的矩阵 3 O- U t) r) A3 L* U% lmap形如[1,2,30;2,3,34;3,4,12]