En la navegación AGV, la selección de ruta es un tema importante. Si se usa el algoritmo de ruta más corta para la ruta óptima, se pueden usar muchos algoritmos. Este artículo compara los algoritmos populares de ruta más corta actuales, principalmente el algoritmo Dijkstra, el algoritmo Floyd, la estrella A Algoritmo, algoritmo Bellman-Ford, algoritmo SPFA, etc.
La siguiente tabla es una comparación de varios algoritmos:
Algoritmo |
Escena aplicable |
Facilidad de implementación |
Complejidad tiempo / espacio |
Problema de peso negativo |
Algoritmo de Floyd |
más corto de múltiples fuentes ruta, el cálculo de la distancia más corta entre dos puntos; Figura efecto denso es más excelente; Tiempo de alta complejidad, no es adecuado para las grandes cantidades de datos; |
Simple |
Complejidad del tiempo: O (n ^ 3) Complejidad espacial: O (n ^ 2) |
Puede manejar |
Algoritmo de Dijkstra |
más corta de fuente única trayectoria, el cálculo de las distancias más cortas entre un punto a otro punto en la figura; Mapa denso
|
Medio |
Complejidad de tiempo: O ((N + M) logN) Complejidad espacial: O (M) |
No puede manejar |
Algoritmo de estrella A |
Cortas de origen único camino, puede equilibrar la eficiencia y la calidad de las rutas, algoritmo de búsqueda subóptima para encontrar la ruta; Es la optimización y transformación del algoritmo Dijkstra; |
Complejo |
Complejidad de tiempo: O ((N + M) logN) Complejidad espacial: O (M) |
No puede manejar |
Algoritmo de Bellman-Ford |
Ruta más corta de una sola fuente Gráfico escaso |
Medio |
Complejidad del tiempo: O (MN) Complejidad espacial: O (M) |
Puede manejar |
Algoritmo SPFA |
Ruta más corta de una sola fuente Optimización del algoritmo Bellman-Ford Gráfico escaso |
Medio |
La peor complejidad de tiempo también es O (MN) Complejidad espacial: O (M) |
Puede manejar |
Dado que las necesidades de navegación AGV para calcular la ruta más corta entre dos puntos, por lo que necesitamos un multi-fuente más corto -path algoritmo. El algoritmo de Floyd cumple con este requisito, y es simple de implementar y fácil de entender. Aunque la complejidad del tiempo es alta, si el número de puntos de navegación en el escenario de la aplicación no es astronómico, aún puede tolerarse.
Referencias
Análisis del principio del algoritmo de estrella A: https://blog.csdn.net/m0_37264516/article/details/88045568
Algoritmo de 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
Implementación de Dijkstra (algoritmo Dijkstra): https://blog.csdn.net/qq_41923622/article/details/82082052
El problema del camino más corto: https://cloud.tencent.com/developer/article/1525973
Algoritmo de Bellman-Ford: https://baike.baidu.com/item/Bellman-Ford%E7%AE%97%E6%B3%95/1089090?fr=aladdin
SPFA cálculo método: https://baike.baidu.com/item/SPFA%E7%AE%97%E6%B3%95/8297411?fr=aladdin