数学建模社区-数学中国

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

作者: athenaeee    时间: 2009-9-8 16:30
标题: 求助:dijkstra的matlab程序后一段看不懂...
clear;
* }4 P; I. ^; Yclc;
* D, ?- j1 B" i- F' jM=10000;%无穷远距离
4 V1 M6 R# B0 Ta(1,:)=[0,50,M,40,25,10];
2 z5 F; w$ }# [a(2,:)=[zeros(1,2),15,20,M,25];- ~6 d. E# U  m/ }2 j
a(3,:)=[zeros(1,3),10,20,M];- q( v5 m) ?) z- |0 M6 j
a(4,:)=[zeros(1,4),10,25];
9 B5 B: U7 Q& l7 `2 J: Ya(5,:)=[zeros(1,5),55];
) q, I2 V, v* w" x, \a(6,:)=zeros(1,6);* u) `8 I0 @3 y0 o5 l3 c/ j  z  n1 K
a=a+a';%a66邻接矩阵,无向图
4 u2 W# @3 X) w5 o0 {# Spb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
' y! b) v9 K0 F, z4 r* tindex1=1;%存放标号顶点顺序8 f% Y7 c% e0 Y
index2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号$ B& \5 v, ^; V" l* d5 ]5 f
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值
7 p' Y* X- d! H* M* o$ @9 Qtemp=1;%算c1到其它点的最短路
* n9 r3 O; U2 Rwhile sum(pb)<length(a)
$ R) `+ l6 w( p   tb=find(pb==0);%开始算第tb个顶点的最短路
( p4 ~/ ]3 v+ G! a( k   d(tb)=min(d(tb),d(temp)+a(temp,tb));6 U. F+ L. R9 b7 f* u% I/ e
   tmpb=find(d(tb)==min(d(tb)));8 h* ^- H; N5 C3 D2 I' s
   temp=tb(tmpb(1));
5 v  A; @5 |% r   pb(temp)=1;
  S# L% y/ D' L3 _+ t( M/ w( a   index1=[index1,temp];) ?5 H' {: }' R9 e) v4 E4 h
   index=index1(find(d(index1)==d(temp)-a(temp,index1)));
, m1 G$ B% ]/ B   if length(index)>=2
1 n9 J5 y, Y  D' {& r      index=index(1);5 u% x2 ?0 R0 }
   end. i& P" a% ^  l! |# ?) ~- o
   index2(temp)=index;, Y1 V8 y8 L, U# R8 G  a
end
6 X; n' }* k* V% Q: d! dd, index1, index2 : t3 Z; ^/ O& G) R$ k

, o+ r" G  K/ H. O9 e7 ^从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者: athenaeee    时间: 2009-9-8 16:31
1# athenaeee
) U- z. }* S$ ?: Q8 [( e; z# D5 u$ F 表示的是  冒号+后括号




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