- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
$ D% ?9 }4 a7 {0 g- d
' |/ r9 W) P- T3 a4 [4 ]& s$ Y7 x# u: e2 u6 C; \$ c* i; |
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。' i' j" v R9 @9 c
" z9 {6 Y; z. ?对了,我还想问最短路径生成树是什么东西??3 @7 Z0 U7 K. W' W4 F1 w' f/ c/ _
5 c" O% }1 [& Y
附程序如下:
9 y2 f/ _# y- N6 ]& Rclear;
7 Z$ c3 K1 w1 J+ hclc;
% H7 g& h, `, f8 U# [; aM=10000;
* o* V5 a) P! O4 ca(1,:)=[0,50,M,40,25,10];& A. @4 p9 Z% @( g5 v
a(2,:)=[zeros(1,2),15,20,M,25];
) ^5 f* }$ F8 I' k$ a0 g! qa(3,:)=[zeros(1,3),10,20,M];6 G$ [& Q, ?1 Q0 t2 Y' l% h
a(4,:)=[zeros(1,4),10,25];# V) L! i4 B" u# j. s$ t
a(5,:)=[zeros(1,5),55];
9 n. \$ `- N$ i% r! E0 T! j6 Ja(6,:)=zeros(1,6);4 r8 e! `( m/ P7 Z* q2 e& x
a=a+a';
$ S9 j/ m) i8 d. Jpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
% G* d' D! F, b/ ]- _) _d(1:length(a))=M;d(1)=0;temp=1;6 C, @* U' S9 o" {4 L# Q
while sum(pb)<length(a)
6 G1 X7 _9 f4 c; V. S tb=find(pb==0);
. v: D. O$ b& U7 \) @ d(tb)=min(d(tb),d(temp)+a(temp,tb));! h0 @8 [( A) K" S
tmpb=find(d(tb)==min(d(tb)));8 a0 e: A7 c) P# P; d
temp=tb(tmpb(1));
* w& Y1 P: W! R7 V pb(temp)=1;
8 G8 y/ D9 E% d& r+ f0 N4 u index1=[index1,temp];3 \5 k5 `- N, t! {" A5 l
index=index1(find(d(index1)==d(temp)-a(temp,index1)));* X4 n! ]) o8 ~ M% d
if length(index)>=2' y" ]; x6 I9 t; x
index=index(1);
! G, g4 K$ H) ]5 l6 e end/ U# q2 N, \+ G( S" p, `( D9 g" d: F+ \
index2(temp)=index;
8 M3 F; C O& q9 Jend- [+ @& h# `. d5 z, K
d, index1, index2
3 {' X; s' J8 R' ^3 X; A* R- s" t& p |
zan
|