最近的一对点(线性1-D情况)算法

时间:2014-10-09 23:55:51

标签: algorithm computational-geometry

我辅导学生,她的一项任务是描述一维案例中最近一对点的O(nlogn)算法。但限制是她不允许使用分而治之的方法。我从几年前用户发布的问题中了解了二维案例。如果有人想看一下,我会链接它:对于二维案例(飞机) - "Closest pair of points" algorithm

然而,对于1-D情况,我只能想到一个解决方案,它涉及检查线上的每个点并将其与其左侧和右侧的最近点进行比较。但是这个解决方案不是O(nlogn),因为检查每个点将花费与n成比例的时间,并且每个点的比较将花费与2n成比例的时间。如果不使用分而治之的方法,我不确定log(n)会来自何处。

出于某种原因,我无法提出解决方案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

提示:如果点数从左到右排序,你会做什么,复杂性是多少?首先订购积分的复杂程度是多少?

答案 1 :(得分:1)

在我看来,有人可以:

  1. 按位置对位置进行排序 - O(n log n)
  2. 找出有序位置之间的差异 - O(n)
  3. 找出最小的差异 - O(n)
  4. 最小的差异定义了两个最接近的点。
  5. 总体结果为O(n log n)。