在最接近的一对分而治之的算法中,用点的y值对“条带”进行排序有什么意义?

时间:2013-11-05 03:37:08

标签: algorithm recursion coordinates divide-and-conquer closest-points

我相信我非常清楚地理解算法,除了通过查看除法之外是否有任何点靠近并创建条带的步骤,其中条带中的点是候选者。

然后算法规定通过y坐标对点进行排序,然后检查条带中的每个其他点,以查找是否存在比先前找到的距离更小的距离。它基本上听起来像你在条带内的暴力。

例如,这里是算法简介的状态:

enter image description here

所以看起来你只需要拿出每一点并将其与其他所有点进行比较以找到最接近的点?为什么有必要按y值排序呢?你已经用x排序了它们,为什么不用它来蛮力?

1 个答案:

答案 0 :(得分:1)

您不会对Y'中的所有点进行强力比较,而只会对p旁边的点进行比较。如果那个已经太远了你就可以停下来,因为其他所有点都会更远。如果最后一个邻居仍然在您的搜索距离内,您只能继续评估下一个最近邻居。

该文字在中解释了它,我们很快就会看到部分。

排序是一种优化,允许您在支付O(1)的排序成本后,在O(n log n)中迭代最近的邻居。