数学建模社区-数学中国
标题:
求助:dijkstra的matlab程序后一段看不懂...
[打印本页]
作者:
athenaeee
时间:
2009-9-8 16:30
标题:
求助:dijkstra的matlab程序后一段看不懂...
clear;
* }4 P; I. ^; Y
clc;
* D, ?- j1 B" i- F' j
M=10000;%无穷远距离
4 V1 M6 R# B0 T
a(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: Y
a(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 {# S
pb(1:length(a))=0;pb(1)=1;%存放p,t标号信息
' y! b) v9 K0 F, z4 r* t
index1=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 Q
temp=1;%算c1到其它点的最短路
* n9 r3 O; U2 R
while 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! d
d, 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