理论教育 Floyd算法:解决最短路径问题的有效方法

Floyd算法:解决最短路径问题的有效方法

时间:2023-06-01 理论教育 版权反馈
【摘要】:前面介绍了有正赋权图的有向图和无向图的最短路问题,对于求任意两点间的最短路、混合图的最短路以及有负权图的最短路,介绍一种新的计算方法——Floyd算法。Floyd算法基本步骤如下:1)写出vi一步到达vj的距离矩阵,L1也是一步到达的最短距离矩阵。表7-3就是最优表,即任意两点间的最短距离。表7-7不是对称表,vi到vj与vj到vi的最短距离不一定相等。

Floyd算法:解决最短路径问题的有效方法

前面介绍了有正赋权图的有向图和无向图的最短路问题,对于求任意两点间的最短路、混合图的最短路以及有负权图的最短路,介绍一种新的计算方法——Floyd(弗洛伊德)算法

Floyd算法基本步骤如下:

1)写出vi一步到达vj的距离矩阵978-7-111-46552-2-Chapter07-42.jpgL1也是一步到达的最短距离矩阵。如果vivj之间没有边关联,则令cij=+∞。

2)计算两步最短距离矩阵。设vivj经过一个中间点vr两步到达vj,则vivj的最短距离为:

978-7-111-46552-2-Chapter07-43.jpg

最短距离矩阵记为978-7-111-46552-2-Chapter07-44.jpg

3)计算k步最短距离矩阵。设vi经过中间点vr到达vj,vi经过k-1步到达点vr的最短距离为978-7-111-46552-2-Chapter07-45.jpgvr经过k-1步到达点vj的最短距离为978-7-111-46552-2-Chapter07-46.jpg,则vi经过k步到达vj的最短距离为:

978-7-111-46552-2-Chapter07-47.jpg

978-7-111-46552-2-Chapter07-48.jpg

图7-10

最短距离矩阵记为978-7-111-46552-2-Chapter07-49.jpg

4)比较矩阵LkLk-1,当Lk=Lk-1时得到任意两点间的最短距离矩阵Lk

设图的点数为n并且cij≥0,迭代次数k由式(7-3)估计得到。

978-7-111-46552-2-Chapter07-50.jpg

978-7-111-46552-2-Chapter07-51.jpg

图7-11

应当注意,这里的k是迭代次数,不一定等于vi到达vj最短路中间所经过的点数,中间点最多等于2k-1-1,经过一条边看成是一步,则最多走2k-1步,区分公式中的“步”与实际经过的“步”之间的关系,就不难理解式(7-2)的含义。

【例7.5】 图7-11所示为一张8个城市的铁路交通图,铁路部门要制作一张两两城市间的距离表。这个问题实际就是求任意两点间的最短路问题。

解 1)依据图7-11,写出任意两点间一步到达距离表L1,见表7-1。本例n=8,978-7-111-46552-2-Chapter07-52.jpg,因此计算到L3

2)由式(7-1)得到矩阵L2,见表7-2。

表7-2计算示例。978-7-111-46552-2-Chapter07-53.jpg等于表7-1中第i行与第j列对应元素相加取最小值。例如,v4经过两步(最多一个中间点)到达v3的最短距离是:

978-7-111-46552-2-Chapter07-54.jpg

3)由式(7-2)得到矩阵L3,见表7-3。

表7-3计算示例。978-7-111-46552-2-Chapter07-55.jpg等于表7-2中第i行与第j列对应元素相加取最小值。例如,v3经过三步(最多3个中间点4条边)到达v6的最短距离是:

978-7-111-46552-2-Chapter07-56.jpg(www.daowen.com)

由表7-2及表7-1可知,最短距离由4条边长之和构成:

978-7-111-46552-2-Chapter07-57.jpg

v3v6的最短路线是:v3v2v4v7v6

表7-3就是最优表,即任意两点间的最短距离。取表中下三角得到8个城市间的铁路交通距离表。

表7-1 最短距离表L1

978-7-111-46552-2-Chapter07-58.jpg

表7-2 最短距离表L2

978-7-111-46552-2-Chapter07-59.jpg

表7-3 最短距离表L3

978-7-111-46552-2-Chapter07-60.jpg

978-7-111-46552-2-Chapter07-61.jpg

图7-12

【例7.6】 求图7-12中任意两点间的最短距离。

解 图7-12是一个混合图,有3条边的权是负数,有两条边无方向。依据图7-12,写出任意两点间一步到达距离表L1。表中第一列的点表示弧的起点,第一行的点表示弧的终点,无方向的边表明可以互达,如表7-4所示。计算过程见表7-5~表7-7。

表7-4 一步到达距离表L1

978-7-111-46552-2-Chapter07-62.jpg

表7-5 一步到达距离表L2

978-7-111-46552-2-Chapter07-63.jpg

表7-6 一步到达距离表L3

978-7-111-46552-2-Chapter07-64.jpg

表7-7 一步到达距离表L4

978-7-111-46552-2-Chapter07-65.jpg

经计算L4=L5L4是最优表。表7-7不是对称表,vivjvjvi的最短距离不一定相等。对于有负权图情形,式(7-3)失效。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈