- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
4 T3 c# ]) _2 L; \( C7 ?6 G' q, G
1 H6 e* O4 N- i, S. s1 ~: q Q4 N1 Z* ]1 v8 B n5 ^
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。$ V0 h& m% O* V7 h2 z, B! t
2 s n% r! n' M/ w. p, F
对了,我还想问最短路径生成树是什么东西??2 S2 F! _4 A5 {
2 I! N4 x& T. r* H附程序如下:1 P; ]6 j0 A2 F. I: i- F
clear;
8 n& k2 m c e+ Wclc;
) F6 G: {; }8 s8 S+ ?M=10000;' q% A9 I- @4 F l2 }: C
a(1,:)=[0,50,M,40,25,10];
$ G4 Q0 F; S ]a(2,:)=[zeros(1,2),15,20,M,25];, Z6 e/ I# e. [) d6 @
a(3,:)=[zeros(1,3),10,20,M]; Q J5 I8 r N0 E' r
a(4,:)=[zeros(1,4),10,25];
# M( x! S3 C8 {7 R& o/ i3 I, @a(5,:)=[zeros(1,5),55];0 o8 j: B) Q. p/ D G) D; ~
a(6,:)=zeros(1,6);
6 J6 R7 g) D* b6 s9 R" S: za=a+a';. g7 Z# Y( W0 _* _+ a# Z
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));/ ~' h; n$ z8 @0 X9 h" K
d(1:length(a))=M;d(1)=0;temp=1;
2 c+ D1 F. S( g" w% q7 P& ewhile sum(pb)<length(a)- O3 y& ^! U. A4 X
tb=find(pb==0);
; j( G# O# a) z/ W e3 n* O, Y d(tb)=min(d(tb),d(temp)+a(temp,tb));/ x" f1 K7 S9 ]; F* `& w
tmpb=find(d(tb)==min(d(tb)));
+ b& l- H% U8 }# |+ I! @ temp=tb(tmpb(1));
9 [, \; {- L% g. j: K pb(temp)=1;" e9 d/ Z0 M) l* S) _ b
index1=[index1,temp];" i, Z3 d/ v$ I1 J. @6 t
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
6 v- h! |( E+ o- x if length(index)>=22 E5 ]1 m: E: K( ~
index=index(1);1 k3 u" f: @1 @- L* U% _" ]! ~( \
end: R" a1 R% m* s w4 Z
index2(temp)=index;
# u+ _' P$ c8 R8 Kend
( \) n0 p3 Q9 Xd, index1, index2
. z) V: F1 |0 d* z! O/ n |
zan
|