为什么需要在kd-tree构造中替换维度

时间:2015-11-12 17:46:58

标签: kdtree multivariate-partition

我有一个关于在kd-tree算法中划分空格的方法的问题。

假设我在平面上有点,有(x,y)坐标。假设当点在同一行时我们不处于特定情况。我在想为什么我们需要交替分裂坐标,在一个级别上,使用x轴,下一级,使用y轴。重要的是,如果我们只使用x方向来分割空格,我们总是有一个二叉树,搜索算法总是平均采用log(n)(假设我们有相对良好的平衡树)。

当我通过交替分割方向分割空间时,是什么让我更多?我想知道它是否与多维中的一些概率性质相关?

1 个答案:

答案 0 :(得分:0)

我认为当您开始搜索树时会出现问题,例如使用窗口查询(矩形查询)。

让我们假设一个矩形数据集,在每个方向上-1,0001,000之间的点均匀分布。 如果按x排序,那么应该返回(-900 < x < 900) && (1 < y < 10)所有点的查询可能必须扫描几乎整个树。 log(n)搜索仅在您的查询仅限制x而非y时才有效,即(1<x<10) && (-inf<y<+inf)