数学 – 在O(n)中求圆上最近2个点的理论算法

给定单位圆轮廓上的n个点,我想计算最接近的2个点.

这些点没有订购,我需要在O(n)中完成(所以我不能顺时针排序……)

我曾经知道解决方案,但忘记了……解决方案包括散列,并将圆分割成n个或更多个切片.

如果你发现一个算法只计算距离,而不是特定点,那就足够了..

最佳答案 这是一个
solution that purports to be O(n log log n),用于找到一条线上最近的一对点.这是对你的问题的一个微不足道的转变 – 每一点

单位圆上的(x,y)映射到线段[0,2pi]中的线性坐标x’,

其中x’= atan2(y,x).一旦你将它转换为一维问题,这个想法就是

大致开始将x’坐标散列到桶中,重新划分大桶

较小的桶,直到每桶最多一个点,然后遍历列表

并找到最近的一对. (你还有一张额外的支票,看看是否有

最小和最大x’坐标的点形成比线性更接近的对

最小的.)

点赞