Ho un grafico in cui ogni nodo è un punto geografico sulla superficie della terra, definito dalle sue coordinate di latitudine / longitudine.
Modi corretti per calcolare la distanza tra due di questi punti potrebbero essere la formula di Haversine per i modelli di terra sferica, o il problema inverso di Vincenty per i modelli di terra sferoidale.
Ma questi sono molto costosi in termini di risorse computazionali, e in A * fondamentalmente non hai bisogno dei valori assoluti di quei risultati, ne hai solo bisogno per scopi di confronto.
Nel mio algoritmo A * la funzione euristica è la distanza più breve tra 2 punti (definita come la lunghezza dell'arco del cerchio grande più piccolo tra i 2 punti in un modello sferico) e il percorso effettivo tra due nodi è una stringa lineare, la cui lunghezza è calcolata fondamentalmente nello stesso modo, solo che sommi le distanze tra i vertici consecutivi.
Quindi, se d(A, B)
è la distanza geografica effettiva tra A e B (come punti di latitudine / longitudine), il problema è fondamentalmente trovare lo stimatore di distanza computazionalmente efficiente d*(A, B)
che soddisfi le condizioni necessarie affinché A * funzioni correttamente, come ad esempio:
- se
d(A, B) < d(C, D)
poid*(A, B) < d*(C, D)
. - se
d(A, B) + d(E, F) < d(C, D)
poid*(A, B) + d*(E, F) < d*(C, D)
Ho persino visto in alcuni luoghi che la gente consiglia la distanza euclidea per un caso del genere, anche se latitudine / longitudine sono angoli. Potrebbe essere il caso, ma sono interessato se è "matematicamente corretto" presumere che soddisfi condizioni come sopra.