我确定大多数人都熟悉closest pair problem,但还有其他算法或方法来修改当前的CP算法以获得 next 最近的一对吗?
答案 0 :(得分:1)
简单的一个,在O(n log(n))中:
E
E
进行比较并保持最近的一对,再次在O(n log(n))你现在拥有第二个最接近的一个。
答案 1 :(得分:0)
如果需要恒定数量的最小距离( next 对),则可以修改Wikipedia文章中的步骤3-5,将d_Lmin,d_Rmin,d_LRmin重新定义为最小距离的恒定长度列表。那使用c * log(n)内存。
如果 next 的使用时间少于O(n)次,则重新制定CR问题以返回比给定 d 更大的距离与 next < / em>方法。它可以用与CR相同的方法实现。我没有看到理论保证第4步可以在线性时间内完成,但有利于不将点检查到小方框中。
如果 next 的使用次数超过O(n)次,那么最好计算所有距离并对它们进行排序(如果内存不是问题)。