And*_*raz 9 search kdtree nearest-neighbor knn
我必须实现k个最近邻居在kd-tree中搜索10维数据.
但问题是我的算法对于k = 1来说非常快,但是对于k> 1(k = 2,5,10,20,100),我的算法慢了2000倍
对于kd树来说这是正常的,还是我在做什么?
那么,它主要取决于您的特定实现和数据集.
一个不平衡的树意味着你必须搜索比你需要的更多的数据.确保你的树形结构是理智的.
它还可能取决于你如何找到k个邻居.如果您的算法在树中搜索最近邻居并存储它,然后搜索第二个最近并存储它等,那么您不会非常有效地进行搜索.相反,当您发现越近的树遍历树时,保持k个最近邻居的运行列表并将爆破点排除在列表之外.这样您可以搜索一次,而不是k次.
不管怎样,听起来你正在为一门课程做这件事.尝试与您的教授,助教或同学交谈,看看您的结果是否典型.