- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。# h" x$ X3 _& c* h2 e; R+ ^
( H$ r# ?: w% S- H% I' f) D, `' ?6 _3 k! ~3 Y) B
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。8 {7 z$ e# e% y
9 N8 g; U7 z6 z+ c0 U对了,我还想问最短路径生成树是什么东西??* ]4 O" q& q) ]0 v2 g& j# s6 {/ A
9 i) F7 {. r6 o' l& g/ C3 T附程序如下:6 x4 J2 M6 B0 C
clear;5 I' Q, p- t$ f$ [' b; o2 V8 h0 Y
clc;5 M% Q9 N6 [4 V6 `4 ~, v
M=10000;
* C2 t0 q- U% b ^6 [) r; `a(1,:)=[0,50,M,40,25,10];, p& L- `# ?& M1 r% p: q& i8 D. a
a(2,:)=[zeros(1,2),15,20,M,25];
% `" R6 i7 Y" P, L8 p9 ra(3,:)=[zeros(1,3),10,20,M];
) d' i" z t) }! S- w. q' na(4,:)=[zeros(1,4),10,25];
; B9 A% {# { G8 n, ]# sa(5,:)=[zeros(1,5),55];
& \1 u" I$ j4 L" H. W3 F# i/ aa(6,:)=zeros(1,6);
5 y+ f0 E" K4 D& ra=a+a';
, d# I* P' U. V$ mpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));. ~* D/ t$ J& T8 i
d(1:length(a))=M;d(1)=0;temp=1;+ V3 b ~5 N/ q# q, `
while sum(pb)<length(a), B M( b; _& u Q% C4 I
tb=find(pb==0);
% q! D' h" K( Q1 j: I d(tb)=min(d(tb),d(temp)+a(temp,tb));
* l J4 _/ {+ k! i tmpb=find(d(tb)==min(d(tb)));/ b' B1 q \3 O9 ^
temp=tb(tmpb(1));
$ D7 K( h0 S* \+ m: K7 D1 G pb(temp)=1;9 Q# x0 P! f; t# m4 f4 B5 ?
index1=[index1,temp];. I# N2 H+ Q- W3 D( {" j
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
4 A9 P$ Q. U3 y! n& X& _$ N if length(index)>=2
: D$ z# m( v \% K$ x! K index=index(1);* s7 Y$ W* Q4 z
end
, q* z* S% H7 t1 ^/ e" Q index2(temp)=index;$ }' w) I! g, |) L9 O
end1 N0 y# H1 a: n) M; A! {" k" ~. L
d, index1, index2
& R" s4 l7 ]7 q* e. Y |
zan
|