========================================================
重要程度 *****
求任意点到其它点间最短距离及其路径。
输入:权值矩阵,起点
输出如下:
点i—>点j
路径 ¥¥¥
距离 ¥¥¥
说明:必须调用E:\matlab M文件\liangdianzuiduanlu.m,请查看网址:
http://blog.csdn.net/lzx19901012/article/details/47832213《图论之最
短路02-1——任意两点间最短距离及路径》
========================================================
function yiduiduozuiduanlu(W)
qidian=input(‘请输入起点:‘);
n=size(W,1);
D=zeros(1,n);
for zhongdian=1:n
[p d]=liangdianzuiduanlu(W,qidian,zhongdian);
Pm{zhongdian}=p;
D(zhongdian)=d;
end
clc
fprintf(‘点%d到其他点的路径和最短距离如下:‘,qidian)
for zhongdian=1:n
fprintf(‘\n 点%d->点%d\n‘,qidian,zhongdian)
disp(‘================================‘)
lujing=Pm{zhongdian}
juli=D(zhongdian)
disp(‘================================‘)
end
================================================================
评:类似于C语言中的函数调用,本程序中调用了《liangdianzuiduanlu.m》,
调用时要求两函数位于同一目录下(可自定义)。
================================================================
例:求下图中点3到其他所有点的最短路径及距离(想想消防路径规划时是不是可以用呢?)
解:
(1)写权值矩阵
quanzhijuzhen=[ 0 2 8 1 Inf Inf Inf Inf
2 0 6 Inf 1 Inf Inf Inf
8 6 0 7 5 1 2 Inf
1 Inf 7 0 Inf Inf 9 Inf
Inf 1 5 Inf 0 3 Inf 8
Inf Inf 1 Inf 3 0 4 6
Inf Inf 2 9 Inf 4 0 3
Inf Inf Inf Inf 8 6 3 0]
(2)带入程序(格式整理后输出如下)
yiduiduozuiduanlu(quanzhijuzhen)
点3到其他点的路径和最短距离如下:
点3->点1
================================
lujing = 3 6 5 2 1 1
juli = 7
================================
点3->点2
================================
lujing = 3 6 5 2 2
juli = 5
================================
点3->点3
================================
lujing = 3
juli = 0
================================
点3->点4
================================
lujing = 3 4
juli = 7
================================
点3->点5
================================
lujing = 3 6 5 5
juli = 4
================================
点3->点6
================================
lujing = 3 6
juli = 1
================================
点3->点7
================================
lujing = 3 7
juli = 2
================================
点3->点8
================================
lujing = 3 7 8
juli = 5
================================
版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。