k-d树

✍ dations ◷ 2025-10-21 18:38:29 #数据结构,树结构

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

相关

  • 电解质平衡紊乱电解质在生物体的自平衡维持上相当的重要。电解质可调节心臓及神经机能、输送氧气、维持体液平衡(英语:fluid balance)及酸碱平衡等。电解质的不平衡可能因为以下原因而产生:过
  • 乳化剂表面活性剂(又称界面活性剂)是能使目标溶液表面张力显著下降的物质,可降低两种液体或液体-固体间的表面张力。最典型的例子是肥皂,具分解、渗入的效果,应用广泛。表面活性剂一般
  • 语言起源语言的起源是一个有高度争议性的话题,由于可得到的实证证据的欠缺,许多人认为严肃的学者不应涉足于此问题。1866年,巴黎语言学会(法语:Société de linguistique de Paris)甚至明
  • 马卡鲁峰马卡鲁峰(英语:Makalu)位于中国与尼泊尔边境、珠穆朗玛峰东南约24千米,海拔8,485米,是世界第五高峰。
  • 斯特拉文斯基伊戈尔·费奥多罗维奇·斯特拉文斯基(俄语:Игорь Фёдорович Стравинский,1882年6月17日-1971年4月6日),又译斯特拉温斯基,俄国-法国-美国作曲家、钢琴家
  • 怪诞虫怪诞虫属(属名:Hallucigenia)生存于寒武纪,发现于加拿大伯吉斯页岩及云南澄江化石地。其名称“怪诞虫”缘由自其独特的外表与其光怪的发现历史:在怪诞虫最初被发表时,其上下前后均
  • 吉赛奇国家森林吉赛奇国家森林(英语:Kisatchie National Forest)是美国路易斯安那州唯一一座国家森林,位于七座县中松树林遍布的丘陵间,有着面积广阔的长叶松树林。
  • 宽颚狐蝠宽颚狐蝠(学名: 或 ),哺乳纲、翼手目、狐蝠科宽颚狐蝠属下的单属种,而与宽颚狐蝠同科的动物尚有短颚果蝠、黑冠果蝠、斑翅果蝠、豕果蝠等之数种哺乳动物。
  • 保罗·亚当斯保罗·亚当斯(1948年-)是一名新西兰的奥克兰市 East Coast Bays 地区的政界人士。亚当斯早年从事木工,和建材业。后来逐渐开始商业化,主要生产户外儿童娱乐建材。在此期间他又是
  • 鱼骨木属鱼骨木属(学名:)是茜草科下的一个属,为灌木或乔木植物。该属共有200种,分布于热带亚洲、非洲和大洋洲。