Die Wahrheit ist, dass die meisten Menschen eine benutzerdefinierte Variante des A * -Algorithmus verwenden. Sie werden dies bei den meisten "großen Typen" sehen (ich kann nicht sagen, wer sie in einem öffentlichen Forum sind, aber ich kann Ihnen sagen, dass Sie wahrscheinlich einen von ihnen verwenden - garantiert), bei denen die Änderung der Heuristik erfolgt sehr abhängig von den Datensätzen, die sie verwenden.
Sie haben bereits eine Verfugung erwähnt , die ich als "traditionelle" Option betrachten würde. Es ist gut für einfache Routing-Algorithmen und für die meisten Probleme. Es ist auch einfach zu bedienen und verwendet eine traditionelle Datenbank im Backend.
Es hängt jedoch wirklich vom Umfang und der Art des Problems ab, das Sie lösen möchten, und das Routing ist ein Grafikproblem .
Auch hier haben die "Großen" normalerweise eine Menge Daten, die mit ihrer Grafik verknüpft sind (z. B. Verkehrsdaten, Busrouten, Gehwege), die sich auf den Routing-Algorithmus auswirken. Diese werden als multimodale Reiseplaner bezeichnet (bei denen Sie auch die Wahl zwischen verschiedenen "Modi" haben - keine Radwege - nur öffentliche Verkehrsmittel - so etwas). Sie können denken , wie auch die Reiseplanung eine Zeit sensibles Thema wird (dh , wenn Sie zu Fuß zurück , ein paar Kanten zurück, können Sie die U - Bahn fangen , die Sie zu Ihrem Ziel nimmt nach vorn als viel schneller , wenn Sie gerade versucht , die Kanten vorwärts zu navigieren mit den niedrigsten Kosten).
Die "Großen" speichern ihre Daten nicht in einer herkömmlichen Datenbank, sondern verwenden vorberechnete Graphen (willkommene Hadoop / Mapreduce-Cluster!). Wie Sie sich vorstellen können, werden diese Diagramme sehr groß. Daher kann es eine Herausforderung sein, die Kanten benachbarter Diagramme zu verbinden.
Wie auch immer, ich würde Ihnen empfehlen, sich einige multimodale Routing-Diagrammprojekte anzusehen:
Graphserver fällt mir ein. Nicht viel Dokumentation, aber viel reine Codierung (AFAIK, ich glaube, MapQuest verwendet eine Variante dieses Projekts für einige seiner Routing-Produkte).
Eine weitere Option wäre der OpenTripPlanner , hinter dem viele clevere Leute stecken (einschließlich Leute von Graphserver).