- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
; [% q; t. r& h# N! s4 _8 g0 T. K7 p$ n, q% }6 b
. T2 f2 Y2 M( O0 ]! w/ a* a1 N
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。2 w' m) Z1 e8 \3 }/ O5 s4 k& e
) z6 d" K- Y4 q. t3 b对了,我还想问最短路径生成树是什么东西??4 O2 ~" j% w3 p6 q6 N$ K% y1 C
' c6 ]% T3 g. f! ~3 i# U# I9 r& y$ W附程序如下:
! _8 A, d Z. L6 v# q; K3 n3 \; oclear;
9 v6 i2 W7 L4 Mclc;6 `9 d* W# r/ {6 B8 P# Y- T
M=10000;5 r/ N9 C8 ]3 X6 D7 P
a(1,:)=[0,50,M,40,25,10];1 L* m% O A/ K Q
a(2,:)=[zeros(1,2),15,20,M,25];
' G9 A! Y$ z, D5 d2 Pa(3,:)=[zeros(1,3),10,20,M];+ \8 G) W! F9 W3 _6 f9 u1 G
a(4,:)=[zeros(1,4),10,25];" |" E |6 V+ `/ O
a(5,:)=[zeros(1,5),55];
& {2 S- [- W8 W4 W4 Wa(6,:)=zeros(1,6);
; |! m6 u7 v4 v5 ea=a+a';
/ v/ w+ F; ?0 x2 [) lpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
+ ^2 B: c y" v3 m8 Q6 X5 c Bd(1:length(a))=M;d(1)=0;temp=1; M0 f; f, J: o6 t& a/ [7 o$ B( J
while sum(pb)<length(a), [* W" Y& Y: Y* n, T0 |7 Q
tb=find(pb==0);
! o3 r9 I9 Y }7 C' a6 F8 \ d(tb)=min(d(tb),d(temp)+a(temp,tb));
9 ?1 A8 r& X6 l. Y, f, U3 l$ w tmpb=find(d(tb)==min(d(tb)));
( o' N5 ]. ?5 T5 c temp=tb(tmpb(1));
# ~% e- k4 C' V" x) `- Z1 x; w pb(temp)=1;
" I9 q$ q- C9 Y index1=[index1,temp];
# c: f+ N" g) Z9 ~% { index=index1(find(d(index1)==d(temp)-a(temp,index1)));4 t3 q- @& \) k* |2 ^( Q( k
if length(index)>=2
* @( B- ]4 Q F: p index=index(1);% Y5 ^1 z, y" v9 W; f4 G7 R5 G
end# f( Z6 L) u* n. Y0 C. U- I0 A
index2(temp)=index;
3 x; D0 V; M' N' e# Dend
' q+ s$ C% t$ R$ I' D' q* ~d, index1, index2 7 j/ ]% r2 W' R" R: R* b( m G$ p
|
zan
|