- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
& R- F& b4 Q D1 ]$ [2 A
% z. S- P, x- W. W' P) L" N4 F4 U/ Y4 k$ ^( Z! v% N' n- y
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。0 D, E$ t7 B) }8 m8 N R) {
0 q9 u# q8 @/ h; @. i$ G: T
对了,我还想问最短路径生成树是什么东西??
) n9 l/ Z( [8 Z. I7 }+ O/ B3 H) @- n# w& S1 [
附程序如下:
6 M. o5 |% J* R! f: k( H* |! b( C2 Sclear;
+ K+ }: T; U! `2 {6 ]clc;4 s' @9 i$ ^! g0 `1 k6 D
M=10000;
; [' o, q1 K/ D7 R. I$ r Qa(1,:)=[0,50,M,40,25,10];
+ M$ w. s8 O. [6 h4 `# Q' @0 H$ n) ba(2,:)=[zeros(1,2),15,20,M,25];4 }( A6 `: [; s5 F
a(3,:)=[zeros(1,3),10,20,M];
- ?: W9 H% r* {; a1 J* f S+ G! oa(4,:)=[zeros(1,4),10,25];. T3 [6 [6 g7 ?2 U8 H& Y
a(5,:)=[zeros(1,5),55];6 z7 z; R- D9 b# |$ ~8 n( V
a(6,:)=zeros(1,6);2 z- q+ J$ u9 W# c
a=a+a';
% ?7 i, f, g+ K2 T9 Epb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
2 V$ L7 E3 m: ]9 l, E- N0 i! I4 Od(1:length(a))=M;d(1)=0;temp=1;5 j$ i1 v% I( \9 }: ^; p' V
while sum(pb)<length(a)
6 Q B- j/ u1 h8 } tb=find(pb==0);" x8 E C, j6 H, m" I8 a
d(tb)=min(d(tb),d(temp)+a(temp,tb));" [3 {% Q9 X2 o% D, {# _
tmpb=find(d(tb)==min(d(tb)));
% F, K7 M1 w6 [ temp=tb(tmpb(1));
! |) ^7 [# i9 ~" ?7 E: D9 m+ Q pb(temp)=1;
4 H' _" `9 @* P2 r index1=[index1,temp];. F1 {$ N8 a: M% v; T+ _
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
8 a6 h0 T3 B6 G) o6 V if length(index)>=2
- @. ~, x4 C* l- u! Y index=index(1);4 `$ b: _' \$ X
end3 }! f, }9 q: O# G5 A7 g, T
index2(temp)=index;. C5 q! [: @' |) W, K
end
5 A# a# P* P9 N2 ]% Qd, index1, index2 " Q# K. C4 @! b8 w+ G
|
zan
|