- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。4 H# m7 [+ V# F
0 d" n5 h8 z& u, i7 N) |3 i( {
/ Q5 \1 E5 Z1 v; x我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
3 P- j. |$ j( m$ ?# [' `* [7 A
9 m8 F! S* l( B1 L' P对了,我还想问最短路径生成树是什么东西??
/ \8 V1 g3 v2 y3 w X: V# y, \, y" w7 V0 X8 D# A+ F+ p
附程序如下:# f" k. c$ n5 n+ Q9 h7 ^
clear;1 ], S+ ]/ m. F) S* n" k: @6 m
clc;
! \. q( N6 b( Z S% F4 V% dM=10000;" c t% H n0 o" ~: A
a(1,:)=[0,50,M,40,25,10];: m; t% q t: J4 N8 g8 [* g' W0 Z
a(2,:)=[zeros(1,2),15,20,M,25];
5 \7 ~ y$ o$ ~$ za(3,:)=[zeros(1,3),10,20,M];6 Z t' G$ z$ N7 {2 D% G3 n$ U
a(4,:)=[zeros(1,4),10,25];
+ Q: J) w7 {5 v! Ua(5,:)=[zeros(1,5),55];5 J; x# x" c3 r+ I! N. p9 E; G1 c2 H
a(6,:)=zeros(1,6);6 y- T2 y3 c* J' C
a=a+a';4 ?! J. M! v( Z7 }+ ~
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));- Y5 r* i3 R, Y# l) y
d(1:length(a))=M;d(1)=0;temp=1;
6 G/ x+ V, e" `6 w6 hwhile sum(pb)<length(a)
6 U' p) ^4 I. Y3 D tb=find(pb==0);
, Q- n# h( W+ |* ~ d(tb)=min(d(tb),d(temp)+a(temp,tb));
2 T2 y/ x' o+ l' E tmpb=find(d(tb)==min(d(tb)));
8 @! t0 s+ \( k% U0 z: D1 R- _ temp=tb(tmpb(1));
* Y: j7 E" w2 X8 J2 V4 d ]* w pb(temp)=1;) b+ X9 E( E, h* a
index1=[index1,temp];# ^1 C; C' G$ Y3 i
index=index1(find(d(index1)==d(temp)-a(temp,index1)));. m) ^9 E0 U8 ]4 M4 U; S
if length(index)>=27 q/ k& n$ I4 a# M$ `- ~
index=index(1);0 P4 Y2 |1 Z9 Q
end+ Q; w$ q! i, ?' V: f2 L5 {
index2(temp)=index;1 y& T# \0 z" c- }& u
end5 |+ B* F% O2 R' T- h0 |$ N
d, index1, index2
$ A+ T( W4 y! u, G |
zan
|