- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。" T9 F) S5 v% D3 p" @/ i8 j* p$ ^6 }; w
( g; `5 ?/ r# v) a& a/ j% X/ a% A% ]4 t) s5 F5 G
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
0 u4 P3 V( M4 x$ f& L. d5 T9 L, w: p- P$ y* F/ {" Y
对了,我还想问最短路径生成树是什么东西??' T9 D% v4 n0 m5 }5 A/ y
. U: F; J+ n; S附程序如下:
7 b( v! e3 D$ _7 f S8 Qclear;
6 k2 o: F E" G8 H! E) Kclc;$ B6 u! T9 H2 l+ D, j% O1 r# U4 n
M=10000;2 i. E4 @0 X9 U% Z Q
a(1,:)=[0,50,M,40,25,10];
& v* v |, S/ ca(2,:)=[zeros(1,2),15,20,M,25];
8 r* t0 O' E% C' C* ?, Ra(3,:)=[zeros(1,3),10,20,M];6 D4 u8 m8 b) d4 I6 I# r
a(4,:)=[zeros(1,4),10,25];
8 n& L/ f% x1 ra(5,:)=[zeros(1,5),55];. o+ V* t) w4 w6 t$ ]
a(6,:)=zeros(1,6);1 F4 u) t* Y, X5 R8 c8 {
a=a+a';
& r& E. w$ I; _; Q5 Y jpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));! R" p& m3 b; J
d(1:length(a))=M;d(1)=0;temp=1;
3 K1 C8 }: C% @( }2 k2 M, Xwhile sum(pb)<length(a)" F8 U/ y: o4 n7 F6 t2 n6 ^/ O
tb=find(pb==0);
\- [# ]7 ^' P% d+ `/ N" U; F F; p d(tb)=min(d(tb),d(temp)+a(temp,tb));
% M3 Y# I' c+ F* K6 D tmpb=find(d(tb)==min(d(tb)));$ Q& h5 m" P6 M
temp=tb(tmpb(1));0 P) |# _6 Y+ P
pb(temp)=1;& w5 C$ k# s4 M g
index1=[index1,temp];/ _4 l; m4 p. o) c
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
( b9 O) _$ ?0 \- p if length(index)>=2
$ O: i( W; I( E& Y) Y index=index(1);
/ m9 @; r3 e J8 [1 c& Q end ~% w+ }0 I' w0 \$ _
index2(temp)=index;
6 @7 e" Q7 k; |; Wend3 c+ @( U2 e: F8 @
d, index1, index2
; w+ j, I1 ?+ g7 o, V/ R2 x |
zan
|