Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告.docx
- 文档编号:6618332
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:11
- 大小:137.34KB
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告.docx
《Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告.docx》由会员分享,可在线阅读,更多相关《Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告
实验四:
Floyd算法
一、实验目的
利用MATLAB实现Floyd算法,可对输入的邻接距离矩阵计算图中任意两点间的最短距离矩阵和路由矩阵,且能查询任意两点间的最短距离和路由。
二、实验原理
Floyd算法适用于求解网络中的任意两点间的最短路径:
通过图的权值矩阵求出任意两点间的最短距离矩阵和路由矩阵。
优点是容易理解,可以算出任意两个节点之间最短距离的算法,且程序容易实现,缺点是复杂度达到,不适合计算大量数据。
Floyd算法可描述如下:
给定图G及其边(i,j)的权wi,j(1≤i≤n,1≤j≤n)
F0:
初始化距离矩阵W(0)和路由矩阵R(0)。
其中:
F1:
已求得W(k-1)和R(k-1),依据下面的迭代求W(k)和R(k)
F2:
若k≤n,重复F1;若k>n,终止。
三、实验内容
1、用MATLAB仿真工具实现Floyd算法:
给定图G及其边(i,j)的权
wi,j(1≤i≤n,1≤j≤n),求出其各个端点之间的最小距离以及路由。
(1)尽可能用M函数分别实现算法的关键部分,用M脚本来进行算法结
果验证;
(2)分别用以下两个初始距离矩阵表示的图进行算法验证:
分别求出W(7)和R(7)。
2、根据最短路由矩阵查询任意两点间的最短距离和路由
(1)最短距离可以从最短距离矩阵的ω(i,j)中直接得出;
(2)相应的路由则可以通过在路由矩阵中查找得出。
由于该程序中使用的是前向矩阵,因此在查找的过程中,路由矩阵中r(i,j)对应的值为Vi到Vj路由上的下一个端点,这样再代入r(r(i,j),j),可得到下下个端点,由此不断循环下去,即可找到最终的路由。
(3)对图1,分别以端点对V4和V6,V3和V4为例,求其最短距离和路由;对图2,分别以端点对V1和V7,V3和V5,V1和V6为例,求其最短距离和路由。
3、输入一邻接权值矩阵,求解最短距离和路由矩阵,及某些点间的最短路径。
四、采用的语言
MatLab
源代码:
【func1.m】
function[wr]=func1(w)
n=length(w);
x=w;
r=zeros(n,1);%路由矩阵的初始化
fori=1:
1:
n
forj=1:
1:
n
ifx(i,j)==inf
r(i,j)=0;
else
r(i,j)=j;
end,
end
end;
%迭代求出k次w值
fork=1:
n
a=w;
s=w;
fori=1:
n
forj=1:
n
w(i,j)=min(s(i,j),s(i,k)+s(k,j));
end
end
%根据k-1次值和k次w值求出k次r值
fori=1:
n
forj=1:
n
ifi==j
r(i,j)=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Floyd 算法 计算 短距离 矩阵 路由 查询 matlab 实验 报告