我想存储从3到20个维度的50到10 000个向量。我想知道在哪种结构中存储向量,以便能够快速求解最近邻或近似近邻问题。我将使用欧几里得,曼哈顿,马克斯和加权曼哈顿度量。什么数据结构用于快速变化的最近邻居搜索?
我开始读到这个问题,并发现(纠正我,如果我错了),当维数比这个向量的数量小得多时,kd-trees会这样做。性能可以是深度次线性的(O(log(n)))。
问题是,结构将变化非常迅速。每个矢量在程序过程中可以改变数千次。此外,矢量不需要保持它们的近似位置或比例。整个结构可以通过R^n“旅行”。
问题是,为了保持kd-tree的高性能,需要时不时的重新平衡。此操作可能与重建整个树一样昂贵。
如何解决kd-tree快速变化的问题?
好的,谢谢! :) –
我无法命名确切的结构,但肯定你应该看看fpp游戏引擎。游戏必须解决碰撞和可见物体的问题。他们通过寻找最近的邻居来限制他们的搜索空间。当然现场变化很大 – piotrek