连接二维空间中的任意两点

时间:2016-10-22 10:54:38

标签: algorithm data-structures time-complexity distance point

是否有任何算法优于O(n ^ 2),只要它们的距离小于常数t,就可以用直线连接任意两个点?

我正在考虑根据x坐标对点进行排序,然后在[x-t,x + t]内寻找另一个点。但最坏的情况仍然是O(n ^ 2)。任何的想法?我们是否有任何特殊的数据结构来加速?

1 个答案:

答案 0 :(得分:2)

可能有用的一种方法是为每个点计算一个桶:

int(x/t),int(y/t)

即。点(0.1,0.9),(0.5,0.5),(0.8,0.2)都会进入同一个桶。

将所有点放入这些桶中,然后再次迭代点。

此组织的原因是您只需要针对同一个存储桶或8个相邻存储桶中的点检查点。

在一个不好的情况下,这可能仍然是O(n ^ 2)(例如,如果所有点都在彼此的t之内),但在某些情况下它可能会有所帮助。