- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
1 _& W0 s* e: O- W/ ~- ]( F# K1 M% q% x i f3 w; [5 d
4 D# m1 q) A, I) i我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。% i! u* o, [/ o; j& T- i" J
# E. \7 t( C4 M; E& J对了,我还想问最短路径生成树是什么东西??
" A$ @1 \ x5 Q& z; u- n
/ W9 Y7 G! r) j7 U8 K+ @ }' j附程序如下:! _) Q. U7 \ |
clear;( W3 K& o% S* v
clc;
& Q3 q# D: f# {8 EM=10000;, n( t% W7 e# p5 m f$ B
a(1,:)=[0,50,M,40,25,10];
. x+ R" c5 X, z/ v8 G8 {/ aa(2,:)=[zeros(1,2),15,20,M,25];8 ^. d! j- X* K; j) i- t/ Q
a(3,:)=[zeros(1,3),10,20,M];
! E/ L8 `' p7 w1 wa(4,:)=[zeros(1,4),10,25];
. \ |) n5 z" t: _; c. Ra(5,:)=[zeros(1,5),55];
/ _, v8 \6 R( K4 a! q1 f% za(6,:)=zeros(1,6);8 |1 X j5 R, A8 d% k
a=a+a';4 I& z" T/ W) W; R- j) T/ p
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); X3 I) S0 ?6 W) Z; S, e2 _
d(1:length(a))=M;d(1)=0;temp=1;
8 H& y% a5 A0 u% y7 b7 U: \$ jwhile sum(pb)<length(a)
+ f5 g4 w0 R: f, l9 }$ Y* x9 t G* m tb=find(pb==0);
# ?, _) {9 n7 V; d% _/ l d(tb)=min(d(tb),d(temp)+a(temp,tb));
8 a; A" _3 e1 w5 X& T3 t tmpb=find(d(tb)==min(d(tb)));
- {; {* Z* P k9 { temp=tb(tmpb(1));
5 o+ U* H( q6 L, M2 q pb(temp)=1;0 y7 Z3 F5 S# _* }7 h+ n, s
index1=[index1,temp];% U# c8 @4 Y m3 j$ Z! `" i! A
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
2 Q$ D1 @6 J. Y& l) l: d9 h if length(index)>=2
) I% S% l( k$ f0 r4 \6 |3 \7 L. i( L index=index(1);
6 y, X* J3 q# ^$ o) J3 G2 @, P1 v9 w end
+ W9 e3 C8 R& c/ x% F index2(temp)=index;7 b/ a+ y0 d+ t, S' p! ]3 q
end
4 y4 Z% A/ }0 ]9 N5 O: v$ Gd, index1, index2
$ q7 o8 V f7 r- e/ Z# G* |7 n1 } |
zan
|