- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
- A$ t# k U5 e6 e9 F5 V8 z, a. n( S$ w0 S0 W( ?5 g7 w/ Y0 A
6 r; E: ?- S" N9 n我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
7 }$ ]& B) X& O6 {5 |
! U8 y7 ]0 O& `8 O& o, c8 D0 R h对了,我还想问最短路径生成树是什么东西??, k/ _3 c5 U: B& ?/ s0 H8 n
9 b2 `5 X" s7 M5 U# T& n+ o/ v附程序如下:. G5 N3 P5 c- S4 a1 F' d% R5 ]2 p
clear;" @) d [ d, B( c4 f
clc;
' V/ O/ x5 ^- C0 e- FM=10000;
* \4 x( p5 _. na(1,:)=[0,50,M,40,25,10];+ X8 K2 U U7 W) R ~7 z6 X
a(2,:)=[zeros(1,2),15,20,M,25];; ` R6 h& C: v0 ]* [& _
a(3,:)=[zeros(1,3),10,20,M];
6 O5 w: j- D! Q, _9 p( Ka(4,:)=[zeros(1,4),10,25];
5 S$ v" ?5 R! v' J# c( |a(5,:)=[zeros(1,5),55];
6 c8 w6 z0 }" g8 i" l( wa(6,:)=zeros(1,6);/ e D! n0 F( n" U3 j$ L! o- D! @
a=a+a';" P# a0 @( r. `0 q7 _
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));$ `7 v4 i9 b3 q) r, X+ U8 I2 K
d(1:length(a))=M;d(1)=0;temp=1;. W( m! K3 I9 W n
while sum(pb)<length(a); |" D8 B1 g, F8 R6 k# A
tb=find(pb==0);2 N# F# l M9 X K9 F/ ^
d(tb)=min(d(tb),d(temp)+a(temp,tb));. b: v1 w3 B* Z: S d1 Y2 W
tmpb=find(d(tb)==min(d(tb)));
( C; D3 C0 B* y8 G$ j& y6 L U temp=tb(tmpb(1));
8 i. X( A; W: r% ~4 z% c pb(temp)=1;
. G6 M9 G8 d3 ?1 o" f index1=[index1,temp];
/ F# Q, I' h& N& a: z2 h- N) | index=index1(find(d(index1)==d(temp)-a(temp,index1)));/ N9 V p; ^5 U( \6 y B3 n
if length(index)>=2
/ c5 A0 X. o# y0 V index=index(1);8 \3 m( Z6 a: C& ^* F; c3 X' r
end- p/ \4 @" P n2 x, {6 x8 }
index2(temp)=index;
w: [2 C! H1 t$ o" ?end
+ e$ p A) _6 M% Md, index1, index2 F% `; X, i( @9 x; W) c: ^
|
zan
|