In che modo i fornitori di mappe (come Google o Yahoo! Maps) suggeriscono le indicazioni?
Voglio dire, probabilmente hanno dati del mondo reale in qualche forma, compresi certamente le distanze ma forse anche cose come velocità di marcia, presenza di marciapiedi, orari dei treni, ecc. Ma supponiamo che i dati fossero in un formato più semplice, ad esempio un grafico diretto molto grande con pesi per bordi che riflettono le distanze. Voglio essere in grado di calcolare rapidamente le direzioni da un punto arbitrario all'altro. A volte questi punti saranno vicini (all'interno di una città), mentre a volte saranno distanti (fondo).
Gli algoritmi grafici come l'algoritmo Dijkstra non funzioneranno perché il grafico è enorme. Fortunatamente, gli algoritmi euristici come A * probabilmente funzioneranno. Tuttavia, i nostri dati sono molto strutturati e forse potrebbe funzionare qualche tipo di approccio a più livelli? (Ad esempio, memorizza le direzioni pre-calcolate tra determinati punti "chiave" distanti tra loro, così come alcune direzioni locali. Quindi le indicazioni per due punti distanti coinvolgeranno le direzioni locali verso i punti chiave, le direzioni globali verso un altro punto chiave, e quindi locale indicazioni di nuovo.)
Quali algoritmi vengono effettivamente utilizzati nella pratica?
PS. Questa domanda è stata motivata dalla ricerca di stranezze nelle direzioni di mappatura online. Contrariamente alla disuguaglianza del triangolo, a volte Google Maps pensa che XZ impiega più tempo ed è più lontano dell'uso di un punto intermedio come in XYZ . Ma forse le loro indicazioni per camminare possono anche ottimizzare per un altro parametro?
PPS. Ecco un'altra violazione della disuguaglianza del triangolo che suggerisce (per me) che usano una sorta di approccio a più livelli: XZ contro XYZ . Il primo sembra usare il famoso Boulevard de Sebastopol anche se è leggermente fuori mano.
Modifica : nessuno di questi esempi sembra funzionare più, ma entrambi hanno funzionato al momento del post originale.