Jump Point Search (A * con JPS) è applicabile a griglie non diagonali?


8

Sto cercando di accelerare il mio percorso e ho scoperto A * con JPS . Praticamente elimina le tessere prima di aggiungerle al set APERTO.

Posso usare quella tecnica con la mia griglia che consente solo direzioni diritte?

Risposte:


10

Se leggi l'articolo , vedrai che elencano questo come un problema aperto nella sezione "Conclusioni":

"Una direzione interessante per ulteriori lavori è estendere i punti di salto ad altri tipi di griglie, come esagoni o texes (Yap 2002). Proponiamo di raggiungere questo obiettivo sviluppando una serie di regole di potatura analoghe a quelle fornite per le griglie quadrate".

Pertanto, per applicare la Ricerca punti di salto alla griglia ortogonale, è necessario decidere quali punti devono essere considerati punti di salto su quella griglia. Dopo aver pensato a questo per un momento, penso - ma non ho dimostrato! - che le seguenti regole (basate sulle definizioni 1 e 2 nel documento, in qualche modo riformulate per essere leggibili) potrebbero funzionare:

Un nodo y è il punto di salto dal nodo x, andando nella direzione d, se y è raggiungibile da x spostandosi dritto nella direzione d, ed è il nodo più vicino a x per soddisfare almeno una delle seguenti condizioni:

  1. il nodo y è il nodo obiettivo,
  2. d è uno spostamento orizzontale e una delle celle verticalmente adiacenti alla cella y - d (ovvero, la cella di un passo prima di y quando si sposta nella direzione d) è bloccata, oppure
  3. d è uno spostamento verticale ed esiste un nodo z che è un punto di salto da y (per condizione 1 o 2) in una direzione orizzontale d '.

Naturalmente, le parole "verticale" e "orizzontale" possono essere scambiate nella definizione sopra. Il punto è che dobbiamo scegliere un modo per spezzare la simmetria in modo da considerare solo uno dei possibili percorsi per attraversare una regione rettangolare aperta. Harabor e Grastien lo fanno preferendo i percorsi "primi in diagonale", ma poiché non possiamo farlo, dobbiamo invece accontentarci preferendo i percorsi verticali primi (o orizzontali primi).

Essa potrebbe anche essere possibile sviluppare regole di potatura alternativi che producono più "naturale-looking" percorsi, come ad esempio preferendo l'intestazione corrente sopra svolta, o forse anche preferendo percorsi scala costantemente svolta. La regola che ho dato sopra è semplicemente la traduzione più semplice della regola Harabor & Grastien in una griglia ortogonale a cui potrei pensare.


+1 Questo è esattamente ciò a cui avrei risposto. È possibile dimostrare che questo sarà ancora ottimale.
BlueRaja - Danny Pflughoeft,

2

In realtà, se si osserva la definizione di percorso a 45 gradi, è sempre possibile trasformare un percorso con percorso a 45 gradi in un percorso senza virata a 45 gradi. Ed è anche ottimale (puoi facilmente dimostrarlo per contraddizione).

Quindi, il modo più semplice è eseguire la ricerca del punto di salto e trasformarla in un percorso ortogonale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.