- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
' y, v: Z7 B" X1 d* M: ]# }# h- @. p6 v4 k: u
3 ?) t8 \2 }7 m9 N我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。4 a8 K; S8 `* h& t& W4 v8 v
. h& k8 g! s- V% ]2 H+ c9 r
对了,我还想问最短路径生成树是什么东西??5 q5 H$ R: M) Z4 \# L- a
, _4 I) Y) Q2 v7 I1 }9 i
附程序如下:- y N& w" X4 p8 \5 V% E y O
clear;
$ I* @# x2 H: o! Mclc;
$ z- H, w( V5 E" a5 E2 gM=10000;
* X; g; N# E6 X( a% a7 S/ ]a(1,:)=[0,50,M,40,25,10];+ o8 Y8 G$ D' g& N) K
a(2,:)=[zeros(1,2),15,20,M,25];
; L4 {/ Y( z# ba(3,:)=[zeros(1,3),10,20,M];* G& q, o' j3 w/ J6 h" d
a(4,:)=[zeros(1,4),10,25];
/ t4 A9 M5 u/ ~% Xa(5,:)=[zeros(1,5),55];# o* F7 D- B" j+ a( I' D
a(6,:)=zeros(1,6);7 k% G* ]5 C* g2 ~2 `4 K
a=a+a';
2 F' j2 ^ ^% L4 V) n Bpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); v# T( }$ t o1 C8 f" n
d(1:length(a))=M;d(1)=0;temp=1;: I& x4 j0 l+ w) J: m! a) v
while sum(pb)<length(a)
1 `: l5 Q/ Q7 w4 q+ o tb=find(pb==0);3 x2 b; I/ \6 ~% S& I
d(tb)=min(d(tb),d(temp)+a(temp,tb));
0 S- V, w# w9 u/ ~1 r+ ] h tmpb=find(d(tb)==min(d(tb)));! |1 \0 F; Y8 o. M3 C* l) q
temp=tb(tmpb(1));, }) ^& X' ]7 B V1 H% h' ?* B# M
pb(temp)=1;
- x6 r) ]0 e+ [ C& T$ W index1=[index1,temp];/ v4 Y; S/ F! {
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
! V9 Q5 Z2 }% S' X if length(index)>=2
$ H5 O1 ^4 Z* J: i* S9 L1 N index=index(1);6 x8 d& x) X9 z0 d5 `0 N( n
end+ m6 [4 d! D) T+ i' R) i; F8 V: T
index2(temp)=index;
3 p$ t' e# v. w* ~end
, o8 }0 C8 l/ o* v+ `1 }& \, ed, index1, index2
, N7 k3 }" s- a0 [ |
zan
|