| Thankfully, we can make another life saving observation at
this point. For any particualr point p in one strip, only points
that meet the following constraints in the other strip need to be checked:
- those points within d of p in the direction of the
other strip
- those within d of p in the positive and negative
y directions
Simply because points outside of this
bounding box cannot be less than d units from p (see figure 3.3). It just so happens that because every
point in this box is at least d apart, there can be at most six
points within it (I won't let myself get away with that scot-free, click here
to see the proof). Well this is simply fantastic news, because now we
don't need to check all n2 points. All we have to do is
sort the points in the strip by their y-coordinates and scan the
points in order, checking each point against a maximum of 6 of its
neighbors. This means at most 6*n comparisons are required to check
all candidate pairs. However, since we sorted the points in the strip
by their y-coordinates the process of merging our two subsets is
not linear, but in fact takes O(nlogn) time.
|