We present efficient data structures for approximate nearest neighbor searching and approximate 2-point shortest path queries in a two-dimensional polygonal domain $P$ with $n$ vertices. Our goal is to store a dynamic set of $m$ point sites $S$ in $P$ so that we can efficiently find a site $s \in S$ closest to an arbitrary query point $q$. We will allow both insertions and deletions in the set of sites $S$. However, as even just computing the distance between an arbitrary pair of points $q,s \in P$ requires a substantial amount of space, we allow for approximating the distances. Given a parameter $\varepsilon > 0$, we build an $O(\frac{n}{\varepsilon}\log n)$ space data structure that can compute a $1+\varepsilon$-approximation of the distance between $q$ and $s$ in $O(\frac{1}{\varepsilon^2}\log n)$ time. Building on this, we then obtain an $O(\frac{n+m}{\varepsilon}\log n + \frac{m}{\varepsilon}\log m)$ space data structure that allows us to report a site $s \in S$ so that the distance between query point $q$ and $s$ is at most $(1+\varepsilon)$-times the distance between $q$ and its true nearest neighbor in $O(\frac{1}{\varepsilon^2}\log n + \frac{1}{\varepsilon}\log n \log m + \frac{1}{\varepsilon}\log^2 m)$ time. Our data structure supports updates in $O(\frac{1}{\varepsilon^2}\log n + \frac{1}{\varepsilon}\log n \log m + \frac{1}{\varepsilon}\log^2 m)$ amortized time.
翻译:我们提出了在具有 $n$ 个顶点的二维多边形域 $P$ 中,用于近似最近邻搜索和近似两点最短路径查询的高效数据结构。我们的目标是存储 $P$ 中一个动态的点位集合 $S$(包含 $m$ 个点位),以便能够高效地找到与任意查询点 $q$ 最接近的站点 $s \in S$。我们将允许在站点集合 $S$ 中进行插入和删除操作。然而,由于即使仅计算任意点对 $q,s \in P$ 之间的距离也需要相当大的空间,我们允许对距离进行近似。给定参数 $\varepsilon > 0$,我们构建了一个 $O(\frac{n}{\varepsilon}\log n)$ 空间的数据结构,能够在 $O(\frac{1}{\varepsilon^2}\log n)$ 时间内计算出 $q$ 和 $s$ 之间距离的 $1+\varepsilon$ 近似值。在此基础上,我们进一步获得了一个 $O(\frac{n+m}{\varepsilon}\log n + \frac{m}{\varepsilon}\log m)$ 空间的数据结构,使我们能够报告一个站点 $s \in S$,使得查询点 $q$ 与 $s$ 之间的距离至多是 $q$ 与其真实最近邻之间距离的 $(1+\varepsilon)$ 倍,查询时间为 $O(\frac{1}{\varepsilon^2}\log n + \frac{1}{\varepsilon}\log n \log m + \frac{1}{\varepsilon}\log^2 m)$。我们的数据结构支持在 $O(\frac{1}{\varepsilon^2}\log n + \frac{1}{\varepsilon}\log n \log m + \frac{1}{\varepsilon}\log^2 m)$ 的摊还时间内进行更新。