- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
( l$ X; b9 {5 X+ q9 D. V5 ^1 H4 s/ ?& M5 o# c# p+ J
" \: K% P; Y! O我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
& r' M6 g& n6 k1 S" a
. y; E! G) r" b对了,我还想问最短路径生成树是什么东西??/ r$ V& j0 b8 ?6 L: q& b' @& X
. e- {- U* N& ?1 }6 K( B) e附程序如下:1 q0 l$ ?- p: v$ o
clear;! U6 |' f$ O8 T4 i+ u9 d
clc;) [ I# H, f! d: G: {
M=10000;2 a1 e3 V0 @$ A+ q
a(1,:)=[0,50,M,40,25,10];8 y0 a, R6 P# X7 h' l' O
a(2,:)=[zeros(1,2),15,20,M,25];
( ^ T( j7 _ Q+ Za(3,:)=[zeros(1,3),10,20,M];) F, e7 K9 M2 @
a(4,:)=[zeros(1,4),10,25];
! W* P+ C5 b1 l" G5 Z$ `a(5,:)=[zeros(1,5),55];
/ \. F7 O1 `; }3 u, t+ ra(6,:)=zeros(1,6);6 {- t9 J7 I& d+ O! q% z2 d
a=a+a';) Y, b% ~: S# z
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));6 L6 L8 M( M9 Z$ n& s$ j
d(1:length(a))=M;d(1)=0;temp=1;* J* X3 R- Y/ d0 o8 u
while sum(pb)<length(a)
' \/ s2 _; l8 c+ |" b2 D. f6 L- F: [2 \ tb=find(pb==0);" z) n8 k/ S3 P4 I
d(tb)=min(d(tb),d(temp)+a(temp,tb));2 ]. m7 I5 y) |2 m' i/ d
tmpb=find(d(tb)==min(d(tb)));' G- ?( b) d" p! J1 T
temp=tb(tmpb(1));7 x6 Z+ R ^% u" z* a5 z
pb(temp)=1;. t5 h' i; d5 {- n* B" z
index1=[index1,temp];
" ^; ]* l+ I( F7 i! g index=index1(find(d(index1)==d(temp)-a(temp,index1)));
$ z4 [' O+ H2 ?3 S( j& I% m) J if length(index)>=2" y( ]5 s& p" ?. H! ]
index=index(1);
& ^* G2 y' G. ^ end# J: [" |) e7 Y* a4 h
index2(temp)=index;0 R/ D; o- {# C9 b' m
end
/ R% v% W2 j% e5 G! Ud, index1, index2
% z i4 r) f$ @& _0 y |
zan
|