下一个最近的对问题

时间:2010-10-26 20:49:19

标签: math graph graph-theory

我确定大多数人都熟悉closest pair problem,但还有其他算法或方法来修改当前的CP算法以获得 next 最近的一对吗?

2 个答案:

答案 0 :(得分:1)

简单的一个,在O(n log(n))中:

  • 在O(n log(n))
  • 中找到壁橱对(p1,p2)
  • 用p1或p2计算所有对(但不是(p1,p2))保持最接近的一对,让我们在O(n)中称它为E
  • 删除(1)
  • 中的p1和p2
  • 找到壁橱对,将其与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)次,那么最好计算所有距离并对它们进行排序(如果内存不是问题)。