好看的嫡女重生复仇文:数据结构十三:k-d树(k维树)

来源:百度文库 编辑:中财网 时间:2024/04/29 19:32:24
k-d树

一个三维k-d树。第一次划分(红色)把根节点(白色)划分成两个节点,然后它们分别再次被划分(绿色)为两个子节点。最后这四个子节点的每一个都被划分(蓝色)为两个子节点。至此已经不能再被划分,最后得到的八个节点称为叶子节点。
在计算机科学里,k-d树(k-维树的缩写)是在k维欧几里德空间组织点的数据结构。k-d树可以使用在多种应用场合,如多维键值搜索。k-d树是二叉树的一种特殊情况。
[编辑] 简介
k-d树是每个节点都为k维点的二叉树。所有非叶子节点可以视作用一个超平面把空间分割成两部分。在超平面左边的点代表节点的左子树,在超平面右边的点代表节点的右子树。超平面的方向可以用下述方法来选择:每个节点都与k维中垂直于超平面的那一维有关。因此,如果选择按照x轴划分,所有x值小于指定值的节点都会出现在左子树,所有x值大于指定值的节点都会出现在右子树。这样,超平面可以用该x值来确定,其法矢为x轴的单位向量。
[编辑] 外部链接
libkdtree++, an open-source STL-like implementation of k-d trees in C++.
A tutorial on KD Trees
A C++ implementation of k-d trees for 3D point clouds, part of theMobile Robot Programming Toolkit (MRPT)
kdtree A simple C library for working with KD-Trees
K-D Tree Demo, Java applet
libANN Approximate Nearest Neighbour Library includes a k-d tree implementation
Caltech Large Scale Image Search Toolbox: a Matlab toolbox implementing randomized k-d tree for fast approximate nearest neighbour search, in addition toLSH, Hierarchical K-Means, andInverted File search algorithms.
来自“http://zh.wikipedia.org/w/index.php?title=K-d%E6%A0%91&oldid=17605948”