- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
2 \: [3 C5 q# ?6 t* E$ F
9 m+ H1 `" i3 w+ _. c) V9 E& o: ^4 [
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。- m. l+ I% D! r0 ]0 [" d+ V0 l0 B
t4 D% Y' {" a0 X; p1 L对了,我还想问最短路径生成树是什么东西??' g% G6 N' g4 z( w6 s+ u
: r0 U5 G. ^/ F* P: \0 c$ p- N
附程序如下:& [( `* M% J! g- l; n* q( j3 [
clear;
+ y: z+ V# S& {" a& ]* H: Iclc;/ P$ M, e" t# ?3 K9 A0 {
M=10000; T1 H! E. f1 d- H
a(1,:)=[0,50,M,40,25,10];
8 V) m$ M/ |0 r0 Y B7 Ta(2,:)=[zeros(1,2),15,20,M,25];+ b5 p3 C6 ?' a* H& M& w1 ~
a(3,:)=[zeros(1,3),10,20,M];6 \9 m! I1 [0 A
a(4,:)=[zeros(1,4),10,25];5 P" @7 s* A, {/ T
a(5,:)=[zeros(1,5),55];
6 @% ]4 A/ X* ~5 y; L* wa(6,:)=zeros(1,6);. @( b9 j+ r) M+ Y7 X: `+ ] l
a=a+a';
$ p$ E# f' l, t( ?+ h3 `pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
3 |! g6 ~: M. l( o- D+ m8 a; Ad(1:length(a))=M;d(1)=0;temp=1;
% b2 L, x% v' E/ Z( a8 t- P) `while sum(pb)<length(a)
1 a& c% i& k: `: N$ J9 Y tb=find(pb==0);
7 m- M2 k& q3 l x) F' f d(tb)=min(d(tb),d(temp)+a(temp,tb));
) V6 w8 |5 W& L L* k c tmpb=find(d(tb)==min(d(tb)));) O6 |0 i* K) F" u0 z4 |. O: f
temp=tb(tmpb(1));
0 V% i) O. t: X; O7 |4 z pb(temp)=1;
0 }# c& Z6 u4 U1 m+ Z" C0 M! t3 P index1=[index1,temp];% y) f# l' E. L' K9 `" e
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
, P6 N6 z* p8 n) x4 B if length(index)>=2
. ]* M# q- H% r) w" g# l index=index(1);' V- O- O5 C) D& }. x& b( m! |
end4 {* v m. X1 l* A2 U
index2(temp)=index;9 @3 V7 y$ r# S0 }& L$ h* o6 l+ S5 S
end
?5 I4 {" q! q2 Sd, index1, index2 % ~) p/ K6 F5 |; D% q
|
zan
|