- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
! F r" ~5 L! ?% |. m0 X; i3 @# Y7 [3 l, {5 Q; `9 P$ X/ H$ E2 x& H
; T" h, h7 w% f$ x3 b9 y6 T* B
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
8 }1 \; T; ]2 t5 @. Y
9 U9 E5 N; N( J+ ]/ l" ?& j对了,我还想问最短路径生成树是什么东西??1 }: @+ N6 Y: n. J) D* }
# z7 t. e: p+ F& v/ U; a- J- t& x
附程序如下:8 n3 Z& ]7 e7 p' W
clear;
6 z4 g5 L3 L! R* S# `3 Lclc;
8 e! _3 W) [. u9 l' U; J. F6 OM=10000;. v8 M; }8 I! D
a(1,:)=[0,50,M,40,25,10];1 D& g( K. v0 v8 L4 H1 B7 P L
a(2,:)=[zeros(1,2),15,20,M,25];5 y' w9 @" `! F7 Q$ s" t. d
a(3,:)=[zeros(1,3),10,20,M];! V: R3 n& a7 r
a(4,:)=[zeros(1,4),10,25];3 Q2 D3 B* Y) E
a(5,:)=[zeros(1,5),55];- o F. A" T. n" a" k
a(6,:)=zeros(1,6);
! h A6 T1 e. r+ w. q4 w4 l" f+ }. ]a=a+a';: L' j1 |+ I D
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
; y8 @" G, y8 C4 G1 `d(1:length(a))=M;d(1)=0;temp=1;
% U1 U/ m( Y& ]2 d7 q8 g* S- jwhile sum(pb)<length(a)
' z7 Z& ^3 P/ O* n/ r tb=find(pb==0);
" Z0 b0 s8 ]8 ]" s0 ~3 i4 l+ @" p0 S" | d(tb)=min(d(tb),d(temp)+a(temp,tb));9 [; D* l+ ~: H9 K# n0 T1 Q
tmpb=find(d(tb)==min(d(tb)));$ x2 F1 c2 K. i
temp=tb(tmpb(1));
: j& A6 B z2 q" n7 S4 {3 ` ^ pb(temp)=1;
6 r% d9 g3 ~. l, b2 L index1=[index1,temp];9 S/ q# N( i/ m, A
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
- _1 r3 C2 ]/ X+ @) h if length(index)>=2( h7 ~5 Q6 [9 V6 A3 }! J, i
index=index(1);
# i9 A+ {1 i( Z# O/ ~ end4 L" X( a8 P+ Z: X
index2(temp)=index;) C5 |- N1 F% C# a9 h
end" ^9 W4 u. _) f- `; J2 C
d, index1, index2
& N b6 A: d/ x" I; C3 K. u |
zan
|