Maximal Parallelograms in Convex Polygons
Kai Jin · arXiv (Cornell University) · 2015
Given a convex polygon $P$ of $n$ vertices in the plane, we consider the problem of finding the maximum area parallelogram (MAP) inside $P$. Previously, the best algorithm for this problem runs in time $O(n^2)$, and this was achieved by utilizing some nontrivial properties of the MAP. In this paper, we exhibit an algorithm for finding the MAP in time $O(n\log^2n)$, greatly improving the previous result. The main technical ingredient of our algorithm is a new geometric structure of a convex polygon $P$, which we call $Nest(P)$. Roughly speaking, $Nest(P)$ is an arrangement of certain line segments, each of which is parallel to an edge of $P$. It enjoys several nice properties, e.g., it is a planar division over the exterior of $P$, and one natural subdivision of it has a monotone property with the boundary of $P$. Indeed, $Nest(P)$ captures the essential nature of the MAPs; we reduce the optimization problem of finding the MAPs in $P$ to a location query problem comprising $O(n)$ basic location queries about $Nest(P)$. Each of these queries can be solved in $O(\log^2n)$ time without building $Nest(P)$ explicitly. Putting these together we obtain an $O(n\log^2n)$-time algorithm. We believe that the techniques developed in this paper will be useful for solving other related problems, and the structure $Nest(P)$ is of independent interest in convex geometry.