入门,学习KdTree:
今天因为要看一些代码,所以自己从网上搜了下kdtree得相关内容,今天介绍一下啥是kdtree。
首先,这是一种分割k维数据空间的数据结构,目的是能够快速查找某个数据,是一种带有约束得二分查找树,能起到一种加速作用。首先插上这张图,一张我看了n多博客都用的经典图:
此图借鉴于右下角得博客,侵权即删。
在此处用最简单得二维数据来介绍,其余同。
假设有6个二维数据点{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点 位于二维空间内(如图1中黑点所示)。k-d树算法就是要确定图1中这些分割空间的分割线(多维空间即为分割平面,一般为超平面)。
由于此例简单,数据维度只有2维,所以可以简单地给x,y两个方向轴编号为0,1,也即split={0,1}。
(1)确定split域的首先该取的值。分别计算x,y方向上数据的方差得知x方向上的方差最大,所以split域值首先取0,也就是x轴方向;
(2)确定Node-data的域值。根据x轴方向的值2,5,9,4,8,7排序选出中值为7,所以此点得数据值为(7,2