- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
$ G8 P. C& p/ P. u" S% t8 d. k6 h& Z! N
6 @# q# v8 U: N, e4 k9 W5 Q我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
& c! Y! f8 f- T# D# F5 Q! N/ K& }& D V+ }% @, T4 r
对了,我还想问最短路径生成树是什么东西??+ ?9 r9 ^2 @+ W9 {0 E7 Q ]5 \
2 p. p, q- V$ y. Y# c% ?# j4 A附程序如下:
& H4 c- C. g1 f M1 Xclear;: s* V5 ]8 }! ~/ P, Y7 }, \& Y$ _: F5 a
clc;
9 v* u& K/ b3 u6 [3 A' tM=10000;
6 s( h8 b j3 @ Z/ b q/ i8 va(1,:)=[0,50,M,40,25,10];. j7 F! U) p8 |* B( {6 A6 t
a(2,:)=[zeros(1,2),15,20,M,25];: C/ p$ w; e' Y
a(3,:)=[zeros(1,3),10,20,M];4 J8 ]; T7 [1 t0 F2 L( v- j- N* z
a(4,:)=[zeros(1,4),10,25];
* D' |" W1 k5 Ba(5,:)=[zeros(1,5),55];
& o8 p( J4 b, i2 @- d0 ta(6,:)=zeros(1,6);
; O! ~* P1 d. \5 N- k0 p+ V- Ha=a+a';' L Q. a3 c) q5 x1 c' r
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
' D/ Y0 |0 [: h: F3 M0 p5 Z0 _d(1:length(a))=M;d(1)=0;temp=1;0 h& O; Y4 Z' P0 m
while sum(pb)<length(a)3 S! D' |9 {! J z$ @) M
tb=find(pb==0);
. z( P9 W6 X S d(tb)=min(d(tb),d(temp)+a(temp,tb));! [2 o; t" E) P }7 h) {
tmpb=find(d(tb)==min(d(tb)));( A2 O- L" f9 @4 J5 } {3 V
temp=tb(tmpb(1));
/ u# h' T$ p0 {! W/ \( r" t+ o pb(temp)=1;
. A- B+ ^! F4 V9 ]& Q) r" x } index1=[index1,temp];( D9 e* T- Z- `1 \0 q
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
3 M4 C; A/ h( j; t& _ m if length(index)>=2
5 p- m* M, n% W. T) t6 w7 w4 ~ index=index(1);
; j, o, _) j- u G2 {3 V end
$ _2 ^' l4 ?* {4 M# H8 `6 T' k index2(temp)=index;$ m, q1 q; g) m6 ?$ N. x
end
' e& W! X% ^3 P2 o. S: hd, index1, index2
" f5 L ]: e9 f6 \" v H |
zan
|