- 在线时间
- 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 Z9 |' A4 r/ @$ a) I+ n; ~0 S m& U& F- _4 p7 L$ K" K, q+ w
# Q7 X8 b) G) h) k
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。6 F9 D- ]# W* m3 O
$ c$ A* ~5 h& p0 a对了,我还想问最短路径生成树是什么东西??' g8 B! x9 n( b3 J4 r! w
$ u) A, E' ~* f+ j: u
附程序如下:
0 t5 V" Y& H4 t2 Dclear;) ~; M+ W4 U, y. _
clc;+ P# A. h* E8 E: ~2 X* Q0 B7 p
M=10000;
. b2 N$ [* l+ w# H) Q) j% Fa(1,:)=[0,50,M,40,25,10];" c7 k/ ^3 H3 s$ u
a(2,:)=[zeros(1,2),15,20,M,25];8 v3 M; D' N; t O' h) {
a(3,:)=[zeros(1,3),10,20,M]; o _3 ~: m& E# k9 G" w0 t7 F; `
a(4,:)=[zeros(1,4),10,25];
) o+ L/ a3 k- ha(5,:)=[zeros(1,5),55];
' b/ l/ Q1 K6 O: Ua(6,:)=zeros(1,6);0 t, E* U; I0 H( p
a=a+a';) }; R5 P+ a: _: B( s7 W4 x& i
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));; G3 @1 V4 F+ m, U* |$ `
d(1:length(a))=M;d(1)=0;temp=1;
: E1 E0 m4 n- ]while sum(pb)<length(a)
3 l2 R8 p, v* n! u6 h8 a" I tb=find(pb==0);
7 V; g% ]& B: F) _. } d(tb)=min(d(tb),d(temp)+a(temp,tb));0 @) V. T$ T7 X9 w
tmpb=find(d(tb)==min(d(tb)));8 q0 |. I( _$ @4 X$ W$ g. Q
temp=tb(tmpb(1));! j- Z& u" M8 }
pb(temp)=1;
- L- y( L6 } A8 U+ u3 H3 x1 J" A index1=[index1,temp];
2 J# G* O _: A: Q8 s O( C index=index1(find(d(index1)==d(temp)-a(temp,index1)));) }4 o# a: n( n5 {9 u) S) b2 ^
if length(index)>=29 O& ~9 M. V$ `0 o
index=index(1);
4 T% S1 `+ N H5 E+ ?% y9 G2 q7 t, Y end$ g' K6 `: x/ ?) \! l
index2(temp)=index;9 O9 @' U! l' Z) p+ Y: p
end W' Y" k. F& h8 {. P
d, index1, index2
- M: \/ |8 V1 a! J' L |
zan
|