La distanza di Manhattan è monotona se usata come funzione euristica?


25

Ho una mappa quadrata. È consentito solo il movimento orizzontale e verticale (nessuna diagonale). Il costo del movimento è sempre 1.

Sto implementando un algoritmo A * su quella mappa, usando la distanza di Manhattan come euristica della distanza. Questa euristica è coerente? Posso evitare di verificare i g(node)nodi che si trovano nel set CHIUSO?

Modifica: per coerente intendo monotonico.


1
Se il costo del tuo movimento è uniforme su ogni tessera, puoi sostituire A * con Jump Point Search
Nick Caplinger,

Ehi, è carino!
Emiliano,

Risposte:


10

Per rispondere effettivamente alla tua domanda: la distanza manhatten è coerente quando sei costretto a muoverti verticalmente / orizzontalmente lungo una griglia non ponderata (questo può essere facilmente mostrato dalla definizione su Wikipedia) . Quindi sì, nel tuo caso puoi evitare di ricontrollare i nodi nel set chiuso.

Tuttavia, una volta consentito il movimento diagonale o ad ogni angolo, la distanza di mantenimento diventa non ammissibile perché sopravvaluta i costi diagonali, il che significa necessariamente che non è coerente.


Sì, questo è esattamente il tipo di risposta che stavo cercando. Sarebbe bello sapere cosa succede se la funzione euristica è h(x) = min(manhattan(p1), manhattan(p2))(cioè p1 o p2 sono un buon punto finale e voglio raggiungere il più vicino). È h(x)ancora monotonico?
Emiliano,

1
@happy_emi: Sì, se h(x, p1)e h(x, p2)sono coerenti, allora min(h(x,p1), h(x,p2))saranno anche coerenti. Questo è facile da mostrare dalla definizione su Wikipedia (avremmo bisogno di mostrarlo min(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))per tutti i nodi xe ycon un bordo tra loro. Ora supponiamo che h(x, p1)sia il minimo; puoi mostrare che è sicuramente <=il lato destro, usando il fatto che entrambe le euristiche sono coerenti?)
BlueRaja - Danny Pflughoeft

31

Sì, la distanza di Manhattan tra due punti è sempre la stessa, proprio come la normale distanza tra loro. Puoi pensare alla distanza di Manhattan come ai componenti X e Y di una linea che corre tra i due punti.

Questa immagine ( da Wikipedia ) lo illustra bene:

Distanze di Manhattan

La linea verde è la distanza effettiva.

Le linee blu , rosse e gialle rappresentano tutte la stessa distanza di Manhattan (12 unità). Indipendentemente dalla combinazione di movimenti in alto e a destra che disegni dal punto in basso a sinistra in basso a destra, otterrai la stessa distanza totale a Manhattan.


2
Ottima risposta: breve, dolce, al punto e con una bella immagine.
Tom 'Blue' Piddock,

1
Questa risposta è vicina, ma non corretta. Questa immagine non mostra che Manhattan distanza è coerente (in realtà, se si considera la linea verde per essere la distanza, è non è coerente!) , E il ragionamento che non ha bisogno di ricontrollare i nodi, perché "la distanza tra Manhattan due punti è sempre lo stesso " non vale (l'affermazione è vera anche per ciò h(x) = 1000, che ovviamente non è coerente) . Si può evitare di ricontrollare i nodi, ma solo perché Manhattan distanza è coerente, che questa risposta non mostrare.
BlueRaja - Danny Pflughoeft,

2
Credo per la definizione che hai collegato, la distanza di Manhattan è coerente. La distanza della linea verde sarebbe utilizzare un diverso euristico. Le linee rosse, blu e gialle mostrano che la distanza tra i due nodi rimane invariata (quando si utilizza la stessa euristica). Avvicinarsi riduce l'euristica e spostarsi più lontano aumenta l'euristica. Ciò soddisfa i requisiti monotonici dell'OP. Man mano che il grafico viene costruito, con un nodo ad ogni "intersezione", la distanza di Manhattan è coerente. Se fosse uno scenario diverso (come consentire il movimento diagonale), l'euristica sarebbe cattiva.
MichaelHouse

2
Ho già detto che la distanza di Manhatten è coerente, ma non per i motivi menzionati. La tua risposta non mostra coerenza, né il tuo argomento nei commenti. "Euristico coerente / monotono" ha una definizione precisa (data nel mio link sopra) , che non è la stessa di una funzione monotona per la quale sembra confonderla. Affermare che "avvicinarsi riduce l'euristica e spostarsi più lontano aumenta l'euristica" non è sufficiente per dimostrare che è coerente, ad es. 2*manhattensoddisfa quello, ma non è coerente.
BlueRaja - Danny Pflughoeft,

3
Non so perché dici che non è corretto , sembra che insisti che questa risposta sia incompleta . La prova nella tua risposta sembra essere altrettanto debole: "la distanza manhatten è coerente ...", poi continui a ripetere le specifiche originali della domanda, seguendo come sarebbe non ammissibile se lo scenario fosse diverso . Non mi sentivo come se la risposta giustificasse una prova matematica completa. Se ritieni che questa domanda lo richieda, ti preghiamo di includerla nella tua risposta e la voterò. Grazie per le critiche costruttive.
MichaelHouse

6

In aggiunta alla risposta di Byte56, vorrei sottolineare che nel tuo set di dati specifico, l'utilizzo di Manhattan Distance come funzione euristica sarà in realtà sempre un euristico perfetto, nel senso che restituirà sempre il costo effettivo del percorso (supponendo che ci sia niente "blocca" i percorsi).

Dovresti anche notare che tutti i nodi nella direzione corretta (in senso orizzontale o verticale) produrranno la stessa distanza prevista (perché ci sono molti percorsi ugualmente brevi verso l'obiettivo). È necessario essere consapevoli del fatto che la coda delle priorità (set aperto) dovrebbe, in caso di priorità collegate, eliminare prima l'ultimo nodo aggiunto (LIFO - Last In First Out). In questo modo esaminerai solo i nodi che finiranno nel percorso ottimale . Se si esaminano nodi ugualmente adatti in modo FIFO (First In First Out), si esamineranno effettivamente tutti i nodi che fanno parte del percorso migliore. Questo problema sorge perché esistono più percorsi ugualmente validi per il nodo obiettivo.


"(supponendo che non ci sia nulla che blocchi il percorso)" - questo è un presupposto piuttosto grande. Se non c'è nulla che blocchi il percorso, non è necessario iniziare con un algoritmo di ricerca del percorso!
BlueRaja - Danny Pflughoeft,

@ BlueRaja-DannyPflughoeft: è vero, era solo un pensiero spuntato quando si guardava l'immagine di Byte56. Il resto è vero comunque.
Thorkil Holm-Jacobsen,

4

Non sono sicuro di cosa intendi per "sempre" coerente. La distanza di Manhattan su una griglia fissa è indipendente dal percorso intrapreso? Sì, come diceva la risposta di Byte56.

Tuttavia, ad esempio, la distanza di Manhattan non è invariante sotto le rotazioni. Ad esempio, la distanza di Manhattan ( norma L1 ) tra l'origine e un punto (10,10)è |10-0| + |10-0| = 20. Tuttavia, se ruoti le tue coordinate di 45 gradi (quindi ora il tuo punto fisso si trova lungo una delle direzioni della griglia), ora troverai che lo stesso punto è ora (10sqrt(2),0), quindi ha una distanza di Manhattan dall'origine di 10sqrt(2)~14.14.


+1 per la precisazione; OTOH, la distanza di Manhattan è invariante con rotazioni di 90 gradi, che sono davvero le uniche che possono essere fatte 'coerentemente' su una griglia discreta.
Steven Stadnicki,

1
Buona cattura, anche se ha menzionato che è consentito solo il movimento orizzontale e verticale.
Thorkil Holm-Jacobsen,

1
La domanda originale era di coerenza come in monotonia.
Emiliano,
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.