- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
" _" v5 f5 m) S& ]* u' K1 g9 S1 r% j/ F
2 @: V6 o; b( _( b7 l* v! R5 k4 S我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。; v2 O- X" u/ D2 y
9 c; K: B8 e4 d( M' H `$ V对了,我还想问最短路径生成树是什么东西??0 @" d3 M* Q7 {; h& G+ x0 [' [
7 R! n. w8 M% Q3 h m7 d$ `" g
附程序如下:" ^" `/ n, d' R# w& k3 v) G: ?
clear;, y' u! H" S/ n4 [, R
clc;7 w( o. A! O: a# Z/ x. a3 {5 x; U
M=10000;
( G e3 X: R+ b; P1 P5 za(1,:)=[0,50,M,40,25,10];
/ L/ X* t5 N- F2 Ka(2,:)=[zeros(1,2),15,20,M,25];9 G9 z8 K* Q* s3 x# u& W9 A
a(3,:)=[zeros(1,3),10,20,M];( q" ?$ M6 S {" [
a(4,:)=[zeros(1,4),10,25];" I9 Q/ Y9 A+ g
a(5,:)=[zeros(1,5),55];7 s$ x9 D$ b5 B4 Z! g j8 V: s9 j7 J
a(6,:)=zeros(1,6);
4 U+ v/ c7 U* l3 [; l% Ja=a+a';
8 g5 v# ^, {2 _3 {pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
* f& S5 `" Y W/ d* Z, od(1:length(a))=M;d(1)=0;temp=1;
5 i4 w. l; ^3 }9 t8 r: [while sum(pb)<length(a)
8 T$ |" H! M2 i0 o6 Y tb=find(pb==0);
& w0 }- T, `( |8 e) h/ _ d(tb)=min(d(tb),d(temp)+a(temp,tb));) K; z7 c4 [8 \7 A/ I
tmpb=find(d(tb)==min(d(tb))); M! k0 q) V( D* l# k# q8 t
temp=tb(tmpb(1));
, N5 i# ?. j! `, V4 s7 A/ ? pb(temp)=1;
& P* I# n7 u; d7 B index1=[index1,temp];) ^4 X5 Q; E! A$ i) c. h$ U
index=index1(find(d(index1)==d(temp)-a(temp,index1)));2 f# v: w9 k3 T; x; k
if length(index)>=2
" \" C! T+ X& T7 f, ~+ G$ ? index=index(1);' A- w9 _) f8 ~ k; }
end1 b$ s8 A m2 [9 V, i2 L
index2(temp)=index;8 [3 l$ ?$ x+ l* Z/ {
end
& d3 g, P5 y) _$ _( M$ y# md, index1, index2
# [4 n- i. i0 x- v1 W |
zan
|