1 Dijkstra - 静态最短路计算,O(N^2)
所求的是单源最短路,好比说你写好了Dijkstra的函数,那么只要输入点a的编号,就可算出图上每个点到这个点的距离。
算法思路和代码:
https://www.cnblogs.com/jason2003/p/7222182.html
https://www.cnblogs.com/wymlnn/p/4446838.html
https://www.jianshu.com/p/b1798f2ec2b7
引入堆优化,复杂度可以降到O((n+m)logn),就是用堆每次弹出最小值来代替每轮要进行的最短边的查找
论文参考:
http://www.joca.cn/CN/abstract/abstract18516.shtml
http://www.ewenku.net/docs/d5c67f359aaebd
Bellman-ford 用于解决负权边。
2 A*(A Star)算法 静态最短路计算 O(n^2*logn)
通过这个函数计算每个节点的优先级。计算的节点数量比Dijkstra少得多,效率很高,且能得到最优解。
算法思路:
https://blog.csdn.net/chinaliping/article/details/8525411
论文参考:A*和蚁群
https://www.ixueshu.com/document/719c6828100bc09b318947a18e7f9386.html
3 D* 算法 动态最短路计算。主要用于机器人的壁障
论文参考:D* +SVM
4 遗传算法
考虑了重叠路段