- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
" z; k" O0 w6 _3 l* _3 S4 z
. i( d' Y) D6 I. {/ e M5 v
% V$ U3 {9 t% g0 R2 |0 V我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。/ v( B% p: n/ _( b
$ D' h; A: q- t6 ^
对了,我还想问最短路径生成树是什么东西??
( r3 L5 x# R; @; Z: D' ?1 }, M7 e8 q6 g& H, ]( U7 v
附程序如下:
9 S* f9 h2 S) h2 Z2 Sclear;% a, z2 H1 a3 |
clc;
Q7 } x. n" a. O2 P' ~M=10000;% Y# h. d& e% }. ?% y; M& i" @: S
a(1,:)=[0,50,M,40,25,10];+ ]8 F4 k) j" `3 W/ }* p
a(2,:)=[zeros(1,2),15,20,M,25];
- ]5 D1 M( H( a9 l2 W: ?* E* w I! ^a(3,:)=[zeros(1,3),10,20,M];
4 _9 X; `0 d( {* ua(4,:)=[zeros(1,4),10,25];6 N7 n' n/ L( {* H" D7 Z* k
a(5,:)=[zeros(1,5),55];
; ]9 m* K. ]# o* u; F2 Ea(6,:)=zeros(1,6);" {/ V" b2 ?: j6 t$ D. o2 x4 U; Y5 _* |! V
a=a+a';3 \6 \/ I4 T* K0 Z+ ^9 N- f
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
6 _+ p5 N8 l4 l7 S. M# Ud(1:length(a))=M;d(1)=0;temp=1;# N' @, l! ?( `" g( ~1 a" E! ~
while sum(pb)<length(a)0 s8 g! q5 Q" _3 n( S# ?! b7 }
tb=find(pb==0);
5 \. b6 t4 l, D; y( A d(tb)=min(d(tb),d(temp)+a(temp,tb));6 r/ N2 ~6 ^" P8 s% g0 `, h
tmpb=find(d(tb)==min(d(tb)));: X& v' C8 S4 O/ [3 {( c) }0 _3 i
temp=tb(tmpb(1));
+ \! L% H; n& B1 ?$ L! M q" @ pb(temp)=1;6 Y: \7 g- ]3 I7 L( q" d- L
index1=[index1,temp];
# [1 i- x4 A& M index=index1(find(d(index1)==d(temp)-a(temp,index1)));
3 F7 A2 M- F4 B if length(index)>=22 z$ b4 O8 @/ A* Q5 R) Z' B- ^
index=index(1);
1 s& V6 ^4 Z* {. u2 a+ Y, m( |( | end
/ d& g5 z) m1 Y3 o1 u index2(temp)=index;- d/ _) X; J" B Q% o
end, Q6 d4 j( X! A4 k4 s- s
d, index1, index2 ; e3 K/ y( r6 J) U; e
|
zan
|