数学建模社区-数学中国
标题:
关于dijkstra的问题。
[打印本页]
作者:
晒个小太阳。
时间:
2013-1-19 22:42
标题:
关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
. E9 V+ a" h( T4 e# }
$ g4 K. g% F+ ?* s, V, {+ p
: } i9 n' ]0 b& U0 e
我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
; K! V; M1 }5 c+ ~ S1 Z
: t6 g' k; ?: y* Z* Q) K
对了,我还想问最短路径生成树是什么东西??
# B0 _) a# x8 N* l( J3 a
% F; c, k4 }$ K
附程序如下:
5 o8 _& q" i2 Q; S
clear;
! x: l' K2 X% B5 L X* f
clc;
# ]/ R1 f; T8 b' k" p3 j9 {
M=10000;
3 M' d% G+ s- p% p: Q* n( k/ T! f
a(1,:)=[0,50,M,40,25,10];
" Z% R9 w$ r% E8 u l" c+ Q4 b8 }
a(2,:)=[zeros(1,2),15,20,M,25];
( b0 F9 w6 e q# [
a(3,:)=[zeros(1,3),10,20,M];
$ W. G: o _4 ^
a(4,:)=[zeros(1,4),10,25];
" R; U* g8 _ y4 A9 W6 r& o! s4 H
a(5,:)=[zeros(1,5),55];
0 f# q' f# a6 o2 |8 }% s2 P0 k
a(6,:)=zeros(1,6);
6 {! }+ p; S ~# p! Q; s
a=a+a';
4 e" H& {4 B3 ]3 X7 A
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
4 \6 h* `3 S9 A4 A
d(1:length(a))=M;d(1)=0;temp=1;
4 d1 F# T" _9 E3 p& c/ Q
while sum(pb)<length(a)
# j; o3 H" c" n8 X- ?2 X: l5 f
tb=find(pb==0);
" _3 X: ]# {, C3 m# H7 ^
d(tb)=min(d(tb),d(temp)+a(temp,tb));
4 U5 k$ K2 v5 U7 q7 b, t2 [
tmpb=find(d(tb)==min(d(tb)));
& [$ a6 J2 i/ q" G3 r) C
temp=tb(tmpb(1));
9 k/ o3 a/ _) d( N. d+ U% C
pb(temp)=1;
: c1 \9 j) q% i" q: H
index1=[index1,temp];
% D. y# p& U2 K7 }' z, J
index=index1(find(d(index1)==d(temp)-a(temp,index1)));
' T& w( S8 s0 z! ~
if length(index)>=2
- A4 y' g) K/ }* a; u7 u4 Q
index=index(1);
! r$ a, f" P5 L& W" Y l7 b- t
end
! w- l! C0 R1 H' u
index2(temp)=index;
% h( x5 }6 h: `5 T& c+ c0 \
end
4 ~" E* x1 R+ B2 e9 m+ B: W
d, index1, index2
9 E+ O- C- @ e) e
作者:
木兆木风
时间:
2013-1-20 09:36
我这里有VC2008的,需要的话我可以给你发
作者:
和谐宁静
时间:
2013-8-22 18:50
用LINGo挺好的 对于这个算法
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5