- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
; H9 u% I. F; v5 P" E+ `% t/ m( P$ x+ n! c a
3 d; O6 g5 }+ Q1 }0 ^+ f我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
D3 H0 k* E: ]2 k8 o4 ^7 U! Y- t- ]8 s( V1 a6 G+ J! j; T! c* g1 W
对了,我还想问最短路径生成树是什么东西??# i1 g- j- \ @1 k
$ v* `+ C5 v& }4 Q3 ?* q% _9 u附程序如下:: ]$ Z* t; s1 N/ V: N
clear;
; u1 v I+ d5 E; Qclc;
! b: C+ |% j& m4 eM=10000;5 v2 B9 k( K. d- \, v0 d4 N
a(1,:)=[0,50,M,40,25,10];! p+ P( `. |3 k
a(2,:)=[zeros(1,2),15,20,M,25];
/ k! H( Q9 ^1 R ~$ da(3,:)=[zeros(1,3),10,20,M];# u, q& ~: o6 P x3 F; K
a(4,:)=[zeros(1,4),10,25];1 w# U, b9 q- ]/ J b6 a
a(5,:)=[zeros(1,5),55];
* r) s2 l, o/ B. k% Da(6,:)=zeros(1,6);4 q& \- p# I9 Q8 Y2 {' S
a=a+a';/ b% y0 t5 d. Z# }% f
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
0 Q9 ^8 [- A+ x5 {8 ^d(1:length(a))=M;d(1)=0;temp=1;; ~2 J; _/ Y- m
while sum(pb)<length(a); k* L! t6 H' f. _4 y1 z
tb=find(pb==0);+ e) J# k* s& d: n! E/ h
d(tb)=min(d(tb),d(temp)+a(temp,tb));
3 Z; X! F. x+ a- ?' x, B tmpb=find(d(tb)==min(d(tb)));
6 n B' m7 Y2 B, W" |5 P1 b temp=tb(tmpb(1));+ U, e- F1 e) z3 f9 w% E- I
pb(temp)=1;4 A4 m5 `0 `2 |/ y. }9 | M
index1=[index1,temp];, U3 N( D% k8 d% E8 z6 D
index=index1(find(d(index1)==d(temp)-a(temp,index1)));3 }- Y9 R2 j: j# K5 O
if length(index)>=22 g& N- c7 y- c+ i; W
index=index(1);
. E' E# ~; f* H, G5 X4 W& Y$ d end
8 I& D) Z, e2 A/ @, u7 r$ N# c index2(temp)=index;
. x# Y# M: Y4 n3 W9 ^0 Aend% I! _. u: D4 _- E% R3 v
d, index1, index2 % k& u5 e4 J: A1 V7 H3 p
|
zan
|