关于Kd树啊,可能很多人没听说过。
Kd树是 K-dimension tree 的缩写,是对数据点在 K维空间(如二维(x,y),三维(x,y,z),K维(x,y,z, …))中划分的一种高维索引树形数据结构。Kd树是一种空间划分树,说白了,就是把整个空间划分为特定的几个部分,然后在特定空间的部分内进行相关搜索操作。
Kd树从BST(Binary search tree)发展而来,在划分好的特定空间的部分内进行相关搜索操作。Kd树也是一种平衡二叉树。
Kd树主要应用于多维空间关键数据的搜索,常用于大规模高维数据密集的查找比对的使用场景中,主要是最近邻查找(Nearest Neighbor)以及近似最近邻查找(Approximate Nearest Neighbor)。在计算机视觉(CV)中主要是图像检索和识别中的高维特征向量的查找和比对。 (本段文字参考自下面的这篇文章)
感兴趣的可以看这篇讲解
这里我们简单地实现一个