- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
0 r S5 q7 n- \6 Z) y4 S/ p/ r9 h; _$ b" g ]+ w
' S# q' E7 |) V/ L+ ^! ?
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
4 p; c6 n2 N" ?7 ]8 @: `
0 ^9 E( g6 H7 A) p; b& l对了,我还想问最短路径生成树是什么东西??
6 f8 ?1 j3 K0 `0 a( {0 N
5 H. N h1 d( O' Y9 ?( h0 }附程序如下:
( f9 g/ _* o4 T8 \6 w+ Rclear;5 o/ n+ i4 p/ M0 y" R3 K; N" n' V
clc;
8 E& L% W4 a! P) y- WM=10000;
. r: H6 C/ H- a3 X; _) ba(1,:)=[0,50,M,40,25,10];* p# O- [% ^% X& {$ ?
a(2,:)=[zeros(1,2),15,20,M,25];+ U7 ~9 V' y1 M
a(3,:)=[zeros(1,3),10,20,M];) O- {" z3 S5 E9 k) ~4 @* r/ y# p
a(4,:)=[zeros(1,4),10,25];
7 L# R7 f. k% k r. G" ^a(5,:)=[zeros(1,5),55];
5 E& t& n8 |6 f1 L# ?a(6,:)=zeros(1,6);5 ?" ^, T, G4 Z7 c, W7 U5 _
a=a+a';
& D. N7 S8 f- t; k$ @3 O2 ?pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));8 x# @. K8 b9 a4 v8 a7 ^* x
d(1:length(a))=M;d(1)=0;temp=1;9 K6 w# m4 w$ v
while sum(pb)<length(a)% @( E' @( D5 X- V9 \; Z
tb=find(pb==0);" V# i$ v7 Z _9 S' b5 ^
d(tb)=min(d(tb),d(temp)+a(temp,tb));5 P$ h e2 a4 n
tmpb=find(d(tb)==min(d(tb)));+ h0 i/ ]/ T. p8 R, [
temp=tb(tmpb(1));/ K0 @, i8 h* D& f* D
pb(temp)=1;
, p; n& N2 P' L8 O! [ index1=[index1,temp];
|# R) `. C7 t9 e3 L0 u# e1 \5 m index=index1(find(d(index1)==d(temp)-a(temp,index1)));% c( n/ I4 R ]$ K' S+ d+ c
if length(index)>=2
8 Z1 L* _/ C/ x: _ index=index(1);) f2 ^0 K: d& z* J
end3 y0 s5 G5 k" ?- t$ p1 }9 ?. e: \
index2(temp)=index;5 X! @1 B1 {: @ ^
end6 ]$ }4 b' j! [, ^$ w; V8 e. W
d, index1, index2
8 U7 E$ {5 A( O& o) O |
zan
|