The convex hull of a data set $P$ is the smallest convex set that contains $P$. In this work, we present a new data structure for convex hull, that allows for efficient dynamic updates. In a dynamic convex hull implementation, the following traits are desirable: (1) algorithms for efficiently answering queries as to whether a specified point is inside or outside the hull, (2) adhering to geometric robustness, and (3) algorithmic simplicity.Furthermore, a specific but well-motivated type of two-dimensional data is rank-based data. Here, the input is a set of real-valued numbers $Y$ where for any number $y\in Y$ its rank is its index in $Y$'s sorted order. Each value in $Y$ can be mapped to a point $(rank, value)$ to obtain a two-dimensional point set. In this work, we give an efficient, geometrically robust, dynamic convex hull algorithm, that facilitates queries to whether a point is internal. Furthermore, our construction can be used to efficiently update the convex hull of rank-ordered data, when the real-valued point set is subject to insertions and deletions. Our improved solution is based on an algorithmic simplification of the classical convex hull data structure by Overmars and van Leeuwen~[STOC'80], combined with new algorithmic insights. Our theoretical guarantees on the update time match those of Overmars and van Leeuwen, namely $O(\log^2 |P|)$, while we allow a wider range of functionalities (including rank-based data). Our algorithmic simplification includes simplifying an 11-case check down to a 3-case check that can be written in 20 lines of easily readable C-code. We extend our solution to provide a trade-off between theoretical guarantees and the practical performance of our algorithm. We test and compare our solutions extensively on inputs that were generated randomly or adversarially, including benchmarking datasets from the literature.
翻译:数据集 $P$ 的凸包是包含 $P$ 的最小凸集。本文提出一种新的凸包数据结构,支持高效的动态更新。在动态凸包实现中,以下特性至关重要:(1) 高效回答指定点是否位于凸包内部或外部的查询算法;(2) 满足几何鲁棒性;(3) 算法简洁性。此外,一类具有明确动机的二维数据是基于排名的数据。在此类数据中,输入为一组实数值集合 $Y$,对于任意 $y\in Y$,其排名为 $y$ 在 $Y$ 排序序列中的索引。每个 $Y$ 中的值可映射为点 $(rank, value)$,从而构成二维点集。本文提出一种高效、几何鲁棒的动态凸包算法,支持点内部性查询。同时,当实数值点集面临插入与删除操作时,我们的构造方法可高效更新排名有序数据的凸包。该改进方案基于对 Overmars 和 van Leeuwen [STOC'80] 经典凸包数据结构的算法简化,并结合了新的算法洞见。我们在更新时间的理论保证上与 Overmars 和 van Leeuwen 保持一致,即 $O(\log^2 |P|)$,同时支持更广泛的功能(包括基于排名的数据)。算法简化包括将原有的11种情况检查简化为3种情况检查,并可用20行易读的C代码实现。我们进一步扩展解决方案,在理论保证与算法实际性能之间提供权衡。通过在随机生成或对抗性生成的输入(包括文献中的基准数据集)上进行广泛测试与比较,验证了算法的有效性。