浅谈最短路径的几个方法(Dijkstra,Bellman-Ford,SPFA,Floyd算法)

我的机器学习教程「美团」算法工程师带你入门机器学习  以及 「三分钟系列」数据结构与算法  已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。

欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~

 

我之前有文章详细介绍了这四种方法并且给出了C代码实现,今天用四句话总结一下几个特点。

最短路径问题的四大金刚:

 

1. Dijkstra算法

 

最经典的单源最短路径算法。本质是BFS+贪心,应用最广

 

2. Bellman-Ford算法

 

允许负权边的单源最短路径算法,DJ算法的适应版,可以用来检测负权回路

 

3. SPFA

 

其实是Bellman-ford+队列优化,缺点是时间复杂度过高,高达 O(VE)

 

4. Floyd算法

 

动态规划的方法,经典的多源最短路径算法,复杂度O(N^3),简单粗暴有效

你可能感兴趣的:(算法之离散数学,***算法与编程艺术***)