- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
; R9 s" `$ e* b3 L) N( w/ ~& X+ w9 t# H
r A P8 p6 o( p$ K/ B! z; H我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
. X6 T& N$ X0 A7 G
$ {4 |' L7 F) k, }& s& N4 G对了,我还想问最短路径生成树是什么东西??
% g# X \ M5 M3 L6 A) M0 `# H6 x" e' i& c
附程序如下:+ m; Q( E# f; g
clear;
' W- B. K1 _) U7 C$ v2 [5 O$ Fclc;( Z+ \6 E% {; N* {5 x: b
M=10000;
# ]8 D: E' i7 ?( q- c/ Qa(1,:)=[0,50,M,40,25,10];! J% e, J$ v% W: y7 [# I
a(2,:)=[zeros(1,2),15,20,M,25];
$ P! |' \% d- ?6 V1 M% `3 `2 la(3,:)=[zeros(1,3),10,20,M];
# v# l9 P" ]- |5 e5 n+ ta(4,:)=[zeros(1,4),10,25];
6 H1 S& i7 p2 |' e ~a(5,:)=[zeros(1,5),55];
# r) I9 u! A* {/ {8 F% Ka(6,:)=zeros(1,6);, d0 m- v6 o9 Z
a=a+a';
: q% E N) y' Npb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
, D# ~& ?+ w) B# Y" B( u: b/ bd(1:length(a))=M;d(1)=0;temp=1;
! [# }3 J0 X6 j) I+ ?/ Rwhile sum(pb)<length(a)
& s/ ]' h' k0 `; L/ W7 [ tb=find(pb==0);5 U/ w: ~2 v* k9 j3 N3 d
d(tb)=min(d(tb),d(temp)+a(temp,tb));
( L/ C ~' R% b' ` tmpb=find(d(tb)==min(d(tb)));9 Z4 c% _: E" s$ P2 E$ ^1 M
temp=tb(tmpb(1));
+ x/ ^+ n! T9 C; l, F5 ~+ W% W pb(temp)=1;
& X+ q- b* K2 d5 B1 C# L index1=[index1,temp];
8 a, J# C# h, a$ U, w$ | index=index1(find(d(index1)==d(temp)-a(temp,index1)));
/ k- l( \# {9 \* ], A; m8 l if length(index)>=23 n8 s5 X: E; I
index=index(1);
+ @7 {( u% v6 Z" C% V end, W4 M$ ?, {' n0 B
index2(temp)=index;' e% y7 d* R7 ?8 v- n
end
# b3 k( V: [$ |1 B: l7 z/ pd, index1, index2 + p+ f6 q; p- n( B0 A* X3 ^
|
zan
|