k-d树

✍ dations ◷ 2025-06-30 14:40:16 #数据结构,树结构

在计算机科学里,-d树( k-维树的缩写)是在维欧几里德空间组织点的数据结构。-d树可以使用在多种应用场合,如多维键值搜索(例:范围搜寻及最邻近搜索)。-d树是空间二分树(Binary space partitioning)的一种特殊情况。

-d树是每个叶子节点都为k维点的二叉树。所有非叶子节点可以视作用一个超平面把空间分割成两个半空间。节点左边的子树代表在超平面左边的点,节点右边的子树代表在超平面右边的点。选择超平面的方法如下:每个节点都与k维中垂直于超平面的那一维有关。因此,如果选择按照x轴划分,所有x值小于指定值的节点都会出现在左子树,所有x值大于指定值的节点都会出现在右子树。这样,超平面可以用该x值来确定,其法线为x轴的单位向量。

有很多种方法可以选择轴垂直分割面( axis-aligned splitting planes ),所以有很多种创建-d树的方法。最典型的方法如下:

这个方法产生一个平衡的-d树。每个叶节点的高度都十分接近。然而,平衡的树不一定对每个应用都是最佳的。

function kdtree ( pointList,  depth){        var  axis := depth mod k;                select median by axis from pointList;                var  node;    node.location := median;    node.leftChild := kdtree(points in pointList before median, depth+1);    node.rightChild := kdtree(points in pointList after median, depth+1);    return node;}

插入元素

移除元素

平衡

在动态插入删除点且不允许预处理插入操作的情况下,一种平衡的方法是使用类似替罪羊树的方法重构整棵树。

最邻近搜索用来找出在树中与输入点最接近的点。

k-d树最邻近搜索的过程如下:


维数灾难让大部分的搜索算法在高纬情况下都显得花哨且不实用。 同样的,在高维空间中,k-d树也不能做很高效的最邻近搜索。一般的准则是:在k维情况下,数据点数目N应当远远大于 2 k {\displaystyle 2^{k}} 时,k-d树的最邻近搜索才可以很好的发挥其作用。不然的话,大部分的点都会被查询,最终算法效率也不会比全体查询一遍要好到哪里去。另外,如果只是需要一个足够快,且不必最优的结果,那么可以考虑使用近似邻近查询的方法。

相关

  • 拟卤素拟卤素或类卤素(pseudohalogen)是一种性质类似卤素的无机化合物,其通式为 XY,其中 X 可以是氰基 CN、氰氧基 OCN、硫氰基 SCN 等官能基,而 Y 可以是上述的物质或是卤素原子。如氰
  • 涡量涡量,也称为涡度,是一个流体力学的概念,用以描述流体的旋转情况。数学上,涡度 ζ {\displaystyle \zeta } 是描述速度场
  • 抗体亲和色谱法亲和色谱法(英语:Affinity chromatography,又称为亲和层析)是一种利用固定相的结合特性来分离分子的色谱方法。亲和色谱在凝胶过滤色谱柱上连接与待分离的物质有一定结合能力的
  • 异硫氰酸盐异硫氰酸酯(Isothiocyanate)是一类通式为R-N=C=S的有机化合物,可看作是由异氰酸酯中的氧原子被硫替换后形成。异硫氰酸盐是硫氰酸根(SCN−)用氮原子配位时生成的化合物(M-N=C=S)。
  • 欧洲合众国欧罗巴合众国或欧洲联邦共和国(英语:United States of Europe 或德语:Bundesrepublik Europa)是指由传统欧洲国家联合形成一个新的统一主权国家。这个国家的政治结构与美利坚合
  • 南昌县南昌县为中国江西省下辖县份,隶属南昌地级市管辖。南昌县为较具实力的县市之一,其综合竞争力2010年位居江西省各县(市)的首位,全国县域经济百强县(市)的第八十六位,2009年GDP总量255
  • 戴帽子的猫《帽子里的猫》(英语:The Cat in the Hat)是一本儿童文学,由Theodor Geisel 以笔名苏斯博士所撰写,并于1957年首次出版。故事集中在一个夸大且拟人化的猫,戴着穿插红色和白色条纹
  • 槟威大桥槟威大桥(又称槟城大桥;马来语:Jambatan Pulau Pinang)是位于马来西亚槟城州的跨海大桥,为槟城州的著名地标。这长达13.5公里的大桥连接槟城州的槟岛和对岸的威省(请见图),属于高速
  • 埃拉特港埃拉特港(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey
  • 迪克·米勒迪克·米勒(英语:Dick Miller,1928年12月25日-2019年1月30日),美国演员,原名理查德·米勒(英语:Richard Miller),生于美国加利福尼亚州洛杉矶,父母是俄罗斯犹太移民。曾出演《小精灵》、