当初始位置估算错误时,导航软件如何更新推荐路线?

时间:2017-08-19 21:22:52

标签: algorithm gps graph-theory

您只需在手机的导航软件中输入目的地地址即可。它计算出它认为需要花费最短时间的路线。

当你开车时,你会遇到一些GPS漂移,导航软件认为你已经在高速公路上取下了飞机。

我想从算法的角度来看,当导航软件在一秒钟之后估算出更准确的位置时,它如何知道自我纠正?这个问题看似简单,但我正在寻找一个非常具体的答案。

我猜这个应用程序有一个存储在几个节点的内存中的图形,描述了不同的道路位置(这也是它知道如何在正确的方向上绘制一条线)。当它猜测你退出了offramp时,它意识到你认为你去的节点的估计距离太远而不准确,所以它在图表上回溯并走另一条路并找到正确的节点。它是否正确?还是更简单?在找到最接近当前位置的节点之前,它是否会返回DFS?

1 个答案:

答案 0 :(得分:0)

那里有很多不同的导航系统,他们使用不同的算法,所以我怀疑可以得到一般答案,但是:

快速导航的“教科书”方法通常是双侧略微修改的Dijkstra。换句话说,你从头开始,用你到达那里的时间和你来自的节点标记所有直接连接的节点。

然后,在连接到这些节点的节点上重复此操作。冲洗,重复。如果遇到之前见过的节点,则将“新”路径到达那里的时间与已标记的路径进行比较。只有较短的一个幸存下来。

您可以从开始和目的地交替进行。 (你可能有点聪明 - 例如,你很少在错误的方向上走50公里)。在某些时候,两棵树都“相遇”。您基本上可以在所有可以从两端到达的节点之间切换图形,并使用通过最短距离节点的路径。

现在,回到你的问题:你的导航系统发现你走了一条它没想到你走的路。没问题,该节点只能是一个直接连接到它所在节点的节点 - 其他节点不太可能,除非你可以传送。现在,由于如上所述,Dijkstra已经计算了到达该节点需要多长时间,因此只需转动树即可。真的,如果你正在进行路线规划,这是非常标准的策略。

所以,你有一些有趣的问题!如果你没有,我建议你阅读 Dijkstra的算法