We present a set of parallel algorithms for computing exact k-nearest neighbors in low dimensions. Many k-nearest neighbor algorithms use either a kd-tree or the Morton ordering of the point set; our algorithms combine these approaches using a data structure we call the \textit{zd-tree}. We show that this combination is both theoretically efficient under common assumptions, and fast in practice. For point sets of size $n$ with bounded expansion constant and bounded ratio, the zd-tree can be built in $O(n)$ work with $O(n^{\epsilon})$ span for constant $\epsilon<1$, and searching for the $k$-nearest neighbors of a point takes expected $O(k\log k)$ time. We benchmark our k-nearest neighbor algorithms against existing parallel k-nearest neighbor algorithms, showing that our implementations are generally faster than the state of the art as well as achieving 75x speedup on 144 hyperthreads. Furthermore, the zd-tree supports parallel batch-dynamic insertions and deletions; to our knowledge, it is the first k-nearest neighbor data structure to support such updates. On point sets with bounded expansion constant and bounded ratio, a batch-dynamic update of size $k$ requires $O(k \log n/k)$ work with $O(k^{\epsilon} + \text{polylog}(n))$ span.
翻译:我们用一套平行算法来计算精确的 k- 近邻的低维值。 许多 k- 最近邻的算法使用 kd- tree 或 Morton 定点数; 我们的算法结合了这些方法, 我们称之为\ textit{ zd- tree} 的数据结构。 我们显示, 在共同的假设下, 这种组合在理论上是有效的, 在实践中也是快速的。 对于有约束扩展常数和约束比率的点数, zd- tree 可以用$O (n) 的工作用$O (n) 来构建。 此外, zd- tree 用于恒定的 $ (n- epsilon) < 1$, 寻找某个点的最近邻的 $- 美元 则需要 $(k\ log) 期待 美元 (k\ log) 时间 。 我们用现有的平行 K- nearn- 邻居的算法将我们最近的算法作为基准, 显示我们的执行速度一般比艺术状态快, 并在144 超超版读上达到 75x 速度 。 此外, 。 zd- tree 需要 平行的批量 递增量 美元 的 的 的 和 美元 递增量 和递增 K- sal- sal- rial- rial- rialxxxxxx 比例 。