🤖 AI Summary
This work resolves the long-standing open problem of achieving optimal deterministic time complexity for triangulating polygons with holes—or equivalently, computing the trapezoidal decomposition of multiple disjoint simple polygonal chains. By treating Chazelle’s linear-time triangulation algorithm for simple polygons as a black box and integrating it with advanced trapezoidal decomposition and efficient intersection-handling techniques, the authors present the first deterministic algorithm running in $O(n + h \log h)$ time, where $n$ is the number of vertices and $h$ the number of holes. This breakthrough improves upon the best-known bounds that had remained unchanged for over three decades. Moreover, the algorithm remains optimal even when the number of input intersections is at most $n^{1-\varepsilon}$ for any constant $\varepsilon > 0$, while fully computing all intersections and producing the complete trapezoidal decomposition.
📝 Abstract
We consider the problem of triangulating a polygon with $n$ vertices and $h$ holes, or relatedly the problem of computing the trapezoidal decomposition of a collection of $h$ disjoint simple polygonal chains with $n$ vertices total. Clarkson, Cole, and Tarjan (1992) and Seidel (1991) gave randomized algorithms running in $O(n\log^*n + h\log h)$ time, while Bar-Yehuda and Chazelle (1994) described deterministic algorithms running in $O(n+h\log^{1+\varepsilon}h)$ or $O((n+h\log h)\log\log h)$ time, for an arbitrarily small positive constant $\varepsilon$. No improvements have been reported since. We describe a new $O(n + h\log h)$-time algorithm, which is optimal and deterministic.
More generally, when the given polygonal chains are not necessarily simple and may intersect each other, we show how to compute their trapezoidal decomposition (and in particular, compute all intersections) in optimal $O(n + h\log h)$ deterministic time when the number of intersections is at most $n^{1-\varepsilon}$.
To obtain these results, Chazelle's linear-time algorithm for triangulating a simple polygon is used as a black box.