数学建模社区-数学中国
标题:
求助: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( V
a(4,:)=[zeros(1,4),10,25];
$ d" y+ z& v F, |9 Q% {
a(5,:)=[zeros(1,5),55];
( \% S+ z8 d# \+ x( Z
a(6,:)=zeros(1,6);
, N5 E: j! @( u# j1 S
a=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 N
index1=1;%存放标号顶点顺序
$ \, e, L5 ^* p- B6 N
index2=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$ |, B
while 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; N
d, 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