数学建模社区-数学中国

标题: 关于dijkstra的问题。 [打印本页]

作者: 晒个小太阳。    时间: 2013-1-19 22:42
标题: 关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。- T/ @" D+ V8 |% q! `) E: W5 Z, Q

, W" S& M7 V, `, r. O8 u, E9 u
% x, P' _# Q& m8 u+ [$ ~我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。  如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
" I( E' d) e% c2 i6 U! |
% x  l4 m1 y0 o对了,我还想问最短路径生成树是什么东西??
6 E/ e' I3 ~1 |0 r  a% {7 [
& ]4 m1 P- j6 `: e# F1 x附程序如下:
+ {4 d' f6 @" q( Dclear;2 W3 ]# ~, |( F, _8 c7 n$ F
clc;4 w! q1 q) _0 k2 y9 H
M=10000;
, B: G) x- u1 O8 za(1,:)=[0,50,M,40,25,10];
0 r7 `9 M0 {8 x5 r2 @$ t8 _: Ka(2,:)=[zeros(1,2),15,20,M,25];
3 M2 C! v$ V% A  r, D! d6 Ya(3,:)=[zeros(1,3),10,20,M];
, U! ]/ f7 ?5 ]7 G- C0 U* `a(4,:)=[zeros(1,4),10,25];* |, u7 K: ]' r$ J! u( c, @
a(5,:)=[zeros(1,5),55];
/ V! d9 X3 c* R9 p" d! ?a(6,:)=zeros(1,6);
" ~% X# U. t7 A8 D6 G7 @3 u9 Xa=a+a';5 K* I1 e/ z. M/ e& O
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));2 n5 I% M1 g0 l# ~# n3 d
d(1:length(a))=M;d(1)=0;temp=1;
/ W0 X2 W+ r$ R5 [$ f5 kwhile sum(pb)<length(a)
+ a* B( O' ]- T) V/ {& o   tb=find(pb==0);7 [, x* L# W. x  H5 q, l
   d(tb)=min(d(tb),d(temp)+a(temp,tb));
1 i8 U" O- T+ a; o) s- I9 |/ k   tmpb=find(d(tb)==min(d(tb)));
* V  N7 Y: [# ^  p/ D+ v   temp=tb(tmpb(1));
- q! x2 {. [# G   pb(temp)=1;
+ n: B' b; w! J* U) Y* F: D   index1=[index1,temp];
2 J+ G1 n) S" ?   index=index1(find(d(index1)==d(temp)-a(temp,index1)));, B  U5 w2 V2 t4 g
   if length(index)>=21 h5 M; y- d( `$ I/ ~1 W* \0 i3 @8 y
      index=index(1);; Y. a0 e1 `% t, `% h- Q; f& c
   end
9 ~3 R! f) R% b) p5 @   index2(temp)=index;& I: G4 O) O2 k2 u) x
end
) Q4 H* L& u8 M2 _! b; [d, index1, index2 4 G! x, y  c; g

作者: 木兆木风    时间: 2013-1-20 09:36
我这里有VC2008的,需要的话我可以给你发
作者: 和谐宁静    时间: 2013-8-22 18:50
用LINGo挺好的 对于这个算法




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5