构造
KD树的构造过程实际上是用许多与坐标轴平行的分割线按照一定规划将一个空间划分成多个子空间。
其中,每个分割线都经过一个样本点,每个区域有一个样本点。
将上图这样的划分转换成的kd树是:
其中,圆形结点代表分割线上的样本,方形结点代表区域中的样本。
可以发现,方形结点所在的区域是由它的路径上的圆形结点所在的分割线分割出来的。
例如:
D所在的区域是经过A、B所在的分割线切割得到的。
E所在的区域是经过A、C所在的分割线切割得到的。
搜索
KD的树的优化策略是省去对大部分数据点的搜索,从而减少搜索的计算量。
假设目标点落在与D相同的区域,那么应该在以下这些点中搜索来寻找最近点:
所在的位置 | 点 | 个数 | |
---|---|---|---|
1 | 与目标点同区域的点 | D | 1 |
2 | 目标点所在区域的分界线上的点 | A、B | lo |