多维坐标的数据结构(搜索,插入)?



是否有专门为快速插入和搜索多维坐标而设计的数据结构(多于 2 或 3d,出于所有实际目的,例如小于 1k 维和 1M 点)?更好的是,对于任意距离指标?

我知道 kd 树,它有利于插入,但据我所知,平衡它们并不平凡,搜索在更高维度上不是很有效。乍一看,无序映射/哈希表将是一个很好的解决方案,但据我所知,哈希和冲突存在问题(例如,转换为字符串通常会截断数值精度,并且处理非相邻点的冲突可能很昂贵)。也许像每个维度上的红黑树这样的东西适合插入,而对于搜索(沿维度递归过滤)来说并不算太糟糕。

我只是不想重新发明轮子,我相信这是当今数据科学的共同需求。很高兴将论文/教程的链接作为答案。理想情况下,答案将有一个现有的C/C++/Python/Java/Matlab实现。

您要查找的数据结构是 R-Tree。

你可以在这里找到Java实现。 https://github.com/davidmoten/rtree

最新更新