转:用一个例子说明Floyd算法

简介: 弗洛伊德算法(Floyd's algorithm)是一种用于求带权图中最短路径的算法,适用于带有正负权边的图(但不能有负环)。这种算法也有时被称为弗洛伊德-沃尔什算法。该算法基于动态规划,其时间复杂度为O(V^3),其中V是图中的顶点数。此外,该算法还可用于检测图中的负环并求出传递闭包。

弗洛伊德算法(Floyd's algorithm)是一种用于求带权图中最短路径的算法,适用于带有正负权边的图(但不能有负环)。这种算法也有时被称为弗洛伊德-沃尔什算法。该算法基于动态规划,其时间复杂度为O(V^3),其中V是图中的顶点数。此外,该算法还可用于检测图中的负环并求出传递闭包。

下面是一个使用弗洛伊德算法求图中所有顶点对之间最短路径的示例:
image.png
假设我们有一个具有4个顶点(A,B,C和D)的图,以及以下带权边:
  A -> B: 3
  A -> C: 8
  A -> D: -4
  B -> C: 1
  B -> D: 7
  C -> D: 2

我们可以用矩阵表示每对顶点之间的距离,其中第i行第j列的元素表示从顶点i到顶点j的最短距离。最初,我们将矩阵设置为图中边的值:
  | 0 3 8 -4 |
  | INF 0 1 7 |
  | INF INF 0 2 |
  | INF INF INF 0 |

然后我们使用弗洛伊德算法来更新矩阵:
对于 k = 1 到 V (V 是顶点数),其中V = 4:

  1. 对于 i = 1 到 V:
  2. 对于 j = 1 到 V:
  3. 如果 dist[i][j] > dist[i][k] + dist[k][j],则更新 dist[i][j] = dist[i][k] + dist[k][j]
    算法运行后,最终矩阵将是:
      | 0 3 4 0 |
      | INF 0 1 7 |
      | INF INF 0 2 |
      | INF INF INF 0 |
    从这个矩阵中,我们可以看出从顶点A到顶点B的最短距离是3,从A到C是4,从A到D是0,从B到C是1等。

本文转载自https://www.vipshare.com/archives/10955

目录
相关文章
|
3月前
|
算法
最短路之Floyd算法
最短路之Floyd算法
52 1
|
3月前
|
算法
Floyd 最短路径【学习算法】
Floyd 最短路径【学习算法】
47 0
|
9月前
|
算法
Floyd算法的应用
Floyd算法的应用
43 0
|
4天前
|
算法 Java 测试技术
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
这篇文章介绍了基于动态规划法的三种算法:解决背包问题的递归和自底向上实现、Warshall算法和Floyd算法,并提供了它们的伪代码、Java源代码实现以及时间效率分析。
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
|
2月前
|
存储 算法 C语言
数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)
数据结构学习记录——图-最短路径问题(无权图单源最短路径算法、有权图单源最短路径算法、多源最短路径算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)
49 1
|
3月前
|
算法
Frogger(Floyd算法)
Frogger(Floyd算法)
|
8月前
|
算法
floyd算法
floyd算法
|
10月前
|
存储 算法
最短路径算法( Dijkstra + Bellman-Ford + SPFA + Floyd)
最短路径算法( Dijkstra + Bellman-Ford + SPFA + Floyd)
146 0
|
算法
【路径规划】基于Dijkstra算法及Floyd算法的通信与网络路径规划(Matlab代码实现)
【路径规划】基于Dijkstra算法及Floyd算法的通信与网络路径规划(Matlab代码实现)
103 0
|
6天前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真

热门文章

最新文章