- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。, o( t: b1 P4 m! P0 M; o
$ E: y) u# Z8 A3 a2 g# ~
5 {3 k9 c+ ^! F3 L7 Z我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
3 o( o+ A5 M6 _$ a5 M
+ g' D& {8 G3 g! t对了,我还想问最短路径生成树是什么东西??: T0 h: L+ Y' h8 P, d( e' V
9 I! ~5 y8 u4 w& T1 A2 B5 b附程序如下:
/ m2 ?: |! a% s& F/ F9 d* Oclear;
. e0 ^* r8 s& ?; N- Q6 r( kclc;4 C' }' o' X+ w( Q
M=10000;
# }8 M; S" f. g" La(1,:)=[0,50,M,40,25,10];
& A8 O% o5 j( d. ua(2,:)=[zeros(1,2),15,20,M,25];
9 ^! I) q+ F |$ i* Ea(3,:)=[zeros(1,3),10,20,M];
1 t, ~3 r4 j& Oa(4,:)=[zeros(1,4),10,25];( X, i+ y$ \/ Y& L
a(5,:)=[zeros(1,5),55];; w+ u" {, \! o6 S9 U# e
a(6,:)=zeros(1,6);
9 O1 d' k. r" C; ja=a+a';. V5 D! z- D! ^8 s
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
% {( L2 C" I7 G5 C3 P$ p! P9 Hd(1:length(a))=M;d(1)=0;temp=1;
' h: j6 E. L5 _+ g6 W9 ?( \while sum(pb)<length(a)( W8 a2 u3 u, K3 [ K
tb=find(pb==0);
% N/ B* A! A. f3 m2 a d(tb)=min(d(tb),d(temp)+a(temp,tb));' e* K- V, g; [4 W& b; I
tmpb=find(d(tb)==min(d(tb)));/ E6 L1 r$ h2 ]% o4 x
temp=tb(tmpb(1));! ~% ^* x- f; ~
pb(temp)=1;7 j8 P7 u6 j3 Q" ~* ~# t/ M6 n
index1=[index1,temp];
# \ {. L+ Z: c, R7 P& R2 P+ g index=index1(find(d(index1)==d(temp)-a(temp,index1)));
# o5 b3 e" a# W1 J$ q- \$ l if length(index)>=2
8 n' E6 y& g6 H; z. L& E4 Z index=index(1);5 T) F! r0 k& V; u: X0 I
end! n/ ^0 b/ x9 ]4 ^
index2(temp)=index;
1 u/ N6 V+ H5 yend
1 C6 v7 l% h- W4 U ~7 }* Jd, index1, index2 + l: }- W" v0 U
|
zan
|