弗洛伊德算法的发明背景,弗洛伊德算法详细讲解

首页 > 教育 > 作者:YD1662024-05-15 09:23:12

如现在只允许经过1号顶点,求任意两点之间的最短路程,应该如何求呢?只需判断e[i][1] e[1][j]是否比e[i][j]要小即可。e[i][j]表示的是从i号顶点到j号顶点之间的路程。e[i][1] e[1][j]表示的是从i号顶点先到1号顶点,再从1号顶点到j号顶点的路程之和。其中i是1~n循环,j也是1~n循环,代码实现如下↓

弗洛伊德算法的发明背景,弗洛伊德算法详细讲解(5)

在只允许经过1号顶点的情况下,任意两点之间的最短路程更新为↓

弗洛伊德算法的发明背景,弗洛伊德算法详细讲解(6)

通过上图我们发现:在只通过1号顶点中转的情况下,3号顶点到2号顶点(e[3][2])、4号顶点到2号顶点(e[4][2])以及4号顶点到3号顶点(e[4][3])的路程都变短了。

接下来继续求在只允许经过1和2号两个顶点的情况下任意两点之间的最短路程。如何做呢?我们需要在只允许经过1号顶点时任意两点的最短路程的结果下,再判断如果经过2号顶点是否可以使得i号顶点到j号顶点之间的路程变得更短。即判断e[i][2] e[2][j]是否比e[i][j]要小,代码实现为如下↓

弗洛伊德算法的发明背景,弗洛伊德算法详细讲解(7)

在只允许经过1和2号顶点的情况下,任意两点之间的最短路程更新为:

弗洛伊德算法的发明背景,弗洛伊德算法详细讲解(8)

上一页1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.