- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。1 a. v, t+ [, a& T/ ~4 w
" u! n. c2 O+ l O( I J- {1 K: @5 r" H: P b, z8 F
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
4 S9 C7 U* K$ v
2 Z+ Y% q. j( k; `6 u对了,我还想问最短路径生成树是什么东西??4 _+ z) J% v! [& M4 H9 r! F0 }0 V
2 T8 K+ k8 O; m( T; w7 f附程序如下:
: c/ S' ] N, p8 Z! o6 ~8 tclear;
# t x, Y1 K% i, W) y& V( uclc;1 _/ c1 Y, l$ f) N/ u& v
M=10000;$ @ L( r Z" g# K# k; \4 l) u: i
a(1,:)=[0,50,M,40,25,10];& S7 d/ H- a( y8 q9 [. j( b
a(2,:)=[zeros(1,2),15,20,M,25];
1 I) n8 K5 i* X- ^a(3,:)=[zeros(1,3),10,20,M];6 w7 l5 E4 Z+ L" o2 \+ t
a(4,:)=[zeros(1,4),10,25];# n! L Y) b! \$ G
a(5,:)=[zeros(1,5),55];8 F# t' I* D2 z
a(6,:)=zeros(1,6);
& c- b' B" b) E* j# u/ wa=a+a';
/ [+ v5 J0 ?! L9 v3 v8 T7 W. ppb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));* R8 }3 I! N2 ^' P3 C! d% }
d(1:length(a))=M;d(1)=0;temp=1;: I2 n, f1 _. y2 b9 I6 S8 z
while sum(pb)<length(a)
. m7 S! D' B) X/ F tb=find(pb==0);& a6 U% y, u: Z+ Z
d(tb)=min(d(tb),d(temp)+a(temp,tb));- h/ s4 l6 D% \( T# N! b6 s
tmpb=find(d(tb)==min(d(tb)));
" S, m2 b* R8 s" ]8 D temp=tb(tmpb(1));
M0 f6 p. J+ c+ B) u. o" t pb(temp)=1;
$ v( M. u; j0 r2 _+ P index1=[index1,temp];
. u+ Y) p; X& Q index=index1(find(d(index1)==d(temp)-a(temp,index1)));. o& r8 S# f' j2 d2 ]/ K- @8 F8 I
if length(index)>=2/ L* `. l" n" U
index=index(1);4 e/ e( U1 M" G8 w
end3 j) C- I* C: K1 f: m/ v
index2(temp)=index;
- J( D* ?9 A9 X7 _* yend% t" f( {6 |4 k0 Q" i' ^- z
d, index1, index2 7 X6 Z, ?! j0 h# z8 H
|
zan
|