A technique for solving the polygon inclusion problems
Kai Jin, Taikun Zhu, Ruixi Luo
TL;DR
This paper introduces Rotate-and-Kill, a unified framework for polygon inclusion and circumscribing problems that yields $O(n)$-time algorithms for four triangle problems in a convex $n$-gon: the maximum area triangle inside, the minimum area enclosing triangle, the minimum area all-flush triangle, and the minimum perimeter all-flush triangle. Central to the method are stability notions (3-stable, F-3-stable, G-3-stable), the interleaving property of locally optimal solutions, and a Killing function that guides a two-parameter search over candidate pairs. The authors provide specialized Killing functions for the various objectives (including Kill and Kill_p for perimeter minimization and even Kill_F for F-3-stable cases), with rigorous analyses showing amortized $O(1)$ time per step and an overall $O(n)$ running time. The technique subsumes and improves several prior results (e.g., Alg-CM, Alg-K, and related linear-time approaches) and is demonstrated to be robust and stable in practice, with clear implications for fast geometric computation and shape processing.
Abstract
We propose a technique called Rotate-and-Kill for solving the polygon inclusion and circumscribing problems. By applying this technique, we obtain $O(n)$ time algorithms for computing (1) the maximum area triangle in a given $n$-sided convex polygon $P$, (2) the minimum area triangle enclosing $P$, (3) the minimum area triangle enclosing $P$ touching edge-to-edge, i.e. the minimum area triangle that is the intersection of three half-planes out of the $n$ half-planes defining $P$, and (4) the minimum perimeter triangle enclosing $P$ touching edge-to-edge. Our algorithm for computing the maximum area triangle is simpler than the alternatives given in [Chandran and Mount, IJCGA'92] and [Kallus, arXiv'17]. Our algorithms for computing the minimum area or perimeter triangle enclosing $P$ touching edge-to-edge improve the $O(n\log n)$ or $O(n\log^2n)$ time algorithms given in [Boyce \emph{et al.}, STOC'82], [Aggarwal \emph{et al.}, Algorithmica'87], [Aggarwal and J. Park., FOCS'88], [Aggarwal \emph{et al.}, DCG'94], and [Schieber, SODA'95].
