凸包证明

Convex hull proof

如何正式证明无法在比 O(n log n) 更短的时间内找到凸包。从与排序的联系来看,我知道这是真的。因此,如果这不是真的,那意味着我们可以比 O( n log n) 更好地对 n 个时间点的集合进行排序,因为我们可以使用凸包算法进行排序,我们知道这是不可能的。但是如何正式证明呢?

简单的答案是,凸包算法应该按顺时针或逆时针顺序输出凸包的顶点 - 即算法的输出是一个多边形,并且必须输出多边形的顶点顺序正确。

假设你有一个数字列表;通过一些适当的缩放将它们转换为 0 到 359 度范围内的角度,以便原始列表中对应于角度 t 的每个数字成为 polar coordinates 中位置 (1; t) 处的一个点。凸包必然包括所有的点,并且必然按排序顺序排列,所以如果你能在 O(f(n)) 时间内找到凸包,那么你可以在 O(n + f(n)) 时间内排序,其中额外的 n 术语是将数字转换为角度并返回的成本。