地图提供商(例如 Google 或 Yahoo! Maps)如何建议路线?
我的意思是,他们可能有某种形式的真实世界数据,当然包括距离,也可能包括行驶速度、人行道的存在、火车时刻表等。但假设数据采用更简单的格式,比如一个非常大的有向图边缘权重反映距离。我希望能够快速计算从一个任意点到另一点的方向。有时这些点会靠近(在一个城市内),而有时它们会相距很远(越野)。
像 Dijkstra 算法这样的图算法将不起作用,因为图是巨大的。幸运的是,像 A* 这样的启发式算法可能会起作用。但是,我们的数据非常结构化,也许某种分层方法可能有效?(例如,存储相距较远的某些“关键”点之间的预先计算的方向,以及一些局部方向。那么两个远点的方向将涉及到一个关键点的局部方向,到另一个关键点的全局方向,然后是局部方向再次指示。)
在实践中实际使用了哪些算法?
PS。这个问题的动机是发现在线地图方向的怪癖。与三角不等式相反,有时谷歌地图认为XZ比在XYZ中使用中间点需要更长的时间和更远的距离。但也许他们的步行方向也针对另一个参数进行了优化?
聚苯乙烯。这是对三角不等式的另一个违反,这表明(对我而言)他们使用某种分层方法:XZ与XYZ。前者似乎使用了著名的 Boulevard de Sebastopol,尽管它有点偏僻。
编辑:这些示例似乎都不再有效,但在原始帖子发布时都有效。