数学建模社区-数学中国
标题:
求助:dijkstra的matlab程序后一段看不懂...
[打印本页]
作者:
athenaeee
时间:
2009-9-8 16:30
标题:
求助:dijkstra的matlab程序后一段看不懂...
clear;
0 ^$ q @: S5 K
clc;
2 t! z& C2 h( y6 Q
M=10000;%无穷远距离
) y$ B( Q8 f, n0 }- C8 S
a(1,:)=[0,50,M,40,25,10];
& ^) P$ g; A. j6 E
a(2,:)=[zeros(1,2),15,20,M,25];
- f3 D. g( Z" F
a(3,:)=[zeros(1,3),10,20,M];
9 |# y0 y0 W, k
a(4,:)=[zeros(1,4),10,25];
. J1 R1 }2 x# @! [. h
a(5,:)=[zeros(1,5),55];
+ f1 L% x/ i! [- |& V
a(6,:)=zeros(1,6);
: B9 c4 `% a( Q8 p' ]+ E
a=a+a';%a66邻接矩阵,无向图
$ |/ w' a8 a2 ^! n
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
u$ O& b; s8 t4 q/ x% ^7 `
index1=1;%存放标号顶点顺序
. B/ c- [7 x5 l
index2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号
( q; p, j+ Z- i. z5 m4 f
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值
o1 ` ~7 P) O2 d% M
temp=1;%算c1到其它点的最短路
4 \; Q; ?) c3 _9 j8 m5 t
while sum(pb)<length(a)
L) m+ }& ~/ c. n) J( j6 W
tb=find(pb==0);%开始算第tb个顶点的最短路
. W. H$ F4 Z3 a3 j( a( }
d(tb)=min(d(tb),d(temp)+a(temp,tb));
( L. n7 B, A% L! u* s2 {" ?
tmpb=find(d(tb)==min(d(tb)));
% ^9 b* {! M, A, J
temp=tb(tmpb(1));
# G) W9 `% ] a; b: N4 y- A
pb(temp)=1;
* s, n! R9 m3 z8 e
index1=[index1,temp];
4 O: n8 P4 i9 t+ k# ]
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
3 w; g0 N, }& r' B
if length(index)>=2
* k6 ]" y0 e0 o2 c) P/ Z
index=index(1);
7 q6 \% V' O7 T6 ~) [ p
end
, d1 ?: o2 P& a2 P
index2(temp)=index;
6 W1 l, c0 Z) ~0 V9 N" G' X4 Q" ?
end
# s- T. Q/ x& } v) p' }
d, index1, index2
5 ]0 `7 n4 H1 K0 j/ L$ W3 P; f
5 s3 W: a* b% M) F1 N. [) d
从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者:
athenaeee
时间:
2009-9-8 16:31
1#
athenaeee
, P2 I0 k5 e4 [* W3 q
表示的是 冒号+后括号
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5