- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。$ l: z# R* l4 a
* [ X( @8 g& t8 C: X1 p# v9 [! V, C; D
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。! w: r2 S- _+ W
6 p6 N! z, m" f( t) ]% w
对了,我还想问最短路径生成树是什么东西??! ? d0 m# @$ F$ f
4 x8 q$ [2 [" c2 \! ^. b
附程序如下:- j Y" \/ ]1 [' M; p
clear;
! }" Y2 P% o7 u9 `" ^clc;* N G- G! ~; \, m' J: p# f! Q
M=10000;
4 k5 C5 H# _% a3 [# t5 m1 Z% Ja(1,:)=[0,50,M,40,25,10];
: z; k4 E! t6 n* Ua(2,:)=[zeros(1,2),15,20,M,25];
1 t4 z4 d* ]8 b" p2 Ua(3,:)=[zeros(1,3),10,20,M];. ?* y& J* v7 }
a(4,:)=[zeros(1,4),10,25];
1 F" D8 p3 O! R' R- M+ ?a(5,:)=[zeros(1,5),55];) U6 M1 ~) ^5 W% m) I- `
a(6,:)=zeros(1,6);
0 H, G' F g8 C; ya=a+a';' @0 R/ [! @0 s* _2 v
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
( Y8 V9 ?+ x( h& Z3 H) ]. W" O K0 vd(1:length(a))=M;d(1)=0;temp=1;
: h5 r( g" M- jwhile sum(pb)<length(a): b( P6 {5 H3 a r, y* _
tb=find(pb==0);
- I ?2 }- i2 L" |$ n, E) K: k* a w d(tb)=min(d(tb),d(temp)+a(temp,tb));' ], C) i! j9 B, I. O
tmpb=find(d(tb)==min(d(tb)));
* t9 }! P0 ^/ X5 I5 c temp=tb(tmpb(1));+ _/ J* X u/ `# T0 y! q
pb(temp)=1;9 m0 [. E' p# H9 H) D
index1=[index1,temp];
; V( _1 N, o3 Q$ A$ K' q4 @. x! v) w index=index1(find(d(index1)==d(temp)-a(temp,index1)));) H3 W, N4 N) L/ }' @4 }
if length(index)>=2
6 h8 ~7 M' ?0 C5 r" h index=index(1);
I8 I' }/ I8 |$ ^6 b$ X, Q end
0 G* Z1 b$ ]2 e$ G V6 x( R: E index2(temp)=index;
7 P1 C1 W6 F2 M8 k+ nend$ Y7 M8 z& t. U7 ^$ V. P
d, index1, index2
+ R' P, k) ?9 M$ z5 X3 q |
zan
|