地图提供商(如谷歌或Yahoo!地图)指示方向?
我的意思是,他们可能有某种形式的真实世界的数据,当然包括距离,但也可能是像驾驶速度,人行道的存在,火车时刻表等。但假设数据是一种更简单的格式,比如一个非常大的有向图,边缘权重反映了距离。我希望能够快速计算出从任意点到另一个点的方向。有时这些点会很近(在一个城市内),而有时它们会相隔很远(在全国各地)。
像Dijkstra算法这样的图算法将无法工作,因为图是巨大的。幸运的是,像A*这样的启发式算法可能会起作用。然而,我们的数据是非常结构化的,也许某种分层的方法可能会起作用?(例如,在相隔很远的某些“关键”点之间存储预先计算的方向,以及一些本地方向。然后,两个遥远点的方向将包括到一个关键点的局部方向,到另一个关键点的全局方向,然后又是局部方向。)
实践中实际使用的算法是什么?
PS:这个问题的动机是发现在线地图方向的怪癖。与三角形不等式相反,有时谷歌Maps认为x z比使用x y z这样的中间点花费更长的时间和更远的距离。但也许他们的行走方向也会优化另一个参数?
pp。这是对三角形不等式的另一个违反,这表明(对我来说)他们使用了某种分层方法:x z vs x y z。前者似乎使用了著名的塞瓦斯托波尔大道(Boulevard de Sebastopol),尽管它有点偏僻。
编辑:这两个例子似乎都不起作用了,但在最初的帖子中都起作用了。