¿La búsqueda de punto de salto (A * con JPS) es aplicable a cuadrículas no diagonales?

8

Estoy tratando de acelerar mi búsqueda de caminos y descubrí A * con JPS . Básicamente elimina las fichas antes de agregarlas al conjunto ABIERTO.

¿Puedo usar esa técnica con mi cuadrícula que solo permite direcciones rectas?

Sven
fuente

Respuestas:

10

Si lees el artículo , verás que enumeran esto como un problema abierto en la sección "Conclusiones":

"Una dirección interesante para seguir trabajando es extender los puntos de salto a otros tipos de cuadrículas, como hexágonos o textos (Yap 2002). Proponemos lograr esto mediante el desarrollo de una serie de reglas de poda análogas a las dadas para cuadrículas cuadradas".

Por lo tanto, para aplicar la Búsqueda de puntos de salto a su cuadrícula ortogonal, deberá decidir qué puntos deben contar como puntos de salto en esa cuadrícula. Después de pensar en esto por un momento, creo, ¡pero no lo he probado! - que las siguientes reglas (basadas en las Definiciones 1 y 2 en el documento, reformuladas para facilitar la lectura) pueden funcionar:

Un nodo y es el punto de salto desde el nodo x, que se dirige en la dirección d, si y es accesible desde x moviéndose directamente en la dirección d, y es el nodo más cercano a x para satisfacer al menos una de las siguientes condiciones:

  1. el nodo y es el nodo objetivo,
  2. d es un movimiento horizontal, y cualquiera de las celdas adyacentes verticalmente a la celda y - d (es decir, la celda un paso antes que y cuando se mueve en la dirección d) está bloqueada, o
  3. d es un movimiento vertical, y existe un nodo z que es un punto de salto desde y (por la condición 1 o 2) en alguna dirección horizontal d '.

Por supuesto, las palabras "vertical" y "horizontal" se pueden intercambiar en la definición anterior. El punto es que necesitamos elegir alguna forma de romper la simetría para que solo se considere uno de los posibles caminos para atravesar una región rectangular abierta. Harabor y Grastien lo hacen al preferir los caminos "primero en diagonal", pero como no podemos hacer eso, tenemos que hacerlo prefiriendo en su lugar los caminos vertical primero (u horizontal primero).

También podría ser posible desarrollar reglas de poda alternativas que produzcan más caminos de "aspecto natural", como preferir el rumbo actual antes que girar, o tal vez incluso preferir caminos de escalera que giran constantemente. La regla que di arriba es simplemente la traducción más directa de la regla de Harabor y Grastien a una cuadrícula ortogonal que se me ocurra.

Ilmari Karonen
fuente
+1 Esto es exactamente lo que iba a responder. Es posible demostrar que esto seguirá siendo óptimo.
BlueRaja - Danny Pflughoeft
2

En realidad, si observa la definición de ruta de 45 grados, siempre es posible transformar una ruta con ruta de 45 grados en una ruta sin giro de 45 grados. Y también es óptimo (puede probarlo fácilmente por contradicción).

Entonces, la forma más simple es ejecutar la búsqueda de puntos de salto y luego transformarla en una ruta ortogonal.

Jas
fuente