最短路算法总讲

来源:互联网 发布:淘宝日产手办 编辑:程序博客网 时间:2024/06/05 08:43
最短路算法总讲
开头先说一点其他的,作为最短路这一类算法的总讲。
最短路算法主要是由Floyd、Dijkstra、Spfa(优先队列优化的ford算法)这三种算法构成,当然Spfa只是小部分人认可,Spfa算法本身就是福特算法的优化,但是无疑,Spfa是最短路算法之中最为重要的一种算法,和Dijkstra的堆优化算法并列。
Spfa与Dijkstra堆优化的优点都在于其空间复杂度上,无需使用二维数组进行操作,否则就是能实现n<=1000(n表示总共结点数)左右的数据。
而相较于这两种算法,Floyd无疑在时间和空间复杂度上都是落后的,三种for循环嵌套加上二维数组的使用,时间复杂度为O(n^3),空间复杂度为O(n^2),不过Floyd是非单源最短路径的算法之一,而Spfa以及Dijkstra都是单源最短路径的算法,也就是说,Floyd适用于起点未知,还要求不同起点开始到其他各结点的最短路径时使用,并且结点个数的取值一般是小于等于300,再大就容易TLE。
开始先会一一写出最短路算法的几种模板,然后再从易到难的题目,升华个人对这些算法的理解。
原创粉丝点击