- 在线时间
- 30 小时
- 最后登录
- 2014-2-8
- 注册时间
- 2012-11-24
- 听众数
- 7
- 收听数
- 0
- 能力
- 0 分
- 体力
- 334 点
- 威望
- 0 点
- 阅读权限
- 30
- 积分
- 140
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 94
- 主题
- 6
- 精华
- 0
- 分享
- 0
- 好友
- 18
升级   20% TA的每日心情 | 郁闷 2014-2-7 13:28 |
|---|
签到天数: 47 天 [LV.5]常住居民I
- 自我介绍
- 好好学习,天天向上。
 |
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。" a) I! l! Y6 n8 T% {
3 U0 z' D% N- ~( W6 M
) ^) I5 T9 k) z' N2 Y我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
: ^) \* C+ j1 B
) g. I0 ?$ R7 `对了,我还想问最短路径生成树是什么东西?? v( C! M- Z) ]8 W X+ g
9 ]% C& K( [# P4 |; L: s& |% b附程序如下:
8 w- _) J) W, N5 iclear;
/ U- ~9 G8 _" j; g, Hclc;
( F/ H6 H8 {/ {( z D' |+ DM=10000;! p/ _. b b' Z1 {2 I' f0 q
a(1,:)=[0,50,M,40,25,10];8 l3 t! x* f/ B7 e3 R
a(2,:)=[zeros(1,2),15,20,M,25];
; H, P7 ~7 l" ]. v8 \- pa(3,:)=[zeros(1,3),10,20,M];
) a% s6 d. G0 T8 G5 l3 k8 fa(4,:)=[zeros(1,4),10,25];" `( S: y6 C9 D5 h1 t1 f. E3 v- ^
a(5,:)=[zeros(1,5),55];
1 ?4 }2 J0 A( W+ s1 i3 @a(6,:)=zeros(1,6);
% G. m+ H- A* C4 K: q& U, Ra=a+a';
$ R% j0 t3 j+ i, {4 c, H+ gpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
X) b; a W0 ^# Md(1:length(a))=M;d(1)=0;temp=1;
" C2 I- T- l; ?6 Y% L. J$ Q+ d a' i6 cwhile sum(pb)<length(a)' W& A1 D& Q# {6 H4 W z
tb=find(pb==0);# B7 y# ^& w2 u2 \& D2 C0 a- i
d(tb)=min(d(tb),d(temp)+a(temp,tb));) m6 c1 n+ | b" P# Y1 [/ y9 |
tmpb=find(d(tb)==min(d(tb)));2 W: x7 n8 d0 ~3 d4 ^+ y/ K
temp=tb(tmpb(1));
+ | a( s4 t6 y pb(temp)=1;, s. W. l7 {) `) a+ }; t" p
index1=[index1,temp];
* T$ E I1 X2 X% G& B- u+ w index=index1(find(d(index1)==d(temp)-a(temp,index1)));
7 @' o6 L3 o8 E if length(index)>=20 c3 } [ S9 c) s0 R/ `4 _
index=index(1);
( O8 t6 Q. D+ z7 L& g9 T0 a end4 g5 H% i6 Y H$ f1 q
index2(temp)=index;: Q5 Y( r5 \% p/ a% }
end, j) @, h# t0 ]0 d
d, index1, index2 ' `" w( N$ a- c! T
|
zan
|