PS:为什么阴影区域是d*2d的面积和至于为什么最多有6个点,我是这样理解的。首先对于任意一个左侧区域的px点,他有可能位于中间的垂线上面,因此如果存在最小的d在中间区域,则一定位于d*2d的阴影内,此外,不难发现,除了订单的6个点,如果还存在其他的点,那么必定右侧就会出现最小的d,之前我们利用分治法已经得到两边最小的d值了。因此矛盾。
于是步骤如下:
步骤1:根据点的y值和x值对S中的点排序。
步骤2:找出中线L将S划分为SL和SR
步骤3:将步骤2递归的应用解决SL和SR的最近点对问题,并令d=min(dL,dR)。
步骤4:将L-d~L+d内的点以y值排序,对于每一个点(x1,y1)找出y值在y1-d~y1+d内的接下来的7个点,计算距离为d’。如果d’小于d,令d=d’,最后的d值就是答案。