数学建模社区-数学中国

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

作者: athenaeee    时间: 2009-9-8 16:30
标题: 求助:dijkstra的matlab程序后一段看不懂...
clear;. X" ~! U5 B2 F6 Z
clc;: p8 c( Y) q6 {/ G
M=10000;%无穷远距离/ ?, x6 o2 x1 p
a(1,:)=[0,50,M,40,25,10];2 k2 G1 v: c4 {3 I6 E- D- r
a(2,:)=[zeros(1,2),15,20,M,25];2 x, ]0 v8 }' f  ^: x9 I! b
a(3,:)=[zeros(1,3),10,20,M];
5 ^& _. o/ D/ \, r( Va(4,:)=[zeros(1,4),10,25];$ d" y+ z& v  F, |9 Q% {
a(5,:)=[zeros(1,5),55];
( \% S+ z8 d# \+ x( Za(6,:)=zeros(1,6);
, N5 E: j! @( u# j1 Sa=a+a';%a66邻接矩阵,无向图+ Z1 {% W* W* U4 r: y) \9 C4 [
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
" I( }9 O2 z) x0 p3 Nindex1=1;%存放标号顶点顺序
$ \, e, L5 ^* p- B6 Nindex2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号, K9 w  @4 _+ K# j6 [
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值
% g9 p7 @1 M2 v$ _temp=1;%算c1到其它点的最短路
4 S6 g0 Q/ n6 O) B$ |, Bwhile sum(pb)<length(a)* }% d  h0 a, C, L. ~; ^
   tb=find(pb==0);%开始算第tb个顶点的最短路
0 w0 ^9 B+ w& A# c; N! c   d(tb)=min(d(tb),d(temp)+a(temp,tb));, y, O" T* m, \
   tmpb=find(d(tb)==min(d(tb)));
/ L' Z/ t$ u3 ]5 ?  h/ x* ~5 S   temp=tb(tmpb(1));
1 y& h. }3 l5 A% z, D   pb(temp)=1;
! E. Z; z8 ^! O; ^% E   index1=[index1,temp];0 ^0 @0 o5 a8 _# y# b) s7 o
   index=index1(find(d(index1)==d(temp)-a(temp,index1)));/ J: N$ B. P: l$ _
   if length(index)>=2
0 c+ B) v( W$ J  e% k      index=index(1);
3 h. \: m) g& {: [; _* r# a   end) U  g! s8 Q0 ~) s: }5 L0 z
   index2(temp)=index;4 c8 R, @- |+ D% v2 E, X3 U& \
end
5 @# k+ w- |3 y) u' G! i; Nd, index1, index2
" H  R. a4 _/ ^( S6 n
$ F1 [6 i9 J8 D7 ^/ p: |从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者: athenaeee    时间: 2009-9-8 16:31
1# athenaeee * i4 a+ H# ?$ }# t1 O$ G6 V
表示的是  冒号+后括号




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