In this paper, we present Ray-shooting Quickhull, which is a simple, randomized, outputsensitive version of the Quickhull algorithm for constructing the convex hull of a set of n points in the plane. We show that the randomized Ray-shooting Quickhull algorithm runs in O(n log h) expected time, where h is the number of points on the boundary of the convex hull. Keeping with the spirit of the original Quickhull algorithm, our algorithm is quite simple and is, in fact, closer in spirit to the well-known randomized Quicksort algorithm. Unlike the original Quickhull algorithm, however, which can run in ${\Theta}(n^2) time$ for some input distributions, the expected performance bounds for the randomized Ray-shooting Quickhull algorithm match or improve the performance bounds of more complicated algorithms. Importantly, the expectation in our output-sensitive performance bound does not depend on assumptions about the distribution of input points. Still, we show that, like the deterministic Quickhull algorithm, our randomized Ray-shooting Quickhull algorithm runs in O(n) expected time for n points chosen uniformly at random from a bounded convex region. We also provide experimental evidence that the randomized Ray-shooting Quickhull algorithm is on par or faster than deterministic Quickhull in practice, depending on the input distribution.
翻译:本文提出射线射击快速凸包算法,这是一种用于构建平面上 n 个点集凸包的简单、随机化、输出敏感的快速凸包算法变体。我们证明随机化射线射击快速凸包算法的期望运行时间为 O(n log h),其中 h 为凸包边界上的点数。秉承原始快速凸包算法的设计理念,我们的算法相当简洁,其精神内核实际上更接近著名的随机化快速排序算法。然而,与原始快速凸包算法(对某些输入分布可能达到 ${\Theta}(n^2)$ 运行时间)不同,随机化射线射击快速凸包算法的期望性能边界匹配或超越了更复杂算法的性能边界。重要的是,我们输出敏感性能边界中的期望值不依赖于输入点分布的假设。尽管如此,我们证明与确定性快速凸包算法类似,对于从有界凸区域均匀随机选取的 n 个点,我们的随机化射线射击快速凸包算法具有 O(n) 期望运行时间。我们还通过实验证据表明,随机化射线射击快速凸包算法在实际应用中与确定性快速凸包算法性能相当或更优,具体表现取决于输入分布。