- 在线时间
- 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程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
; k$ L/ N5 H9 A% O
% l1 C7 z0 f; t* a- g8 g i! |2 k# f7 V* q e
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
" E4 h1 Y' M. o. s$ a. s6 r8 ~# P2 c t' u
对了,我还想问最短路径生成树是什么东西??
% S. i- o$ ~$ o( u' C
( P4 w0 h8 X; t附程序如下:
7 S% i3 n1 r1 dclear; A; [) K' F X, C* v) W
clc;; p9 ]4 e, L) z/ H
M=10000;# w! e9 h, ~) U; m: x
a(1,:)=[0,50,M,40,25,10];
# z: d1 u2 q! Y4 q# \7 j+ k. p! _a(2,:)=[zeros(1,2),15,20,M,25];- F; p7 N/ c3 D5 g/ u
a(3,:)=[zeros(1,3),10,20,M];
9 w8 K- j% Q+ u" b$ ha(4,:)=[zeros(1,4),10,25];
1 I3 P; P' p w/ E2 t4 E% i8 _a(5,:)=[zeros(1,5),55];
, [3 G0 N+ j7 k* L5 q% ~9 Ea(6,:)=zeros(1,6);0 w2 M* b5 P! s1 p2 j) N
a=a+a';
* S6 z0 Z3 y: ?# Zpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
' z7 @- ?" }1 k' l }0 ad(1:length(a))=M;d(1)=0;temp=1;, ?6 i- Z: A1 w
while sum(pb)<length(a)
1 ]$ B ?+ Y9 U/ m w tb=find(pb==0);) E; V* J4 q% d0 z4 z% Z- y
d(tb)=min(d(tb),d(temp)+a(temp,tb));2 [ H3 s1 b8 t. E" e$ J- @2 I4 N
tmpb=find(d(tb)==min(d(tb)));
8 x+ p$ s! w/ _ p- [8 w temp=tb(tmpb(1));
5 Y0 N" R) [# u2 @6 _+ ?" ` pb(temp)=1;& X/ {5 W: g2 c, n& ^4 c4 w
index1=[index1,temp];- N& K8 p3 E8 b% J, V0 \9 w
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
3 G0 f' }% G9 ?* U; w2 a, c if length(index)>=2
! y7 g8 S1 \ H+ r* h# Q. @ index=index(1);
5 g6 ^" p: p8 k" j/ @1 Z4 t8 e end5 c! a, [& [8 Y* Y0 s/ X; z/ m* G% U0 g
index2(temp)=index;
a& p- e4 `4 ~5 N5 n) s6 p$ Wend7 g. ^( q! }: K I+ L
d, index1, index2 1 ]6 U+ ^& f0 R" t9 w
|
zan
|