- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。9 j* n+ T5 `1 D+ g4 d7 {
& D( y' F, Q0 r; C3 [* W2 E+ g1 O
1 y9 |0 z' h- H我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。3 k3 }* ~* |+ k; D
4 N: P- ?' o3 s- U) S7 k5 Q% S* q对了,我还想问最短路径生成树是什么东西??5 z" F+ S) u- K; A( E4 j
' M( v8 ^5 H- x& |& J" }6 i& Z6 w8 I附程序如下:
. ^' c6 j+ v! \5 J( t- s' [& nclear;
# G* N4 p) |& U$ C! @* {clc;
" g9 z$ `$ n5 n5 k/ }M=10000;
( x; D$ `1 k, m" f% `a(1,:)=[0,50,M,40,25,10];5 W( w* y6 b+ X g" `
a(2,:)=[zeros(1,2),15,20,M,25];
3 M6 _, }9 J: o e! J+ ga(3,:)=[zeros(1,3),10,20,M];
% F; x0 ~( J- z% n: ^; G3 Ra(4,:)=[zeros(1,4),10,25];; J! }6 R3 K+ G7 n5 C
a(5,:)=[zeros(1,5),55];
; T$ g1 w# v& K4 j3 l" N6 za(6,:)=zeros(1,6);; T. W1 R8 q( c9 |% |" m% H6 H
a=a+a';
. @3 N5 K! p; P; B+ ~" i3 G. Jpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));. W. e# i& F9 J2 s
d(1:length(a))=M;d(1)=0;temp=1;$ u( D: Q# f& Q
while sum(pb)<length(a)
0 C4 z5 N: l3 q \ ]2 m$ q tb=find(pb==0);8 Q8 i- g% f% f& K' U( V4 `
d(tb)=min(d(tb),d(temp)+a(temp,tb));
& f/ n& M6 B$ j: a6 K tmpb=find(d(tb)==min(d(tb)));
% v7 D1 F' Y' h5 C temp=tb(tmpb(1));' s- c) |: H0 h a8 a
pb(temp)=1;" v8 t$ |. }$ X( ?) z
index1=[index1,temp];
4 [% {6 H! d# w4 s3 F' J# I$ ^ index=index1(find(d(index1)==d(temp)-a(temp,index1)));
( D) j* A+ V* T( H if length(index)>=2: B! r+ x/ K# J" R! I, K9 d
index=index(1);" Q3 M7 e7 ~, C# p6 Q
end7 P) r: z2 E( e$ |! I$ l' P6 v
index2(temp)=index;
) K3 m: n1 H; ^7 F1 C5 Yend
0 Q+ z8 }) Q5 Y3 A0 k+ [5 N4 E9 @d, index1, index2 , A3 d# ?$ }1 h" m0 R# G9 F/ `
|
zan
|