例题:
现有一张城市地图如图4-10所示,图4-10中的顶点为城市,边代表两个城市间的连通关系,边上的权即为距离。每一对可达的城市间设计一条公共汽车线路,要求线路的长变在所有可能的方案里是最短的。
图1 公交车线路
由图1可知,很显然,这个问题可以抽象成为求连通图中任意两个顶点之间的最短距离,矩阵如下:
根据Floyd 算法的步骤对该问题进行求解,编程如下:
clc %清屏
clear all;%删除workplace变量
close all;%关掉显示图形窗口
x7=[0 1 inf inf inf 2; %DO
1 0 4 inf inf 4 ;
inf 4 0 2 inf 1;
inf inf 2 0 3 3;
inf inf inf 3 0 5;
2 4 1 3 5 0 ] ;
n=length(x7);
path=zeros (n);%floyd最小距离法
for k=1 :n
for i=1:n
for j=1:n
if x7(i,j)>x7(i,k)+x7(k,j) %节点直接连接大于中间插入的节点时
x7(i,j)=x7(i,k)+x7(k,j);%记录更新
path (i,j)=k;%路由号记录
end
end
end
end
x7
path
输出的结果为:
x7 =
0 1 3 5 7 2
1 0 4 6 8 3
3 4 0 2 5 1
5 6 2 0 3 3
7 8 5 3 0 5
2 3 1 3 5 0
path =
0 0 6 6 6 0
0 0 0 3 6 1
6 0 0 0 4 0
6 3 0 0 0 0
6 6 4 0 0 0
0 1 0 0 0 0文章来源:https://www.toymoban.com/news/detail-429699.html
其中 path 中为o,表示不需要经过中转站,直接到达该位置。例如,path(1,2)=0,而x7(1,2)=1,表示第1站到第2站之间直接到达,表示第1站需要经过第6站台作为中转站方能抵达第3站,最短路为3,其他依此类推。文章来源地址https://www.toymoban.com/news/detail-429699.html
到了这里,关于Floyd算法的MATLAB代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!