- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
3 f( [5 s3 r# U6 s( m8 H
, x+ ^ q4 D+ _, T. X- V- C- J: a8 p& v; X/ B, @
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
7 G6 I$ K4 ~3 b. M9 V, W& W; a1 \) A5 n. V1 D
对了,我还想问最短路径生成树是什么东西??
& K3 o Y( _- d& G* k8 I @, x" X& Y. ]$ n2 G9 F
附程序如下:
1 v. Z9 M3 P& B' K. tclear;
& U4 G/ s! m9 {6 G. j# Kclc;
3 h" t$ b8 c; I3 P" S9 aM=10000; i/ A Z9 G0 y4 J' q% D d( p0 |
a(1,:)=[0,50,M,40,25,10];
" R, D ^! r+ X0 Pa(2,:)=[zeros(1,2),15,20,M,25];
: x, s* Q A+ q9 I( q" W, oa(3,:)=[zeros(1,3),10,20,M];% a* N, d% S# z6 @
a(4,:)=[zeros(1,4),10,25];5 r' K! b/ V: j, [- y8 H
a(5,:)=[zeros(1,5),55];% A! ^5 K% I7 }# E: J9 G1 q
a(6,:)=zeros(1,6);, Q8 l! u+ r- }+ p5 y
a=a+a';
p& ^+ V, a' gpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
: a$ U& W6 @1 Rd(1:length(a))=M;d(1)=0;temp=1;
: U: c# _0 P2 m1 }# U9 `while sum(pb)<length(a)
7 @0 \; x8 A4 J/ x8 w p6 U$ G0 K tb=find(pb==0);: B1 c! R' @0 L' C: \5 b
d(tb)=min(d(tb),d(temp)+a(temp,tb));/ F5 e+ g: o6 s1 Z
tmpb=find(d(tb)==min(d(tb)));
, V, ]6 K+ D' O" A# G temp=tb(tmpb(1));8 q5 O2 S2 v9 Z; I- l: R m
pb(temp)=1;
+ D0 {2 r B8 [5 \7 h index1=[index1,temp];
" X4 f% g- z* J5 o% [, w* i index=index1(find(d(index1)==d(temp)-a(temp,index1)));
, O0 V: T! |3 t t8 k4 G v+ K if length(index)>=2
& M8 c2 D" q& L5 [! s index=index(1);; Q* l. I1 v/ j6 m+ x4 p
end
( O) v$ C- L: n7 E index2(temp)=index;
5 T; w2 L B7 s/ }1 l& ^- ^end
* [4 l6 ^5 L2 l4 L, Kd, index1, index2
! K% i- Q) T4 j4 m: [0 O0 M: P! Y |
zan
|