- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。2 a) T1 d6 K0 M" q& V
1 J& Q0 D! t$ E/ ?8 y
$ P M9 V7 W0 L( J, K; ]" p8 U6 |$ y, u我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
* |* U+ x0 b+ W4 R
5 ~% A' z! Q4 W6 H对了,我还想问最短路径生成树是什么东西??
+ I* a. j* K4 [ A4 R4 ^. i; T. ?+ `" x! Z7 \8 N; t m# t
附程序如下:
" g1 j/ @9 W! X% ?& Hclear;
4 q2 a* h4 z6 x3 {. N9 @clc;
% E8 {* Q& `; i3 EM=10000;/ T1 M/ l' t# s" V
a(1,:)=[0,50,M,40,25,10];
* i9 y3 O2 o, J ha(2,:)=[zeros(1,2),15,20,M,25];
: h+ M' X2 `2 J. Ya(3,:)=[zeros(1,3),10,20,M];
: z2 R; |2 W3 h& ea(4,:)=[zeros(1,4),10,25];
/ u8 Q# k$ g; a4 n- N* aa(5,:)=[zeros(1,5),55];$ R! D" E8 O0 @9 F( h M
a(6,:)=zeros(1,6);8 a9 Z; }! }$ A; y+ Y2 T
a=a+a';1 y4 A4 B, x: L# _! y
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
1 x1 o0 Q' D1 I# O* X9 rd(1:length(a))=M;d(1)=0;temp=1;
C8 d. e9 D9 w% }1 Y. k( ]while sum(pb)<length(a)
2 j& d( p3 _& e$ [; j- d tb=find(pb==0);
6 ]9 r5 v/ F- O6 U d(tb)=min(d(tb),d(temp)+a(temp,tb));
; L9 t/ H6 I$ n# u tmpb=find(d(tb)==min(d(tb))); P! S6 \% M" A0 I* c$ M6 F! {7 q
temp=tb(tmpb(1));
! z& R. K# c6 _- J$ J pb(temp)=1;/ x: m" M5 k. q. g% A8 S
index1=[index1,temp];
( j0 ?: h+ R( p2 ~% u8 b; Z index=index1(find(d(index1)==d(temp)-a(temp,index1)));5 f5 o. D4 F- l3 D8 q
if length(index)>=20 ^7 \! m# z0 U) _3 g: u
index=index(1);
! k% U. g" V) i end# y1 V" P( x) w6 C3 b
index2(temp)=index;
: T n' \: d. S. ?end
5 _& {9 T3 a& T% Md, index1, index2
& V3 ?, t# q3 ^* s |
zan
|