Floyd - Warshall (弗洛伊德算法)

图中任意两点之间的最短路径问题

Dijkstra和Bellman-Ford也可以以所有点为源点,求出任意两点之间的最短距离,但是Dijstra不能解决带负权的的边,Bellman-Ford 效率慢点

Floyd算法考虑的是一条最短路径的中间节点,即简单路径p={v1 , v2, ... ,vn}上除v1和vn的任意节点

设K是p的一个中间节点,那么从i到 j 的最短路径就被分成 i到 k 和 k 到 j 的两段最短路径p1和p2,p1是从 i到 k且中间节点属于 {1 ,2 ,... , k-1}取得的一条最短路径,p2是从k到 j 且中间节点属于{1 , 2 , ... ,k-1}取得的一条最短路径

Floyd-Warshall算法的原理是动态规划

设Di,j ,k为从i到j的只以(1..k)集合中的节点为中间节点的最短路径长度

1.若最短路径经过点k ,则Di,j,k = Di,k ,k-1 + Di,j ,k-1

2.若最短路径不经过点k,则Di,j,k=Di,j,k-1

因此 , Di,j,k = min(Di,k ,k-1 ,Di,j ,k-1 + Di,j,k-1

相关推荐
-凌凌漆-2 分钟前
【C语言】大小端判断
linux·c语言·算法
We་ct9 分钟前
LeetCode 67. 二进制求和:详细题解+代码拆解
前端·数据结构·算法·leetcode·typescript
炽烈小老头16 分钟前
【每天学习一点算法 2026/04/01】零钱兑换
学习·算法
Morwit18 分钟前
【力扣hot100】 70. 爬楼梯
c++·算法·leetcode·职场和发展
yuanyuan2o225 分钟前
你可能需要的算法思想——动态规划
数据结构·python·算法·动态规划
唯创知音27 分钟前
WTK6900FC鼾声识别芯片:基于DNN-HMM算法的高性能鼾声识别检测处理方案
人工智能·算法·dnn·鼾声识别芯片·鼾声检测芯片
Tisfy29 分钟前
LeetCode 3474.字典序最小的生成字符串:暴力填充
算法·leetcode·字符串·题解
Alicx.30 分钟前
map容器是个好东西
数据结构·算法·蓝桥杯
郝学胜-神的一滴36 分钟前
张量维度操控心法:从reshape到升维降维,吃透PyTorch形状操作的底层逻辑
人工智能·pytorch·python·深度学习·程序人生·算法·机器学习
果果燕1 小时前
ARM嵌入式学习(四)--- C语言应用:led、beep、key
linux·运维·算法