我有一个大约 100,000 个(X,Y)对的数据集,表示 2D 空间中的点。对于每个点,我想找到它的 k 最近邻。
所以,我的问题是——假设我想绝对最小化整体运行时间,什么样的数据结构/算法是合适的选择?
我不是在寻找代码 - 只是指向合适方法的指针。我对似乎相关的选择范围感到有点害怕——四叉树、R-树、kd-树等。
我认为最好的方法是构建一个数据结构,然后对每个点运行某种 k-最近邻搜索。但是,由于(a)我事先知道这些点,并且(b)我知道我必须对每个点只运行一次搜索,也许有更好的方法?
一些额外的细节:
- 因为我想最小化整个运行时间,所以我不在乎大部分时间是花在结构还是搜索上。
- (X, Y) 对分布得相当好,所以我们可以假设一个几乎均匀的分布。