最短路dijkstra算法Matlab程序调用举例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最短路dijkstra算法Matlab程序调用举例

2014/4/17

徐明华

设赋权图如下图所示

下述Matlab程序

% test dijkstra's algorithm

% The test example is take from the following book

% Graph Theory with Applications by J. A. Bondy and U. S. R. Murty. % Page 16.

clc

s=1;

t=5;

flag=1;

W=ones(11,11)*inf; %

for i=1:11

W(i,i)=0;

end

W(1,2)=2; W(2,1)=2;

W(2,3)=1; W(3,2)=1;

W(3,4)=2; W(4,3)=2;

W(4,5)=9; W(5,4)=9;

W(5,6)=4; W(6,5)=4;

W(6,7)=1; W(7,6)=1;

W(7,8)=9; W(8,7)=9;

W(8,1)=1; W(1,8)=1;

W(1,9)=8; W(9,1)=8;

W(9,2)=6; W(2,9)=6;

W(9,8)=7; W(8,9)=7;

W(9,7)=2; W(7,9)=2;

W(9,10)=1;W(10,9)=1;

W(9,3)=5; W(3,9)=5;

W(10,7)=4; W(7,10)=4;

W(10,11)=6; W(11,10)=6;

W(10,3)=3; W(3,10)=3;

W(11,7)=3; W(7,11)=3;

W(11,6)=1; W(6,11)=1;

W(11,4)=7; W(4,11)=7;

W(11,5)=2; W(5,11)=2;

W(11,3)=9; W(3,11)=9;

[c0,c,path0,path]=dijkstra(s,t,W,flag);

c0

path0

调用matlab函数dijkstra(具体见本文库文档:最短路dijkstra算法Matlab程序), 可得到顶点v1 到顶点v5的最短路径path0及最短路径的长度c0如下:

c0 = 13

path0 = 1 2 3 10 9 7 6 11 5

如果将上述程序中的语句

flag=1;

替换为

flag=2;

并将

[c0,c,path0,path]=dijkstra(s,t,C,flag);

c0

path0

替换为

[c0,c,path0,path]=dijkstra(s,t,C,flag);

c

path

运行程序可得到顶点v1到图中其他各顶点的最短路径所成矩阵path和各最短路径的长度所成向量c,其中path的第i行表示v1到第i个顶点的最短路径,c(i) 为v1到第i个顶点的最短路径的长度。具体运算结果如下:

c =

0 2 3 5 13 10 9 1 7 6 11

path =

1 0 0 0 0 0 0 0 0 0 0

1 2 0 0 0 0 0 0 0 0 0

1 2 3 0 0 0 0 0 0 0 0

1 2 3 4 0 0 0 0 0 0 0

1 2 3 10 9 7 6 11 5 0 0

1 2 3 10 9 7 6 0 0 0 0

1 2 3 10 9 7 0 0 0 0 0

1 8 0 0 0 0 0 0 0 0 0

1 2 3 10 9 0 0 0 0 0 0

1 2 3 10 0 0 0 0 0 0 0

1 2 3 10 9 7 6 11 0 0 0 此外,改变程序中变量s和t的取值,可以得到其他顶点之间的最短路径。

相关文档
最新文档