图算法(3):Floyd-Warshall算法

Floyd-Warshall算法是解决全源最短路径问题的算法,适用于有向图和负权图。该算法时间复杂度为O(N^3),空间复杂度为O(N^2)。它通过动态规划策略更新所有点对之间的最短路径,可以处理单源最短路径问题的推广。滚动数组优化可以减少空间需求。常见用于稠密图,与Johnson算法相比,对于稀疏图Johnson算法更优。
摘要由CSDN通过智能技术生成

  Floyd-Warshall算法(英语:Floyd-Warshall algorithm),中文亦称弗洛伊德算法,是解决任意两点间的最短路径的一种算法,即全源最短路径问题(All-Pairs Shortest Paths Problem),可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。
Floyd-Warshall算法的时间复杂度为O(N^3)[3],空间复杂度为O(N^2)。

  解决单源最短路径问题的方案有 Dijkstra 算法和 Bellman-Ford 算法,对于全源最短路径问题可以认为是单源最短路径问题(Single Source Shortest Paths Problem)的推广,即分别以每个顶点作为源顶点并求其至其它顶点的最短距离。更通用的全源最短路径算法包括:
  针对稠密图的 Floyd-Warshall 算法:时间复杂度为 O(V3);
  针对稀疏图的 Johnson 算法:时间复杂度为 O(V2logV + VE);

原理:
  Floyd-Warshall算法的原理是动态规划
  
  最外层一维空间可以省略,因为D[k]只与Dk-1]有关。在实际算法中,为了节约空间,可以直接在原来空间上进行迭代,这样空间可降至二维。

算法描述:

1 let dist be a |V| × |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One2zeror

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值