¿Cómo funciona el algoritmo Jump Point Search y por qué es tan eficiente?

8

Al probar el applet a continuación, vi que este algoritmo de búsqueda de ruta llamado Jump Point Search produce resultados significativamente más rápidos que A * y Dijkstra.

http://qiao.github.io/PathFinding.js/visual/

A *: 46 segundos ingrese la descripción de la imagen aquí

Dijkstra: 1 minuto 39 segundos ingrese la descripción de la imagen aquí

Búsqueda de punto de salto: menos de 3 segundos ingrese la descripción de la imagen aquí

No hace falta decir que estoy bastante asombrado por el resultado. A partir de la representación visual, Jump Point Search parece estar haciendo muchas suposiciones aleatorias (probablemente muy inteligentes) para encontrar la ruta (al menos desde la selección de bloques), pero aún no he encontrado un caso de prueba en el que este algoritmo haya empeorado resultados que A * y Dijkstra.

¿Cómo funciona este algoritmo? ¿Cómo es tan eficiente en comparación con A * y Dijkstra?

l46kok
fuente
2
De sus capturas de pantalla está claro que A * tardó 7 ms en completarse (no 46 s), Dijkstra 13 ms (no 1 m 39 s) y JPS 2 ms (no 3 s). ¿De dónde sacaste tus números?
Yannis
Al cronometrarlos manualmente con un temporizador. Los errores humanos pueden indicar que estoy apagado por unos segundos o más, pero no hay forma de que demore tanto como los tiempos mencionados en el applet. Tal vez se está refiriendo a otra cosa o es un error.
l46kok
77
Oh Dios mío, ¿realmente hiciste eso? Los tiempos en que los informes de la herramienta son correctos: es el tiempo que tardó cada algoritmo en completarse. El retraso (significativo) después de eso es para la presentación de las rutas de los algoritmos. La animación SVG es una de las mejores cosas en HTML5, pero es (todavía) lenta .
Yannis
@YannisRizos Dang, debería haberlo sabido mejor :(
l46kok
1
es lento para mostrar el progreso del algoritmo, no porque, por ejemplo, "HTML5 sea lento", etc.
Steven Lu

Respuestas:

5

La idea básica es que JPS permite descartar muchas rutas candidatas temprano, lo que reduce la cantidad de cálculos necesarios.

En muchos mapas, múltiples rutas con el mismo costo conducen al mismo destino, como un mapa de juego con grandes áreas abiertas. JSP permite podar esos caminos.

Una explicación en profundidad se puede encontrar aquí .

Wilbert
fuente
1

Con la última versión de la herramienta, JPS en realidad se muestra más lento que A * para muchos tipos de gráficos, porque ahora también muestran la recursividad de JPS.

Búsqueda JPS Los nodos grises son nodos examinados

Esto también es cierto en el mundo real; mientras que JPS generalmente pondrá en cola muchos menos nodos, generalmente examina muchos más. Si eso da como resultado una aceleración real depende del gráfico.

BlueRaja - Danny Pflughoeft
fuente