A Coreset for Approximate Furthest-Neighbor Queries in a Simple Polygon
Mark de Berg, Leonidas Theocharous
TL;DR
The paper addresses approximate furthest-neighbor queries for a set of points $P$ inside a simple polygon $\mathcal{P}$ under geodesic distance. It introduces an $\varepsilon$-coreset of size $O(1/\varepsilon^2)$, $C\subset P$, such that for every query point $q\in\mathcal{P}$, the geodesic distance to the furthest neighbor in $C$ approximates the true furthest distance within a factor $1-\varepsilon$, independently of $|P|$ and the polygon complexity. The construction relies on reducing to a diameter path $\Gamma=\pi(p_1,p_2)$, a cone-based decomposition, pockets along $\Gamma$, and a careful handling of points inside and outside the relative convex hull, with a total time of $O\left(\frac{1}{\varepsilon} \left( n\log(1/\varepsilon) + (n+m)\log(n+m)\right) \right)$ for building the coreset. This enables a data structure whose storage is $O(m+1/\varepsilon^2)$ for answering $\varepsilon$-approximate furthest-neighbor queries, significantly reducing dependence on $n$ and $m$ while preserving fast query times. The results have implications for geometric optimization tasks in polygons and open avenues for further tightening the core-set size and extending to polygons with holes.
Abstract
Let $\mathcal{P}$ be a simple polygon with $m$ vertices and let $P$ be a set of $n$ points inside $\mathcal{P}$. We prove that there exists, for any $\varepsilon>0$, a set $\mathcal{C} \subset P$ of size $O(1/\varepsilon^2)$ such that the following holds: for any query point $q$ inside the polygon $\mathcal{P}$, the geodesic distance from $q$ to its furthest neighbor in $\mathcal{C}$ is at least $1-\varepsilon$ times the geodesic distance to its further neighbor in $P$. Thus the set $\mathcal{C}$ can be used for answering $\varepsilon$-approximate furthest-neighbor queries with a data structure whose storage requirement is independent of the size of $P$. The coreset can be constructed in $O\left(\frac{1}{\varepsilon} \left( n\log(1/\varepsilon) + (n+m)\log(n+m)\right) \right)$ time.
