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

相关推荐
仰泳的熊猫1 分钟前
1140 Look-and-say Sequence
数据结构·c++·算法·pat考试
handuoduo12348 分钟前
SITAN中avp必要性分析
人工智能·算法·机器学习
zl_vslam9 分钟前
SLAM中的非线性优-3D图优化之相对位姿Between Factor右扰动(八)
人工智能·算法·计算机视觉·3d
电饭叔20 分钟前
如何代码化,两点之间的距离
笔记·python·算法
TL滕23 分钟前
从0开始学算法——第十三天(Rabin-Karp 算法练习)
笔记·学习·算法·哈希算法
TL滕37 分钟前
从0开始学算法——第十三天(Rabin-Karp 算法)
笔记·学习·算法
喵了meme42 分钟前
C语言实战
算法·排序算法
jghhh0144 分钟前
基于否定选择算法的异常检测技术详解
算法
天才少女爱迪生1 小时前
【算法设计】GLM-4.5V模型架构和算法设计详解
python·算法·语言模型
ULTRA??1 小时前
Rust的移动语义
c++·算法·rust