- 在线时间
- 30 小时
- 最后登录
- 2014-2-8
- 注册时间
- 2012-11-24
- 听众数
- 7
- 收听数
- 0
- 能力
- 0 分
- 体力
- 334 点
- 威望
- 0 点
- 阅读权限
- 30
- 积分
- 140
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 94
- 主题
- 6
- 精华
- 0
- 分享
- 0
- 好友
- 18
升级   20% TA的每日心情 | 郁闷 2014-2-7 13:28 |
|---|
签到天数: 47 天 [LV.5]常住居民I
- 自我介绍
- 好好学习,天天向上。
 |
我手头有一个现成的dijkstra算法的matlab程序,但是只能输出某个点到最短通路的值,以及标号顶点顺序,以及标号顶点索引。
: {6 }+ f8 g8 S7 S% _+ G$ s7 c0 V* _* g& y, W% v/ n% W+ C
Q/ m. ^2 C9 d8 C7 A% U5 R, o我想知道有没有什么程序能够输出具体的最短路径,比如说从1到5的最短路径是1->3->4->5,就是类似这样的,有没有这样的dijkstra程度啊。 如果没有的话,那通过现有的是不是能推出来呢?望高人指点啊~小弟感激不尽。
2 H& S f% c2 w3 h
: V; u! h' ^: T9 Y对了,我还想问最短路径生成树是什么东西??7 h9 ?; J8 D/ k! n6 Z
& C. R! m, U1 V! F9 @4 s) T9 n+ ]附程序如下:
f- K2 Y1 e8 Y0 hclear; V. ]" S& C! v
clc;# m; L: b2 V& V7 i
M=10000;
6 a7 D' z% `$ Z, @5 Q0 y& ea(1,:)=[0,50,M,40,25,10];
8 T# k$ K0 I' k$ B' ha(2,:)=[zeros(1,2),15,20,M,25];
9 Q4 i- i1 U8 p$ K j7 L, na(3,:)=[zeros(1,3),10,20,M];
5 ?( o% p' B0 D' q: C1 ^# la(4,:)=[zeros(1,4),10,25];
& h1 l, i* r) |5 V- K4 \a(5,:)=[zeros(1,5),55];" a' J3 u" H$ L; k
a(6,:)=zeros(1,6);
. k/ L: f, [6 S% _ o4 Xa=a+a';( f' x/ f% ]' W" }; P" T" I
pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a));
. B9 [& r' y9 n1 _" c! {d(1:length(a))=M;d(1)=0;temp=1;
+ s d9 \$ L- j+ xwhile sum(pb)<length(a)
4 a, I, Y5 E$ R* L8 k# t2 H tb=find(pb==0);* G+ c. G7 u" p
d(tb)=min(d(tb),d(temp)+a(temp,tb));- p. G- Q7 O5 n' Q; w
tmpb=find(d(tb)==min(d(tb)));! E/ t( [. j; z- ]! A
temp=tb(tmpb(1));" f, a# g. i. |/ R4 v$ V
pb(temp)=1;
% h9 U# C& S& X5 H) | index1=[index1,temp];6 E* K7 n; S; L/ b, r
index=index1(find(d(index1)==d(temp)-a(temp,index1)));& R) R. R, t ?3 A# _. j1 X2 ^& |
if length(index)>=2. _% \6 X3 g" s/ d: K: [
index=index(1);
! h8 Y$ F; z8 u- W1 S4 C, Q end
5 N3 r) B$ I0 e: _4 z$ X index2(temp)=index;
; k2 D! o7 b* A. L9 `. `end6 s1 S$ h- M5 v8 X7 E$ N
d, index1, index2 ! W5 P3 c( j8 h( l/ B; c5 I5 S
|
zan
|