最短路dijkstra算法Matlab程序调用举例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的取值,可以得到其他顶点之间的最短路径。