数学建模社区-数学中国
标题:
求助:dijkstra的matlab程序后一段看不懂...
[打印本页]
作者:
athenaeee
时间:
2009-9-8 16:30
标题:
求助:dijkstra的matlab程序后一段看不懂...
clear;
; J- C1 B1 b: M& D! V; Z+ @
clc;
w8 |6 Z7 ]$ s) A7 u( C& ^
M=10000;%无穷远距离
. Z$ R o$ ` g% ^/ v6 \: P" W. p1 I
a(1,:)=[0,50,M,40,25,10];
" V8 B' d7 z! P6 R7 A! ]4 [
a(2,:)=[zeros(1,2),15,20,M,25];
, C( N" ^, Y" c% D( o- C
a(3,:)=[zeros(1,3),10,20,M];
/ M$ e3 c2 Y) U: F0 y
a(4,:)=[zeros(1,4),10,25];
6 N* T+ n1 Z7 a1 S0 S! U) {5 ~
a(5,:)=[zeros(1,5),55];
3 ^5 Z* B6 j5 a {" u
a(6,:)=zeros(1,6);
" a/ J4 X+ c3 U2 M: w3 ]' U
a=a+a';%a66邻接矩阵,无向图
{8 M5 f+ r7 o- w* w
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
/ x- u0 h- B* V; e( b( K @
index1=1;%存放标号顶点顺序
3 M1 A$ R9 Z- g2 z; A
index2=ones(1,length(a));%存放始点到第i点最短通路中第i顶点前一顶点的序号
- v+ q* z+ P! G' l/ N% F
d(1:length(a))=M;d(1)=0;%存放由始点到第i点最短通路的值
0 Q7 _7 H' S! V" i6 |
temp=1;%算c1到其它点的最短路
) f* b: p, c/ A- i6 F; B' n# ~
while sum(pb)<length(a)
0 v2 L' Z& k) y* q" c# R
tb=find(pb==0);%开始算第tb个顶点的最短路
( C# Q! i# v7 J- {. k
d(tb)=min(d(tb),d(temp)+a(temp,tb));
1 ~8 H/ L$ g( A" U5 U" c X2 {6 f
tmpb=find(d(tb)==min(d(tb)));
' i9 L7 R5 A8 v7 l- o$ \ i P
temp=tb(tmpb(1));
) @5 u. h8 \! w3 A
pb(temp)=1;
; Z5 K3 G; S7 W5 i; S( o6 {" S
index1=[index1,temp];
4 K! X, }1 i) j# @! V& g* A7 g
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
6 y; Q& k# }" l8 j- x: x
if length(index)>=2
, B: x Y3 Z4 _5 Y: A
index=index(1);
1 T" Y+ l6 Q" N; Y! ^
end
& f+ p/ @7 S9 Q _# H% K, f% e
index2(temp)=index;
- k7 G* e. `0 @% q5 @* X2 Y
end
7 S4 D g/ U% U, W: {
d, index1, index2
- k# N* N9 D2 D
3 |1 B+ Y" W s
从没加注释那一行就看不太懂了,求问啊,感激不尽!
作者:
athenaeee
时间:
2009-9-8 16:31
1#
athenaeee
6 N4 Z' _- f( {: [& y7 d- L" h' }
表示的是 冒号+后括号
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5