k-d树

✍ dations ◷ 2025-12-04 19:41:01 #数据结构,树结构

在计算机科学里,-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树的最邻近搜索才可以很好的发挥其作用。不然的话,大部分的点都会被查询,最终算法效率也不会比全体查询一遍要好到哪里去。另外,如果只是需要一个足够快,且不必最优的结果,那么可以考虑使用近似邻近查询的方法。

相关

  • 性伙伴性伙伴(英:friend with benefit),或称为床伴(亦作床友,英:pillow friend)、砲友(或炮友,英:fuck buddy),指非恋爱、婚姻、性交易,但具有性关系的朋友,其目的主要为双方解决性欲,并不一定寻求
  • 日耳曼人路易日耳曼人路易,又称德意志人路德维希(德语:Ludwig der Deutsche,806年-876年8月28日), 巴伐利亚公爵 (818年—855年) 和东法兰克国王 (840年—855年),是皇帝虔诚者路易和他的妻子——
  • 联邦属地中央直辖区(英语:Union territory;或作“联邦属地”、“联邦直辖区”)是印度直属中央政府管辖的一级行政区划单位。在印度,“中央直辖区”和“邦”的主要区别在于“邦”有自己的
  • 摩卡咖啡摩卡咖啡(英语:Café Mocha,意大利语:Mocaccino,又名莫加或者摩卡)是意式拿铁咖啡的变种。和经典的意式拿铁咖啡一样,它通常是由三分之一的意式浓缩咖啡和三分之二的奶沫配成,不过它
  • 核连锁反应核链式反应(英文:Nuclear chain reaction),又称链式反应,是当发生一个核反应,两个或以上的周边核反应被触动,从而带动其他核反应以指数形式增长。1933年由核物理学家利奥·西拉德构
  • 伊斯兰社会主义伊斯兰社会主义是由一些穆斯林领袖以满足社会主义更多的精神需求,在调和伊斯兰教义与社会主义思想的基础上而创造的一种思潮。穆斯林中的社会主义者认为,《古兰经》和“穆罕默
  • ATC代码 (QJ54)A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATCvet代码QJ54(用于乳房内的抗分支杆菌药)是兽用解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整
  • 中世纪西班牙语古西班牙语,也称为古卡斯蒂利亚语(西班牙语: )或者中世纪西班牙语(西班牙语:español medieval),是西班牙语的一种早期形式,使用地区为伊比利亚半岛,使用时间大致为10世纪至15世纪初
  • 贞松院贞松院是日本的名号,可以是指:
  • 栗栖雪奈栗栖雪奈(日语:栗栖 ゆきな,1977年11月10日-),日本女性前演员、艺人。出身于东京都。AB型血。东京都立永山高等学校(日语:東京都立永山高等学校)毕业。1990年代前半加入当时新成立的