美文网首页机器学习
最短路径-弗洛伊德算法

最短路径-弗洛伊德算法

作者: 文哥的学习日记 | 来源:发表于2017-10-01 20:28 被阅读57次

整理自《数据结构高分笔记》

1、算法思想

迪杰斯特拉算法可以得到从图中某一顶点到图中其余每个顶点的最短路径。如果只要求算图中任意一对顶点间的最短路径,则通常用弗洛伊德算法。

关于弗洛伊德算法的原理,我们直接通过一个例子来体会一下:

上图中对应的邻接矩阵为:

初始时要设置两个矩阵A和Path,A用来记录当前已经求得的任意两个顶点的最短路径长度,Path用来记录当前两顶点间最短路径上要经过的中间顶点。

初始时:A和Path如下所示:

第一步
以0作为中间点,参照上一步矩阵的结果,检测所有结点对,假设当前所检测的顶点对为(i,j),如果A[i][j]>A[i][0] + A[0][j],则将A[i][j]改为A[i][0] + A[0][j]的值,并将Path[i][j]改为0.经过本次检测和修改,所得矩阵如下:

第二步
以1为中间节点,参照上一步矩阵的结果,检测所有结点对,其中有:A[0][2]>A[0][1] + A[1][2]=9,所以将A[0][2]改为9,Path[0][2]改为1:

第三步
以2为中间节点,参照上一步矩阵的结果,检测所有结点对,进行修改。

第四步
以3为中间节点,参照上一步矩阵的结果,检测所有结点对,进行修改。

经过上面的步骤,得到的最终的矩阵为:

由矩阵A可以得到图中任意两点之间的最短路径长度,以及最短路径所经过的结点。

相关文章

  • 19-图的最短路径

    图的最短路径 迪杰斯特拉算法 贝尔曼-福特算法 弗洛伊德算法 SPFA算法(中国西南交通大学段凡丁发明) 最短路径...

  • 图-最短路径-弗洛伊德算法

    多源点最短路径-弗洛伊德算法(Floyd) 求所有顶点到所有顶点的最短路径,而迪杰斯特拉是求单源点到所有顶点的最短...

  • 弗洛伊德算法求图的最短路径 JavaScript实现

    弗洛伊德算法求图的最短路径 JavaScript实现 核心思想我们假设Dis(i,j)为节点u到节点v的最短路径的...

  • 《啊哈算法》笔记(一)

    1 桶排序2 冒泡排序3 快速排序4 队列,栈,链表5 弗洛伊德算法 -最短路径:求两个城市之间的最短路径6 迪杰...

  • 最短路径 之 Dijkstra 算法

    • 最短路径 之 Floyd 算法• 最短路径 之 Bellman 算法 Dijkstra算法是用于求解单源最短路...

  • 最短路径-弗洛伊德算法

    整理自《数据结构高分笔记》 1、算法思想 迪杰斯特拉算法可以得到从图中某一顶点到图中其余每个顶点的最短路径。如果只...

  • 最短路径 之 Bellman 算法

    • 最短路径 之 Floyd 算法• 最短路径 之 Dijkstra 算法 Bellman算法差不多是Floyd算...

  • 最短路径 之 Floyd 算法

    • 最短路径 之 Dijkstra 算法• 最短路径 之 Bellman 算法 Floyd算法是基于一种动态规划的...

  • 弗洛伊德算法(最短路径问题)

    1. 介绍: 弗洛伊德算法和迪杰斯特拉算法一样,都是求最短路径的。迪杰斯特拉算法是求某一个顶点到其他各顶点的最短路...

  • 7.8图的应用:最短路径问题

    最短路径问题:Dijkstra算法 ❖解决带权最短路径问题的经典算法是以发明者命名的“Dijkstra算法”❖这是...

网友评论

    本文标题:最短路径-弗洛伊德算法

    本文链接:https://www.haomeiwen.com/subject/sdpnextx.html