Hay una gran advertencia al usar D *, D * -Lite o cualquiera de los algoritmos incrementales en esta categoría (y vale la pena señalar que esta advertencia rara vez se menciona en la literatura). Estos tipos de algoritmos utilizan una búsqueda inversa. Es decir, calculan los costos hacia afuera desde el nodo objetivo, como una onda que se extiende hacia afuera. Cuando los costos de los bordes cambian (por ejemplo, agrega o elimina un muro en su ejemplo), todos tienen varias estrategias eficientes para actualizar solo el subconjunto de los nodos explorados (también conocidos como 'visitados') que se ven afectados por los cambios.
La gran advertencia es que la ubicación de estos cambios con respecto a la ubicación del objetivo marca una enorme diferencia en la eficiencia de los algoritmos. Mostré en varios documentos y mi tesis que es completamente posible que el peor de los casos de cualquiera de estos algoritmos incrementales sea peor que tirar toda la información y comenzar de nuevo con algo no incremental como el viejo A *.
Cuando la información de costo modificada está cerca del perímetro del frente de búsqueda en expansión (la región "visitada"), pocas rutas tienen que cambiar y las actualizaciones incrementales son rápidas. Un ejemplo pertinente es un robot móvil con sensores conectados a su cuerpo. Los sensores solo ven el mundo cerca del robot y, por lo tanto, los cambios están en esta región. Esta región es el punto de partida de la búsqueda, no el objetivo, por lo que todo funciona bien y los algoritmos son muy eficientes para actualizar la ruta óptima para corregir los cambios.
Cuando la información de costo modificada está cerca del objetivo de la búsqueda (o su escenario ve las ubicaciones de cambio de objetivo, no solo el comienzo), estos algoritmos sufren una desaceleración catastrófica. En este escenario, casi toda la información guardada debe actualizarse, porque la región cambiada está tan cerca del objetivo que casi todas las rutas precalculadas pasan por los cambios y deben ser reevaluadas. Debido a la sobrecarga de almacenar información adicional y cálculos para realizar actualizaciones incrementales, una reevaluación en esta escala es más lenta que un nuevo comienzo.
Dado que su escenario de ejemplo parece permitir que el usuario mueva cualquier muro que desee, sufrirá este problema si usa D *, D * -Lite, LPA *, etc. El rendimiento temporal de su algoritmo será variable, dependiendo del usuario entrada. En general, "esto es algo malo" ...
Como ejemplo, el grupo de Alonzo Kelly en CMU tenía un programa fantástico llamado PerceptOR que intentaba combinar robots terrestres con robots aéreos, todos compartiendo información de percepción en tiempo real. Cuando intentaron usar un helicóptero para proporcionar actualizaciones de costos en tiempo real al sistema de planificación de un vehículo terrestre, se toparon con este problema porque el helicóptero podía volar por delante del vehículo terrestre, viendo cambios en los costos más cerca de la meta y, por lo tanto, disminuyendo la velocidad abajo sus algoritmos. ¿Discutieron esta observación interesante? No. Al final, lo mejor que lograron fue hacer que el helicóptero volara directamente sobre el vehículo terrestre, convirtiéndolo en el mástil sensor más caro del mundo. Claro, estoy siendo mezquino. Pero es un gran problema del que nadie quiere hablar, y deberían,
Solo hay un puñado de documentos que discuten esto, principalmente por mí. De los artículos escritos por los autores o estudiantes de los autores de los artículos originales enumerados en esta pregunta, solo puedo pensar en uno que realmente mencione este problema. Likhachev y Ferguson sugieren tratar de estimar la escala de actualizaciones requeridas y eliminar la información almacenada si se estima que la actualización incremental demorará más que un nuevo comienzo. Esta es una solución bastante sensata, pero también hay otras. Mi doctorado generaliza un enfoque similar en una amplia gama de problemas computacionales y está yendo más allá del alcance de esta pregunta, sin embargo, puede encontrar las referencias útiles ya que tiene una visión general exhaustiva de la mayoría de estos algoritmos y más. Ver http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364para más detalles.