- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
- G v0 a+ K5 K% v
& a& n" a% s9 x# @; m7 k4 P' @3 q& j8 X: t' O
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
5 z0 C! S( q: T0 O. R" i C' e
$ z0 ^- j) h& J @( I" b对了,我还想问最短路径生成树是什么东西??
1 k4 Y0 I* `% p# |% ~8 R0 J8 O) w9 N2 w% K9 Q3 q2 y, |" }3 d
附程序如下:% ~. a4 L, B' A/ H
clear;
& P2 U6 g4 f2 E( ?: R1 oclc;
+ ~/ D- o2 ^' r- {7 J! ?3 l1 K0 yM=10000;
& p/ j5 ?" W4 ^' C2 J# o7 Wa(1,:)=[0,50,M,40,25,10]; w! {+ @3 {8 g5 O8 g
a(2,:)=[zeros(1,2),15,20,M,25];
, m( o$ }. ?: {+ o; la(3,:)=[zeros(1,3),10,20,M];
( j. B( x4 s9 y; R& v H' A+ Xa(4,:)=[zeros(1,4),10,25];
4 ^: H+ R. G5 p1 Wa(5,:)=[zeros(1,5),55];0 z6 C( w& g% A/ d' X
a(6,:)=zeros(1,6);
$ Q, q9 Y+ U/ ?a=a+a';
4 d, N. Q3 e: D, v3 r% {pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
3 K9 h# h0 t6 e- wd(1:length(a))=M;d(1)=0;temp=1;! x4 L3 B9 k' ~" A
while sum(pb)<length(a)
A* w/ L- G6 [ tb=find(pb==0);
# }0 o, Q* f6 A2 F d(tb)=min(d(tb),d(temp)+a(temp,tb));2 S; z# \5 ]1 s- G! ~' } M+ k
tmpb=find(d(tb)==min(d(tb)));
8 B" N) K0 @1 o& N temp=tb(tmpb(1));
! R# d4 k& }! Q- E; l- ? pb(temp)=1;
6 f: O5 D& R X5 Z' S- e index1=[index1,temp];
* A4 S1 |0 Q, v( \6 k. E! T+ D0 ?- S/ x index=index1(find(d(index1)==d(temp)-a(temp,index1)));
9 A* R: ?, L& I1 r+ ~7 R if length(index)>=2
- F! D+ J1 y8 A index=index(1);
Q s' r% Q( ?+ y; q, d( k end% w6 L7 t/ q2 u- \. F% o' I
index2(temp)=index;
# V* Y6 s2 l/ K, w& i7 Tend& y, Z+ l3 j( _% T
d, index1, index2 . c/ ?7 M2 B- r, d' X+ k1 Z, I4 |
|
zan
|