数学建模社区-数学中国
标题:
关于dijkstra的问题。
[打印本页]
作者:
晒个小太阳。
时间:
2013-1-19 22:42
标题:
关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
7 B8 B6 r2 l8 f
4 ~5 ~" Z+ [ F: U# S" P: v8 @
0 @% S1 {- O- e4 A4 N
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
) u% y2 f F+ M9 N6 z: I d
, _" @% {: S8 B: X7 @! d8 n$ K
对了,我还想问最短路径生成树是什么东西??
+ v! K9 C1 | C
4 Z" C5 w+ z0 D7 _# B- f4 A0 ~
附程序如下:
9 k/ ]" b H# A# i* x+ c$ e8 a5 l$ C
clear;
1 Q9 I y* j( V/ W8 V6 e) w
clc;
2 F7 m' f' B) I8 h2 ]
M=10000;
# F( O0 p. Z, s6 o
a(1,:)=[0,50,M,40,25,10];
* {4 i# w" j, b: ^/ U. i) e
a(2,:)=[zeros(1,2),15,20,M,25];
1 x/ F3 M7 ~& f- f2 \' T7 ]
a(3,:)=[zeros(1,3),10,20,M];
7 J7 n+ A! _, |0 Z9 N
a(4,:)=[zeros(1,4),10,25];
9 C: g& s) n3 h% @ t
a(5,:)=[zeros(1,5),55];
( l% Z2 g% k" [1 ~8 R
a(6,:)=zeros(1,6);
! s) w" Q3 q* @# c1 M) }
a=a+a';
- E/ `' i3 A4 U$ f! ? v
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
- t4 J. x/ N% i
d(1:length(a))=M;d(1)=0;temp=1;
: @, X/ @+ p, ?- \0 x o6 G8 a N
while sum(pb)<length(a)
. g! l6 P! [# P6 `# R" P( t; I; X
tb=find(pb==0);
& c: \+ W- S8 O" k& l4 n; c l
d(tb)=min(d(tb),d(temp)+a(temp,tb));
) P; b( L! `/ g e9 o: n+ w' z7 t
tmpb=find(d(tb)==min(d(tb)));
" b F' h+ l) e& g/ F/ _' Z
temp=tb(tmpb(1));
) ~/ b2 Z6 D0 P) U. n/ O- q
pb(temp)=1;
+ ?8 G) m/ m! ~% m
index1=[index1,temp];
) H( N; w2 a. c6 j" |, y
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
5 S* J; ~; V y4 Q* C* M! y, F. W
if length(index)>=2
1 Z* r" @* P5 K" E8 N
index=index(1);
7 F" ^& |) N1 l$ I. P; T3 ]; n
end
! \* ^; M6 X: U6 `0 X0 o
index2(temp)=index;
6 ^0 x& s4 d5 |' v
end
* K* X1 S5 S" _( W0 W+ L* Q; c
d, index1, index2
# w3 j9 Y; Y0 X$ y
作者:
木兆木风
时间:
2013-1-20 09:36
我这里有VC2008的,需要的话我可以给你发
作者:
和谐宁静
时间:
2013-8-22 18:50
用LINGo挺好的 对于这个算法
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5