带你读《图解算法小抄》二十五、图(3)

简介: 带你读《图解算法小抄》二十五、图(3)

带你读《图解算法小抄》二十五、图(2)https://developer.aliyun.com/article/1347771?groupCode=tech_library


4.Floyd-Warshall 算法


在计算机科学中,Floyd-Warshall 算法是一种用于在具有正或负边权重(但没有负循环)的加权图中找到最短路径的算法。该算法的一次执行可以找到所有顶点对之间的最短路径长度(加权之和)。尽管它不返回路径的详细信息,但可以通过对算法进行简单修改来重构路径。

1算法

Floyd-Warshall 算法比较了图中每对顶点之间的所有可能路径。在图中进行 O(|V|^3) 次比较。这是非常了不起的,因为图中可能有多达 |V|^2 条边,而且需要测试每种边的组合。算法通过逐步改进两个顶点之间的最短路径估计,直到估计达到最优解。

 

考虑一个图 G,顶点 V 的编号从 1 到 N。进一步考虑一个函数 shortestPath(i, j, k),它返回仅使用集合 {1, 2, ..., k} 中的顶点作为中间点的路径,从 i 到 j 的最短路径。现在,给定该函数,我们的目标是找到每个 i 到每个 j 的最短路径,只使用顶点集 {1, 2, ..., N}。

image.pngimage.png

这个公式是 Floyd-Warshall 算法的核心。

2示例

上述算法在下图中的图上执行:

 

image.png

 

下表中 i 是行号,j 是列号。

 

 

 

k = 0

 

1

2

3

4

1

0

−2

2

4

0

3

3

0

2

4

−1

0

 

k = 1

 

1

2

3

4

1

0

−2

2

4

0

2

3

0

2

4

−1

0

 

k = 2

 

1

2

3

4

1

0

−2

2

4

0

2

3

0

2

4

3

−1

1

0

 

 

k = 3

 

1

2

3

4

1

0

−2

0

2

4

0

2

4

3

0

2

4

3

−1

1

0

 

k = 4

 

1

2

3

4

 

 

 

 

 

 

1 | 0 | −1 | −2 | 0 | | 2 | 4 | 0 | 2 | 4 | | 3 | 5 | 1 | 0 | 2 | | 4 | 3 | −1 | 1 | 0 |

3参考资料

  • Wikipedia
  • YouTube (by Abdul Bari)
  • YouTube (by Tushar Roy)

带你读《图解算法小抄》二十五、图(4)https://developer.aliyun.com/article/1347769?groupCode=tech_library

相关文章
|
6月前
|
存储 人工智能 算法
图与树的遍历:探索广度优先、深度优先及其他遍历算法的原理与实现
图与树的遍历:探索广度优先、深度优先及其他遍历算法的原理与实现
398 0
|
5月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
47 4
|
4月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
40 1
|
4月前
|
数据采集 存储 算法
「AIGC算法」图搜索算法详解
本文探讨了图搜索算法,包括遍历和最短路径搜索。DFS和BFS是遍历算法,前者使用栈深入搜索,后者用队列逐层遍历。Dijkstra、Bellman-Ford、A*、Floyd-Warshall和Johnson算法则解决最短路径问题。文中还给出了DFS的Python实现示例。这些算法在路径规划、网络分析等领域有重要应用。
80 0
|
6月前
|
存储 算法 C++
c++算法学习笔记 (8) 树与图部分
c++算法学习笔记 (8) 树与图部分
|
6月前
|
算法 数据可视化 大数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
|
5月前
|
算法 计算机视觉
图像处理之基于图的广度优先搜索组件标记算法
图像处理之基于图的广度优先搜索组件标记算法
32 0
|
5月前
|
存储 算法
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
57 0
|
6月前
|
算法 数据可视化
圆填充( CIRCLE PACKING)算法圆堆图圆形空间填充算法可视化
圆填充( CIRCLE PACKING)算法圆堆图圆形空间填充算法可视化
|
6月前
|
存储 算法
图的深度优先算法
图的深度优先算法
40 0