前言
在图论中,在寻路最短路径中除了Dijkstra
算法以外,还有Floyd
算法也是非常经典,然而两种算法还是有区别的,Floyd
主要计算多源最短路径。
在单源正权值最短路径,我们会用Dijkstra
算法来求最短路径,并且算法的思想很简单—贪心算法:每次确定最短路径的一个点然后维护(更新)这个点周围点的距离加入预选队列,等待下一次的抛出确定。虽然思想很简单,实现起来是非常复杂的,我们需要邻接矩阵(表)储存长度,需要优先队列(或者每次都比较)维护一个预选点的集合。还要用一个boolean数组标记是否已经确定、还要……
总之,Dijkstra
算法的思想上是很容易接受的,但是实现上其实是非常麻烦的。但是单源最短路径解算暂时还没有有效的办法,复杂度也为O(n2)
。
而在n点图中想求多源最短路径,如果从Dijkstra算法的角度上,需要将Dijkstra
执行n次才能获得所有点之间的最短路径,不过执行n次Dijkstra算法即可,复杂度为O(n3)