数学建模社区-数学中国

标题: 求助:dijkstra的matlab程序后一段看不懂... [打印本页]

作者: athenaeee    时间: 2009-9-8 16:30
标题: 求助:dijkstra的matlab程序后一段看不懂...
clear;
' P$ D3 A, ?" a5 Jclc;
. H; W, D) d2 t" h: @) @, i) `M=10000;%无穷远距离+ F9 ~0 }2 `& _4 h8 ?% }" K
a(1,:)=[0,50,M,40,25,10];
' l2 r9 q6 C" @$ Y& B& g) S0 fa(2,:)=[zeros(1,2),15,20,M,25];# @+ e# X+ F4 G' ?8 p" y
a(3,:)=[zeros(1,3),10,20,M];
) ~- h& t3 W6 B* a+ w& H, ?a(4,:)=[zeros(1,4),10,25];! r0 j" Y( Q; L) m
a(5,:)=[zeros(1,5),55];
: m; h: L5 n( Z' s. [a(6,:)=zeros(1,6);* _5 @9 H. T3 k
a=a+a';%a66邻接矩阵,无向图
9 J) U* c& Y/ ~" n, r0 Upb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
. A* S$ b6 T. @2 Q' o" X/ B2 lindex1=1;%存放标号顶点顺序( k# K7 ^+ C7 }8 A
index2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号. S6 P( i; n; l1 T; ?3 `/ o% J
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值& _! i9 W1 j+ b( g  U2 q0 M
temp=1;%算c1到其它点的最短路
) K5 \' Y% g5 q# nwhile sum(pb)<length(a)/ b2 o% v3 A+ M; Q
   tb=find(pb==0);%开始算第tb个顶点的最短路
' N" e4 U- R; r- G& V# N" |/ r   d(tb)=min(d(tb),d(temp)+a(temp,tb));
! X( A6 l' x" }% ]* y* Q   tmpb=find(d(tb)==min(d(tb)));. \, \& B" J/ I
   temp=tb(tmpb(1));- x3 `5 p: ]8 P) `' }
   pb(temp)=1;) A: a' f, X$ d
   index1=[index1,temp];
  N. |1 V3 R) b6 F" `   index=index1(find(d(index1)==d(temp)-a(temp,index1)));
: w- M' Q, n; L* V# W+ @1 t   if length(index)>=2( D( l  T8 E6 Y4 c5 H
      index=index(1);
  R% z: C/ B+ O0 n  ]; C   end
8 {  ~5 |  W( d; x5 I& _* G9 g8 B7 d   index2(temp)=index;% l3 W6 V- D& V; X1 @* B; v# V9 D) w
end9 _8 }. \3 {( }3 H! W1 Q. [- H
d, index1, index2
& y2 p! ?$ `' X6 G8 q+ q4 M
& v/ l. O0 w) [' b! ], R3 |从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者: athenaeee    时间: 2009-9-8 16:31
1# athenaeee 6 C- I8 a% Z& d9 U: \+ P. E* j% Z2 Y5 F
表示的是  冒号+后括号




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5