用于查找最近邻居的空间分区算法如何工作?

Moe*_*oeb 5 algorithm nearest-neighbor space-partitioning

为了找到最近的邻居,Space Partitioning是算法之一.它是如何工作的?

假设我有一组2D点(x和y坐标),我得到一个点(a,b).该算法如何找出最近的邻居?

And*_*ith 4

空间分区实际上是一系列密切相关的算法,用于分区空间,以便应用程序可以更轻松地处理点或多边形。

我认为有很多方法可以解决你的问题。我不知道您愿意构建多复杂的解决方案。一种简单的方法可能是构建一棵二叉树,将空间切成 2。所有点都划分在某个中间平面之间。通过递归细分来构建树,直到用完点。

然后将优化搜索最近邻居,因为树的每次遍历都会缩小搜索区域。

在一些文献中,他们称之为kd 树

  • 您将尝试路径上的每个节点,而不是树中的每个节点。因此,您的搜索空间被修剪并且比针对所有点进行测试要小得多。我的猜测是,它将以对数时间运行(因为您只会尝试每个深度一个节点)而不是线性时间。 (2认同)