数学建模社区-数学中国

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

作者: 晒个小太阳。    时间: 2013-1-19 22:42
标题: 关于dijkstra的问题。
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。2 h6 K6 U6 D$ `9 X7 g' ?

( C5 Y! z6 X( ^! H
; Z. R, W5 U. h" N我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。  如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
' G9 Z! y* C% @# y) s6 s: h
; S& @+ Q7 g$ T3 W" x对了,我还想问最短路径生成树是什么东西??
5 x7 I. }3 c# y2 K3 E* |* o" K4 f
附程序如下:' U/ z6 n) I9 Z& D5 R/ H
clear;# Z  ^# P: }) U/ }, [  q6 w
clc;& x; C) ~. o+ ~% Y
M=10000;: L) v5 b9 U/ `5 k* o
a(1,:)=[0,50,M,40,25,10];
8 w# T% L* `/ ~9 ?: r0 I, z4 Wa(2,:)=[zeros(1,2),15,20,M,25];1 `/ S, H9 u' N* l( }
a(3,:)=[zeros(1,3),10,20,M];2 n) W: ?& Z7 q+ s+ A, n
a(4,:)=[zeros(1,4),10,25];( @4 \3 a' Y; W# O
a(5,:)=[zeros(1,5),55];1 L. m6 q: P! e. u" ?( a! C
a(6,:)=zeros(1,6);
5 X% U% p- z7 U  h% r) [. sa=a+a';. q( e# [0 U& x5 [
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
! t4 ]( O: n# f' b" rd(1:length(a))=M;d(1)=0;temp=1;" a# E( A  p. g5 G% k, g
while sum(pb)<length(a)
. v* D/ C0 ~% O* \; V   tb=find(pb==0);! i% y6 ]6 J) f4 {, S
   d(tb)=min(d(tb),d(temp)+a(temp,tb));
: v4 Z. Y& w$ z, k   tmpb=find(d(tb)==min(d(tb)));
3 {) \5 Q. ]* Q: X   temp=tb(tmpb(1));# y* t* O0 r7 I% e+ P: v* R( x
   pb(temp)=1;
9 ?; O/ Z* H' S! P1 s/ D" P' R" c/ U   index1=[index1,temp];1 B$ B; V8 q4 I. Q' d
   index=index1(find(d(index1)==d(temp)-a(temp,index1)));7 p5 }# P. e0 ?; p- @+ W
   if length(index)>=2
& _2 |1 H$ \1 @      index=index(1);
7 s+ `" L3 k. [* V/ X! y& q   end
5 C; Y1 L# X0 ^) u, I0 z% P  Y2 q   index2(temp)=index;& q3 |, M% p( y4 G' L0 O
end- W7 {2 N' a) Q- h5 |$ N" J
d, index1, index2
4 p8 Q& l: f5 x6 _4 N
作者: 木兆木风    时间: 2013-1-20 09:36
我这里有VC2008的,需要的话我可以给你发
作者: 和谐宁静    时间: 2013-8-22 18:50
用LINGo挺好的 对于这个算法




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