k-d树

✍ dations ◷ 2025-02-23 20:39:14 #数据结构,树结构

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

相关

  • 辐射进化适应辐射(英语:Adaptive Radiation)在进化生物学中指的是从原始的一般种类演变至多种多样、各自适应于独特生活方式的专门物种(不包括亚物种,就是说它们相互之间不能交配的物种)的
  • 香鸡排香鸡排,或称炸鸡排、鸡排,是台湾常见的一种小吃,为炸鸡的一种,通常的做法是先以酱料腌渍鸡胸肉入味,再以面包粉、面粉浆或地瓜粉裹覆鸡胸肉下锅油炸,起锅后再洒上胡椒盐而成,绝大多
  • 美国国防后勤局警察国防后勤局(DLA: Defense Logistics Agency)是美国国防部(DOD)的一个战斗保障局(CSA),是DOD军事后勤系统的功能集成单位,主要职责是向各军事部门(美国陆军、海军和空军)、战斗司令部,
  • 布宜诺斯艾利斯主教座堂布宜诺斯艾利斯都主教座堂(西班牙语:Catedral Metropolitana de Buenos Aires)是天主教布宜诺斯艾利斯总教区的中心,位于布宜诺斯艾利斯市中心的五月广场,圣马丁街和里瓦达维亚街
  • 邓肯·霍尔丹弗雷德里克·邓肯·迈克尔·霍尔丹,FRS(英语:Frederick Duncan Michael Haldane,1951年9月14日-),英裔美国物理学家,现任普林斯顿大学物理学系尤金·希金斯物理学教授。他因“在物质
  • 饿鬼饿鬼(梵语:प्रेत,;巴利语:Peta),又称祖父鬼(梵语:Pitṛ(英语:Pitrs),义为父辈、父系,和英文father同词源)或鬼,音译薜荔多、闭戾多、卑帝黎等,本自于印度固有的死后信仰,而又为佛教所加以
  • 巴哈伊历法巴哈伊历法是巴哈伊信仰的历法,又名巴迪历。它是一个平年包含365天,闰年包含366天的太阳历。每年包含19个月,而每月包含十九天,(这一共是361天),再加上额外的一段时间的"闰日" (
  • 非法入侵《非法入侵》(英语:)是一出2011年制作的美国惊悚、动作及犯罪电影。由奥斯卡金像奖影帝及影后尼古拉斯·凯奇及妮可·基德曼主演。导演则由曾执导《歌剧魅影》、《永远的蝙蝠侠
  • 夏尔·弗朗索瓦·迪穆里埃夏尔-弗朗索瓦·迪·佩里埃·迪穆里埃(法语:Charles-François du Périer Dumouriez;1739年1月25日-1823年3月14日)法兰西大革命战争期间的将军。1792年9月20日,他与弗朗索瓦·克
  • 弗尔迪·艾尔诺弗尔迪·艾尔诺(匈牙利语:Földi Ernő,?-),匈牙利男子乒乓球运动员。他曾获得1938年世界乒乓球锦标赛男子团体金牌。