数学建模社区-数学中国

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

作者: 晒个小太阳。    时间: 2013-1-19 22:42
标题: 关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
7 B8 B6 r2 l8 f4 ~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 |  C4 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) wclc;
2 F7 m' f' B) I8 h2 ]M=10000;
# F( O0 p. Z, s6 oa(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 Na(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 Ra(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  Nwhile 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; cd, 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