考虑到一组非常大的GPS坐标,是否有时间/计算上有效的方法来确定输入GPS坐标是否在集合中任何点的给定半径范围内?预计算是可以接受的。我能想到的最好的是O(N)实现,但只是想知道是否有更好的方法来解决这个问题。
答案 0 :(得分:0)
您应该查看范围树。预处理点以创建范围树,然后使用它搜索特定范围内的所有点。空间复杂度为O(n log n)。时间复杂度为O(n log n + k),其中k是搜索半径中的点数。
答案 1 :(得分:0)
可以测试给定坐标,其时间复杂度略高于O(log4(N)),因为半径与点扩展的空间相比较小。
log4是对数为4的对数
Quadtree非常适合这项任务 另一种选择是R-Tree。
答案 2 :(得分:0)
如果您正在寻找Java实现,您可以尝试一个我完全{K}树posted here。通过它,您可以找到最新的GPS输入点。然后你只需要检查真实距离,看它是否在你感兴趣的半径范围内。