数学建模社区-数学中国
标题:
求助:dijkstra的matlab程序后一段看不懂...
[打印本页]
作者:
athenaeee
时间:
2009-9-8 16:30
标题:
求助:dijkstra的matlab程序后一段看不懂...
clear;
% }3 D- ]. d+ ?- ^* A( G5 W( B
clc;
% x$ [1 T: i6 w; c8 e+ [
M=10000;%无穷远距离
) u( U$ d+ I$ E* j4 f! t
a(1,:)=[0,50,M,40,25,10];
j! t- n1 X' ~/ i
a(2,:)=[zeros(1,2),15,20,M,25];
% q1 M" O0 P" _' M: c& f3 s, A
a(3,:)=[zeros(1,3),10,20,M];
- A+ D! q6 l+ s9 } |
a(4,:)=[zeros(1,4),10,25];
; z/ }# c* \2 C r
a(5,:)=[zeros(1,5),55];
$ p! b/ |, @7 a. t
a(6,:)=zeros(1,6);
1 g$ r- D3 k3 o* ~0 i" ?
a=a+a';%a66邻接矩阵,无向图
" i& W% T+ I8 R) A4 Z& J) P
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
# O+ K6 W4 ?9 d2 f
index1=1;%存放标号顶点顺序
" U j( f& r1 z8 O2 a n+ w- y
index2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号
# c$ z1 ^4 G8 w! w
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值
( W4 b, A; f @/ Q
temp=1;%算c1到其它点的最短路
. b. x5 O/ K3 [! m9 Z4 z
while sum(pb)<length(a)
& \& k3 z0 B2 ]/ [, @
tb=find(pb==0);%开始算第tb个顶点的最短路
R& \4 d" [) I$ T/ P# X+ K
d(tb)=min(d(tb),d(temp)+a(temp,tb));
& Q' K1 k4 p1 z% J
tmpb=find(d(tb)==min(d(tb)));
1 |2 L9 _" R1 u
temp=tb(tmpb(1));
; ?( e( J- {+ w! O
pb(temp)=1;
) v$ j0 j& J# U/ V
index1=[index1,temp];
$ |5 V4 @! I+ ^- ]2 e) {2 n" u
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
7 {3 V: C" E+ @5 v2 S3 E
if length(index)>=2
; Z. k2 @- F5 [4 b4 a
index=index(1);
' Y8 ~+ C/ _: x! E/ {& f
end
8 r9 R# C) Q- R' g5 _
index2(temp)=index;
% k$ r- k7 _" n* m7 ~) v6 g9 c, ~
end
+ V+ N5 r" h4 J4 L6 P6 n
d, index1, index2
) _6 E$ o4 Y9 c" m4 I% V% [+ V
. r( H h) m {3 x' ]$ J7 U
从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者:
athenaeee
时间:
2009-9-8 16:31
1#
athenaeee
& m* n( h0 {/ j/ O
表示的是 冒号+后括号
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5