AGV导航中的最短路径算法比较

在AGV导航中,路径选择是一个重要课题,如果最优路径使用最短路径算法,那可以使用的算法有很多,本文比较了当前流行的最短路径算法,主要有Dijkstra 算法,Floyd算法,A-star算法,Bellman-Ford 算法,SPFA算法等

下表是对各种算法的一个比较:

算法

适用场景

实现难易度

时间/空间复杂度

负权边问题

Floyd算法

多源最短路径,计算任意两点之间的最短距离;

稠密图效果最佳;

时间复杂度比较高,不适合计算大量数据;

简单

时间复杂度:O(n^3)

空间复杂度:O(n^2)

可以处理

Dijkstra 算法

单源最短路径,计算一个点到图中其他点之间的最短距离;

稠密图;

 

 

中等

时间复杂度: O((N+M)logN)

空间复杂度:O(M)

不能处理

A-star算法

单源最短路径,可以平衡效率和路线质量,找到次优路线的搜索算法;

是对 Dijkstra 算法的优化和改造;

复杂

时间复杂度: O((N+M)logN)

空间复杂度:O(M)

不能处理

Bellman-Ford 算法

单源最短路径

稀疏

中等

时间复杂度:O(MN)

空间复杂度:O(M)

可以处理

SPFA算法

单源最短路径

Bellman-Ford 算法的优化

稀疏

中等

时间复杂度最坏也是O(MN)

空间复杂度:O(M)

可以处理

因为AGV导航需要计算任意两点的最短路径,所以我们需要一个多源最短路径算法。Floyd算法满足此需求,同时实现简单,易于理解,虽然时间复杂度高,但是如果应用场景中导航点的个数不是天文数字的话,还是可以承受的。

 

References:

  A-star 算法原理分析:  https://blog.csdn.net/m0_37264516/article/details/88045568

  Floyd算法:        https://baike.baidu.com/item/Floyd%E7%AE%97%E6%B3%95/291990?fromtitle=%E5%BC%97%E6%B4%9B%E4%BC%8A%E5%BE%B7%E7%AE%97%E6%B3%95&fromid=5546207&fr=aladdin

Dijkstra(迪杰斯特拉算法)的实现: https://blog.csdn.net/qq_41923622/article/details/82082052

最短路径问题:https://cloud.tencent.com/developer/article/1525973

Bellman-Ford算法:https://baike.baidu.com/item/Bellman-Ford%E7%AE%97%E6%B3%95/1089090?fr=aladdin

SPFA 法:https://baike.baidu.com/item/SPFA%E7%AE%97%E6%B3%95/8297411?fr=aladdin

发布了31 篇原创文章 · 获赞 3 · 访问量 2028

猜你喜欢

转载自blog.csdn.net/lclfans1983/article/details/105391433