Gerçek şu ki, çoğu insan A * algoritmasının özel bir varyasyonunu kullanıyor . Bunu "büyük adamlar" ın çoğunda göreceksiniz (halka açık bir forumda kim olduklarını söyleyemem, ancak sezgisel tadilatta yapılan değişikliklerin nerede olduğunu, muhtemelen bunlardan birini kullandığınızı söyleyebilirim) kullandıkları veri setlerine çok bağlıdır.
Zaten "geleneksel" bir seçenek olarak kabul edebileceğim, uzun zamandır bahseden bahsettin . Basit yönlendirme algoritmaları yapmak ve çoğu problem için iyidir. Ayrıca arka uçlarında geleneksel bir veritabanı kullanmak kolaydır.
Bununla birlikte, bu gerçekten çözmeye çalıştığınız sorunun türüne ve türüne bağlıdır ve yönlendirme bir grafik problemidir.
Bir kez daha, "büyük adamlar" genellikle yönlendirme algoritmasını etkileyen grafikleriyle (örneğin trafik verileri, otobüs güzergahları, yürüyüş yolları) ilişkilendirilen birçok veriye sahiptir. Bunlar çok modlu seyahat planlamacıları olarak bilinir (burada "modları" planlama seçeneğiniz de vardır - bisiklet yolu yok - sadece toplu taşıma - bu tür şeyler). Eğer yürümek ise gezi planlaması da bir zaman hassas bir konu (yani olur nasıl düşünebiliriz geri Gideceğiniz götüren metro yakalamak mümkün olacak, birkaç kenarları ileri çok daha hızlı sadece ileriye kenarları gezinmek için çalışması halinde daha en düşük fiyatı kullanarak).
"Büyük adamlar" verilerini geleneksel bir veritabanında saklamıyor, önceden hesaplanmış grafikleri kullanıyorlar (welcome hadoop / mapreduce kümeleri!). Tahmin edebileceğiniz gibi, bu grafikler gerçekten büyük olur, bu nedenle bitişik grafiklerin kenarlarının nasıl bağlanacağını bilmek zor olabilir.
Her neyse, bazı çok modlu yönlendirme grafik projelerine bakmanızı tavsiye ederim:
Graphserver akla geliyor. Çok fazla dokümantasyon değil, bir çok saf kodlama sıkıntısı (AFAIK, MapQuest'in bu yönlendirme ürünlerinin bir kısmı için bu projenin bir çeşitlemesini kullandığına inanıyorum).
Başka bir seçenek olacaktır OpenTripPlanner (graphserver insanları dahil) arkasında akıllı bir sürü insan vardır.