Harita sağlayıcıları (Google veya Yahoo! Maps gibi) yol tariflerini nasıl önerir?
Yani, muhtemelen mesafeler de dahil olmak üzere bir şekilde gerçek dünya verilerine sahipler, ancak belki de sürüş hızları, kaldırımların varlığı, tren tarifeleri vb. Gibi şeyler var. Ama verilerin daha basit bir formatta olduğunu varsayalım, çok büyük bir yönlendirilmiş grafik kenar ağırlıkları mesafeleri yansıtır. Bir keyfi noktadan diğerine hızlı bir şekilde yön hesaplayabilmek istiyorum. Bazen bu noktalar birbirine yakın olacak (bir şehir içinde), bazen birbirinden çok uzak olacaklar (kros).
Grafik çok büyük olduğu için Dijkstra'nın algoritması gibi grafik algoritmaları çalışmaz. Neyse ki, A * gibi sezgisel algoritmalar muhtemelen işe yarayacaktır. Ancak, verilerimiz çok yapılandırılmıştır ve belki de bir tür katmanlı yaklaşım işe yarayabilir? (Örneğin, önceden hesaplanmış yönleri belirli "anahtar" noktalar ile bazı yerel yönler arasında saklayın. Ardından uzaktaki iki noktanın yönleri, kilit noktalara yerel yönleri, başka bir kilit noktaya küresel yönleri ve ardından yerel yönlendirin.)
Pratikte hangi algoritmalar kullanılır?
PS. Bu soru, çevrimiçi haritalama yönlerinde tuhaflıklar bularak motive edildi. Üçgen eşitsizliği aksine, bazen Google Maps düşünüyor XZ daha uzun sürer ve daha uzak olduğu gibi bir ara noktası kullanarak daha XYZ . Ama belki de yürüme yönleri başka bir parametre için de optimize edilebilir mi?
PPS. Üçgen eşitsizliğin bir başka ihlali (bana göre) bir tür katmanlı yaklaşım kullandıklarını gösteriyor: XZ ve XYZ . Birincisi, biraz yoldan çıkmış olsa da, tanınmış Boulevard de Sebastopol'u kullanıyor gibi görünüyor.
Düzenleme : Bu örneklerin hiçbiri artık işe yaramıyor gibi görünüyor, ancak her ikisi de orijinal gönderi sırasında işe yaradı.