【发布时间】:2012-12-18 15:02:44
【问题描述】:
我想在 3 到 20 维中存储 50 到 10 000 个向量。我想知道将向量存储在哪个结构中,以便能够快速解决最近邻或近似最近邻问题。我将使用 Euclidean、Manhattan、Max 和加权曼哈顿度量。
我开始研究这个问题并发现(如果我错了,请纠正我)当维数远小于向量数时,kd-trees 会做到这一点。性能可以是深度次线性的 (O(log(n)))。
问题是结构会发生非常迅速的变化。每个向量在程序过程中可以改变数千次。 此外,向量不需要保持它们的大致位置或比例。整个结构可以“穿越”R^n。
问题在于,为了保持 kd-tree 的高性能,需要不时进行重新平衡。此操作可能与重建整棵树一样昂贵。
如何解决kd-tree快速变化的问题?
【问题讨论】:
-
我无法说出确切的结构,但您应该看看 fpp 游戏引擎。游戏必须解决碰撞和可见物体的问题。他们通过寻找最近的邻居来限制他们的搜索空间。当然场景变化很大
标签: algorithm data-structures computer-science nearest-neighbor