k-d树

✍ dations ◷ 2025-07-03 12:55:12 #数据结构,树结构

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

相关

  • 甲状会厌肌甲状会厌肌(thyroepiglottic muscle)相当数量的甲杓肌的肌纤维被延长到杓状会厌襞;其中有些遗失,而其他的则继续延伸到会厌的边缘。甲状会厌肌有不同的英文名称:thyroepiglotticu
  • 繁殖季节繁殖季节是最适宜野生动物和鸟类进行繁殖的季节,往往有着良好的繁殖条件及充足的食物和水。繁殖季节对于野生动物和鸟类而言,最有可能实现成功繁殖。由于不同的野生动物和鸟类
  • 1934年1934年国际足联世界杯,于1934年5月27日至6月10日在意大利举行。本次比赛首次采用预选赛来决定决赛阶段参赛队伍。本届比赛的参赛国家比首届增加了一倍多,其中有 10 支球队来自
  • 阿尔伯塔阿尔伯塔省(英语、法语:Alberta),简称艾省、亚省、阿省,是加拿大的一个省。阿尔伯塔是加拿大西部草原三省之一,西部与不列颠哥伦比亚相邻,东部与萨斯喀彻温相邻,北部与西北地区相邻,
  • 风阻阻力系数(常表示为 C d
  • 甚大望远镜甚大望远镜(Very Large Telescope,缩写为VLT,或译超大型望远镜、特大望远镜)为欧洲南方天文台在智利建造的大型光学望远镜,由4台相同的8.2米口径望远镜组成,组合的等效口径可达16
  • 马克思兄弟马克思兄弟(英文:Marx Brothers)是一队知名美国喜剧演员。他们五人都是亲生兄弟,常在歌舞集耍、舞台剧、电视、电影演出。他们在美国电影学会评选的百年最伟大男演员中排第20名
  • 生活 (杂志)《生活》()是一本在美国发行的老牌周刊杂志,可说是在美国家喻户晓,地位与《时代》()相差不远。其前身是1883年在纽约市曼哈顿发行的幽默周刊,发行社就叫做生活出版社(Life Publishin
  • 半闭前不圆唇元音半闭前不圆唇元音是母音的一种,用于一些语言当中,国际音标以⟨e⟩代表此音,而X-SAMPA音标也以⟨e⟩代表此音。另外,在许多语言当中,如日语、朝鲜语、西班牙语等,则有中前不圆唇元
  • 陶顿战役坐标:53°50′10″N 01°16′25″W / 53.83611°N 1.27361°W / 53.83611; -1.27361陶顿战役爆发于1461年3月29日(棕枝主日),在约克郡的陶顿(英语:Towton, North Yorkshire)附近,