kd-tree BBF算法时间复杂度

时间:2013-07-05 04:06:38

标签: kdtree

我有5000个维度的2000分,我想得到最近的邻居。

现在我遇到了一些问题,任何人都可以给出答案。

  1. 人们说,它适用于高维度。什么是时间复杂度?

  2. 检查了这么多树条目后
  3. @param max_nn_chks搜索被切断

    在我读完算法之后,我想知道当我将max_nn_chks设置得太低时我是否会得到错误的答案。如果是,那么告诉我如何设置这个参数,否则给出一个理由,谢谢。

  4. kdtree是我的数据获得最近邻居的最佳数据结构吗?

1 个答案:

答案 0 :(得分:0)

  1. 时间复杂度与受限制的KD-Tree搜索基本相同,加上维持优先级队列的时间很短。受限制的KD树搜索算法需要遍历树的全部深度(点数的log2)乘以限制(允许访问的叶节点/点的最大数量)。

  2. 是的,如果限制太低,你会得到一个错误的答案。您只能测量找到的真实NN的分数与搜索的叶子节点数。由此,您可以确定最佳值。

  3. 通常,随机kd树林和分层k-means树表现最佳。 FLANN提供了一种方法来确定使用哪种算法(k-means与随机kd-tree林)并为您设置最佳参数。

  4. 数据结构也有很大影响。例如,如果您知道有多个点集合在一起,您可以将它们分组到树的单个节点中(例如,通过它们的质心表示它们)并加快搜索速度。

    可以对数据采用诸如视觉词,PCA或随机投影之类的其他技术。这是一个非常活跃的研究领域。