Блог пользователя Pancake

Автор Pancake, 11 лет назад, По-английски

I have recently learnt the O(NlogN) solution which solves the closest pair problem based on a divide-and-conquer approach. However , I still have a question about it . I assume all N points are unique.

In the case where the closest pair in the current sub-problem consists of one point to the left of the middle line , and another to the right of the middle line , we have to :

  • list the points that satisfy abs(x - xmid) < D : D is the shortest distance so far.
  • sort these points with respect to their y-coordinates (in non-decreasing order)
  • Loop on those points in order , for each point there is a constant number of points that exist within the 2D * D rectangle and any point outside of this rectangle can't improve the answer.

I know that within a 2D * D rectangles there can exist at most 6 points such that any pair of them is at least D units of distance apart. Hence , in the previous method , I think we should examine at most 5 neighbor points within that rectangle. However , many websites claim that the upper bound is 7 or 8. I can't get why. May someone explain the reason ? Also , I'm interested in a formal proof for the 6-points-claim. I only found intuitive ones but they aren't very convincing. Thanks.

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

say your proof for "I think we should examine at most 5 neighbor points within that rectangle". but I think it's not important that you check 5 points or 6 points, its important that the number of points in the rectangle have the constant upper_bound for all possible situation.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Oh sure , the exact number of points doesn't affect the asymptotic complexity but I have a theoretical curiosity :) I think it's a bit hard to write down a formal proof for that.