数学建模社区-数学中国

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

作者: 晒个小太阳。    时间: 2013-1-19 22:42
标题: 关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。% V; Q3 m% P' k6 a. p
$ s9 e2 K$ Y8 i# `- Z# e

6 S5 c6 b) d" m) Q我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。  如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。( N, M. B$ D) I: O. ?
1 O! S% ~$ v' t% a" q9 o
对了,我还想问最短路径生成树是什么东西??* ]2 t: |9 o  k; G1 {. Q6 }
1 |: n9 B) F  D
附程序如下:% ^- W& f) s1 a5 L& @' E
clear;
! v5 q) j, H+ W+ b8 Nclc;$ p' P! f3 t  C0 v$ S: }; x
M=10000;
8 [; p. A1 A8 T% c. m4 T, ?a(1,:)=[0,50,M,40,25,10];
# f4 [% f; }/ V  k) T# ^a(2,:)=[zeros(1,2),15,20,M,25];
( T2 H$ K+ a& A# x( s; Ha(3,:)=[zeros(1,3),10,20,M];, c: A* j' o1 j! D5 ?1 @8 b! L
a(4,:)=[zeros(1,4),10,25];
9 D0 N* f' o; t! r3 O/ i2 ca(5,:)=[zeros(1,5),55];8 v% a9 x7 y: m4 \' M
a(6,:)=zeros(1,6);5 w7 k$ }' V! }) I% L& R; i3 X
a=a+a';
+ w; m- V, a  M0 @  @" H) p  rpb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
8 d! G0 l; t0 H! W: S+ b* ?: S, Ld(1:length(a))=M;d(1)=0;temp=1;
3 F4 d3 J2 R6 o: jwhile sum(pb)<length(a)
, o* w" n( ]" o9 j& y   tb=find(pb==0);
' I- A1 }4 y, {3 X6 @5 a   d(tb)=min(d(tb),d(temp)+a(temp,tb));( ]! |# d4 ?2 _
   tmpb=find(d(tb)==min(d(tb)));
% j$ p6 M% y# U8 e7 ^  C   temp=tb(tmpb(1));- f3 L7 O+ f- w' I  \+ K
   pb(temp)=1;: I' H7 x: K) H2 g) X+ M
   index1=[index1,temp];; `2 g  |$ E8 H, T. W
   index=index1(find(d(index1)==d(temp)-a(temp,index1)));
. m- D, U; L" T: [/ c   if length(index)>=2. M) r- R8 Z! c/ Q% c  U6 j8 c
      index=index(1);5 Q7 t% w1 g2 h* @2 t) g
   end" N" |0 F4 W' G7 V' b  y$ B4 r
   index2(temp)=index;  p" y5 u  F& K/ k  N
end0 }- B3 F# q! x' j# x
d, index1, index2 9 }! W# e+ b& J/ U5 v* m

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




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