- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。- a2 k5 I! r5 B! Q0 q' }
- Y1 N) | F1 H1 F9 M1 p
* E* ?3 c8 t( X* s* D我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。8 C% r0 W6 I! {+ u. a% N8 Z
+ a, Q. k8 L$ x5 [
对了,我还想问最短路径生成树是什么东西??
: w( O& [0 |2 ]6 ?% l9 m6 I5 j* K% I/ n* e( [
附程序如下: i+ n( t* B& i' F
clear;) r6 r9 ?" G: [' a
clc;- ^4 Y( H0 j3 r. Y1 }6 E% G
M=10000;# N& f8 _( t8 Z- c% Y
a(1,:)=[0,50,M,40,25,10];
X. r% t5 G" n* Fa(2,:)=[zeros(1,2),15,20,M,25];
9 q _* J7 y+ J) r* ?: Ka(3,:)=[zeros(1,3),10,20,M];2 J4 J9 q" b [/ U
a(4,:)=[zeros(1,4),10,25];/ K! X5 I. c$ H: E7 w4 \- ?1 {
a(5,:)=[zeros(1,5),55];
8 L4 z* g1 D7 D/ w4 Aa(6,:)=zeros(1,6);' X& t- r2 S' u
a=a+a';
. i4 l3 x, h. t, c6 ypb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));0 L! H' I( M' n% i
d(1:length(a))=M;d(1)=0;temp=1;# n" o+ t D% b4 _0 @# G. C; }; |
while sum(pb)<length(a)- i, n- t- s9 }- l- [: q' X
tb=find(pb==0);( o& W6 m% ~+ R/ D
d(tb)=min(d(tb),d(temp)+a(temp,tb));
# T! ?2 H8 I0 W) }9 ]2 V5 A; L% ] t tmpb=find(d(tb)==min(d(tb)));
2 J: J" _+ w1 N- G temp=tb(tmpb(1));4 l; R; p. v6 e1 g. E& M7 h
pb(temp)=1;
0 S* Z7 ^" b( G index1=[index1,temp];$ E) O( ]# U' S9 b, A- ?& N
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
5 H9 I% p9 Q9 g if length(index)>=2 _ F, b9 W; g, j+ c. n
index=index(1);
$ U b, o" M M9 T end0 S! X# J+ m" F) O& X+ \8 p1 R
index2(temp)=index;* `" l' h1 N q/ E; \" M" V
end
" T# D; Z' W1 m5 Y- y0 |& cd, index1, index2
5 ^+ Y& j7 V/ m" A% ] |
zan
|