考虑平面中n个点的集合S,使得最远的对具有最多1的距离。我想在O(1)时间内找到给定查询点q(不在S中)的最远点。如何预处理S中的点以实现所需的查询时间限制?
这可能吗?
答案 0 :(得分:2)
严格意义上不可能。这是平面直线图中的点位置问题,已知其需要O(log(N))查询时间。
无论如何,它可以通过网格化来解决。
在最远点Voronoi图上叠加方格,并为每个单元格注释它所覆盖的区域。确保覆盖区域的数量有界。这可以通过使网格间距小于图中两个最接近顶点的距离来近似实现。
对于查询像素,查找包含的单元格是在恒定时间内完成的。然后在有界数字中找到该区域也需要恒定的时间。
答案 1 :(得分:1)
假设这些点之间没有关系,那么没有一个操作会给你最远点。因此,唯一的方法是提前计算它,所以你需要在每个点和距离它最远的点之间进行简单的映射。