凸包




在一个实数矢量空间中,对于给定集合
,所有包含X的凸集的交集
被称为
的凸包。
的凸包可以用
内所有点
的线性组合来构造。
在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。
逐次将点加入,然后检查之前的点是否在新的凸包上。由于每次都要检查所有之前的点,时间复杂度为。
首先由一点必定在凸包的点开始,例如最左的一点。然后选择
点使得所有点都在
的右方,这步骤的时间复杂度是
,要比较所有点以
为原点的极坐标角度。以
为原点,重复这个步骤,依次找到
。这总共有
步。因此,时间复杂度为
。
由最底的一点A_1开始(如果有多个这样的点,那幺选择最左边的),计算它跟其他各点的连接和x轴正向的角度,按小至大将这些点排序,称它们的对应点为。这里的时间复杂度可达
。