数学建模社区-数学中国
标题:
求助:dijkstra的matlab程序后一段看不懂...
[打印本页]
作者:
athenaeee
时间:
2009-9-8 16:30
标题:
求助:dijkstra的matlab程序后一段看不懂...
clear;
' P$ D3 A, ?" a5 J
clc;
. 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 f
a(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 U
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
. A* S$ b6 T. @2 Q' o" X/ B2 l
index1=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# n
while 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
end
9 _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