“对象与查询还由简单多边形、点内判定等页面固定;点集结构由凸包、Voronoi 图和Delaunay 三角剖分承担;最近点对展示几何分治路线。总页只提供对象—谓词—范式—查询结构的方法地图,各…”
形式陈述 ​
输入是
递归过程同时维护按
额外空间可做到
直觉 ​
分治先排除左右内部的大多数点对,只留下可能跨越分割线的窄带。Packing 不是经验猜测,而是数量证书:已知同侧点不能靠得比
全局有平方多个点对,算法却只在每层检查线性多个局部候选;真正的加速来自几何分离,而非单纯把点数组切成两半。
例子与边界 ​
两簇点分别位于分割线左右时,各簇内部最近距离可能较大,而最优对恰由靠近分割线的两个点组成。递归答案本身会漏掉这对,strip 合并阶段正是为捕获跨侧候选;远离分割线至少
输入含重复点时答案立即为零,排序阶段即可检测;继续套 packing 证明会违反“同侧点至少相距
“检查七个后继”依赖具体 strip 宽度、边界归属和分格证明;换一种闭区间约定可能得到另一个常数,但不改变线性合并。实现应证明自己的常数覆盖所有候选,而不是把数字当作魔法循环上界。
推论与应用 ​
最近点对是几何分治的典型闭环:预排序、递归不变量、合并证书和复杂度递推缺一不可。它用于碰撞预筛、聚类和空间数据分析,也为 Delaunay 邻接包含最近点对提供直觉。
高维 packing 常数随维数快速增长,算法虽可推广却不再有同样工程优势。不同度量下 strip 形状和局部装填界也会改变,不能直接复用 Euclidean 的七邻居实现。
参考资料
- Michael I. Shamos and Dan Hoey, “Closest-Point Problems,” FOCS 1975, pp. 151–162.
- Thomas H. Cormen et al., Introduction to Algorithms, 3rd ed., MIT Press, 2009, §33.4.