- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。3 Q* e8 i$ f6 B' i3 I. t* f: s5 g
4 P: w; O& w, u! H$ ^. l: H2 t/ f6 Z2 N" H" I5 H: k1 z
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
" c, x4 t2 C# W, X% F
! d0 `+ g/ [: A0 K8 @7 l; G- U% H对了,我还想问最短路径生成树是什么东西??
7 d3 `1 v$ l0 |0 P! @. a, Q- F& D- C4 r5 H" h t
附程序如下:! a( e6 K* U! W
clear;
- o( b9 @5 u6 l8 p: r3 ]clc;% A) C6 j! m- O5 f7 ~! b
M=10000;5 I: \! m0 A/ G, `+ l3 x3 H/ Y
a(1,:)=[0,50,M,40,25,10];
# }+ p$ X) \9 B: C* n1 _* ha(2,:)=[zeros(1,2),15,20,M,25];
+ L" U r1 l) G: w* R! G+ Z, Ka(3,:)=[zeros(1,3),10,20,M];
) v7 s* E3 ?1 e8 H0 p" K4 @: x( Da(4,:)=[zeros(1,4),10,25];- Z* Z' }2 C; o' S
a(5,:)=[zeros(1,5),55];
# n( ] p" ?$ \a(6,:)=zeros(1,6);1 K. _% H: c4 V5 Q. f. \5 R9 a* X& M
a=a+a';
8 K& [, T3 w& t! u2 f2 W7 {pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
6 j2 o* |1 ?: Cd(1:length(a))=M;d(1)=0;temp=1;& r+ t( _2 R8 o o) a+ T5 h% w3 e
while sum(pb)<length(a)) P: w! H E: M6 \: n
tb=find(pb==0);% Y' n/ c8 o( S- b2 z* Y# ~
d(tb)=min(d(tb),d(temp)+a(temp,tb));
+ k- R e# H+ G* x& Y9 T tmpb=find(d(tb)==min(d(tb)));
9 T f7 M* M- L7 ?0 A5 ^6 s( o5 u temp=tb(tmpb(1));. u* R) v+ p3 g4 x
pb(temp)=1;
. t# D! p7 K" }; A index1=[index1,temp];0 g ^: i( C z, }' ]
index=index1(find(d(index1)==d(temp)-a(temp,index1)));- Z$ U3 \; e5 O: V8 Z) z! F
if length(index)>=2, _& W9 a0 B6 \* P7 g. J4 E
index=index(1);: K) Z% }3 U# j) F' P9 ?2 c* o w! G
end
; P- d! g9 V+ G- B6 T index2(temp)=index;2 T1 M0 a2 e+ K3 B, ?2 R/ L7 G
end
1 g: e4 o9 c' a9 X& {; Vd, index1, index2
! H- C2 U" W+ c |
zan
|