- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。4 f; }4 s% m3 `7 k% _
# m& I3 i/ }' r) p! B# h
: ~7 t4 {" r" ]7 P9 w( a; M我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。& d9 U4 H) V, Z+ S' }
! c& O- E, U: Y1 }
对了,我还想问最短路径生成树是什么东西??
3 h0 ^- L/ g) b3 j1 e
7 }$ s9 o T: G/ ^1 P附程序如下:
/ H/ d# X4 x. P* @, Nclear;1 {* j6 P- l9 j# S0 u+ C# ]
clc;) n3 z# K& c. T9 j2 j4 |
M=10000;& W0 g1 v/ r" V# V B6 G* R; O# I4 n
a(1,:)=[0,50,M,40,25,10];; f+ E/ I4 m) B- ]6 F2 Z& ]
a(2,:)=[zeros(1,2),15,20,M,25];! Z( F5 ]; B) x$ X2 E0 Q; y/ p6 e
a(3,:)=[zeros(1,3),10,20,M];
$ J( \! m8 y: Sa(4,:)=[zeros(1,4),10,25];
4 g' R6 i1 H5 Q1 t; @! v3 Za(5,:)=[zeros(1,5),55];
; A, G7 G1 t0 g6 l! O3 |: j% g; Ta(6,:)=zeros(1,6);$ B) B. I! o. l* v6 x
a=a+a';9 `3 [: _8 \8 }' E# b6 R
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
5 e/ B9 Q" c2 X6 O: ~4 G: cd(1:length(a))=M;d(1)=0;temp=1;
' a% S O9 i9 {6 \4 _2 \! v5 ^7 ?while sum(pb)<length(a)2 u1 l6 S% |5 M
tb=find(pb==0);; E, X0 i$ A. p" t! h( O# _# j, c
d(tb)=min(d(tb),d(temp)+a(temp,tb));
$ Q ^9 W) A7 B; ~2 z tmpb=find(d(tb)==min(d(tb)));: N6 g& N, K9 e
temp=tb(tmpb(1));) v4 W( N. J0 D% U
pb(temp)=1;
2 ?3 d1 r% M$ j& K9 X7 E: Z( _9 j index1=[index1,temp]; ^9 O$ P0 j1 K! S2 M: `% ^4 w' E# P
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
( `1 f" m8 O! f5 ?- c- E1 }' V if length(index)>=26 u4 T. W# k* o* J0 q/ j
index=index(1);3 V4 x' I% s) N9 C! x$ h$ v
end4 s6 v( d$ B$ J
index2(temp)=index;) {* s8 y3 |6 Y9 W
end1 W0 A* Z% D- M! ?' {9 y4 i0 H
d, index1, index2 $ l) k, Q% k3 X- C
|
zan
|