- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。/ V+ q. Z9 r+ t( U
2 |& N3 `! u$ t) |7 m1 N1 m, G5 A' o
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。* I6 ~3 f$ w' V. e @* z; X6 ~7 \
, ~% y, j5 E% Q* W
对了,我还想问最短路径生成树是什么东西??( W1 T- g& I3 T$ k/ T
Q4 n! q2 r: u2 s附程序如下:
1 B. m* ^) s3 c% C" l+ f# z; |5 u' iclear;
2 W# t, p5 H6 G [clc;
, O' y& t h7 L; HM=10000;
8 Q2 O) h) J! T& R* M' C" Na(1,:)=[0,50,M,40,25,10];
+ D9 r/ `. w; p2 ?0 y+ Y6 u2 J! ha(2,:)=[zeros(1,2),15,20,M,25];
5 `5 ~. o9 C4 Qa(3,:)=[zeros(1,3),10,20,M];& `1 q- g( N& O7 F6 U
a(4,:)=[zeros(1,4),10,25];
4 m( ^. i: j! |( _. A4 E* ia(5,:)=[zeros(1,5),55];
9 w' J! k! G$ ?. w4 ma(6,:)=zeros(1,6);( x- M. i+ a: |
a=a+a';
, X1 h7 s o# _# p Dpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
! g) n3 i! k, p) r8 \. u# Ld(1:length(a))=M;d(1)=0;temp=1;
0 k7 K M2 M7 j$ }4 ~, fwhile sum(pb)<length(a)6 m$ u7 [" N/ I2 d# l: ]
tb=find(pb==0);
' Z4 F8 u+ p& E! y d(tb)=min(d(tb),d(temp)+a(temp,tb));
5 C& d, I7 w% ~% T3 [! f! q tmpb=find(d(tb)==min(d(tb)));
1 ~, |6 `" j- U: k K temp=tb(tmpb(1));
4 m- Z# L3 ^6 v/ T6 e+ u+ L pb(temp)=1;
9 Y3 f! O9 Y% W/ O3 S index1=[index1,temp];$ }9 @2 s8 b4 X. U& r! j) g( L
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
+ } p9 e9 n5 G6 t V if length(index)>=2
; }$ Q9 O( N9 l# P6 v7 m r index=index(1);4 e4 ?5 i( a) d# M
end; D+ k/ I7 P! E7 d. d ^2 v
index2(temp)=index;) @ E6 T& [6 b+ h% p: x8 o$ D7 o
end. J4 p; }2 `2 t
d, index1, index2 7 T9 [, M$ j0 r% c! ]
|
zan
|