Skip to content

凸包

Convex hull

包含给定点集的最小凸集,是凸几何中的基本包络对象,并可进一步研究其算法构造。

形式陈述

集合 SRd 的凸包首先是一个凸几何对象:它由 S 的所有有限凸组合组成,

conv(S)={iλixi:λi0, iλi=1},

等价于包含 S 的所有凸集之交。有限平面点集的凸包是可能退化的凸多边形。计算页面通常以极点序列表示它,并需约定是否保留共线边界点;这种输出接口不改变凸包作为最小凸集的定义。

直觉

凸包是包含点集的最小凸集,可想成套住所有点的橡皮筋收紧后留下的边界。它丢弃不影响外轮廓的内部点,却保留所有线性方向上的极值,因此既是几何包络,也是许多优化问题的充分摘要。关键条件是凸组合系数非负且和为一;若允许任意线性组合,得到的是仿射包而非凸包。

例子与边界

三角形三个顶点的凸包是整个三角形,内部点不改变结果。更具体地,点集 (0,0),(1,0),(1,1),(0,1),(1/2,1/2) 的凸包是单位正方形,中心点不成为顶点,因为它可写成四个角点的凸组合。Graham scan 先按极角排序,再用方向判定维护左转栈,在比较/实数 RAM 模型下给出确定性最坏 O(nlogn);单调链达到同一界。若输出极点数为 h,输出敏感算法可以达到 O(nlogh),所以只报一个输入规模有时会掩盖更细的保证。

若所有点共线,凸包退化为两端点之间的线段;只有一个不同点时则退化为单点,而不是二维多边形。边界上其余共线点是否全部输出取决于 API 约定:几何对象的极点只有端点,但某些算法题要求保留所有边界输入点。重复点、浮点近共线和输入顺序也必须显式处理。

推论与应用

凸包建立在凸集有限点集上,常由方向判定驱动 Graham scan 或 monotone chain;共线与重复点要求精确谓词和明确 tie-breaking。随机增量构造提供期望分析的另一条路线,但随机排列的期望界不能写成确定性最坏界。数据超出内存时应在外存模型下计块传输,并行实现则按并行模型分别报告工作与深度。

凸包边界上的站点对应Voronoi 图的无界 cell,Delaunay 三角剖分覆盖同一凸包。在线性目标上,最优点可在极点中寻找;碰撞检测、形状摘要和几何对偶也使用这一外壳。

参考资料
  • Mark de Berg et al., Computational Geometry: Algorithms and Applications, 3rd ed., Springer, 2008,Chs. 1–7。
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Parts I–VI。