k-d树

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

相关

  • 台北荣总坐标:25°07′16″N 121°31′08″E / 25.12119°N 121.51892°E / 25.12119; 121.51892台北荣民总医院(简称台北荣总、北荣)(英语:Taipei Veterans General Hospital)是一家位于
  • 瓦伦蒂诺·罗西瓦伦铁诺·罗西 (意大利语:Valentino Rossi,1979年2月16日-),世界摩托车锦标赛车手,1979年2月16日出生于意大利塔武利亚,他的父亲格拉齐亚诺·罗西(Graziano Rossi)也曾是GP大奖赛
  • 分泌系统分泌(英语:Secretion)是物质,比如细胞、腺体分泌的化学物质,从一个点向另一点移动的过程。与之相对的是排泄作用,指的是从细胞或生命体中移除某些特定物质的过程。细胞分泌一般是
  • 荷兰联合王国荷兰联合王国或尼德兰联合王国(通称:荷兰、尼德兰;荷兰语:Verenigd Koninkrijk der Nederlanden、Nederland;法语:Royaume-Uni des Pays-Bas、Pays-Bas)是1815年到1830年(1839年)期间
  • 20012001年欧洲歌唱大赛为欧洲歌唱大赛之第46届之比赛,在2001年5月12日于丹麦哥本哈根举行,由来自爱沙尼亚的Tanel Padar、Dave Benton & 2XL联合获得冠军。其中,来自阿鲁巴的Dave
  • 社会主义行动社会主义行动(英语:Socialist Action)是美国的一个托洛茨基主义政党。该党现为第四国际同情组织。该党由一些托洛茨基主义者于1983年成立。他们由于对不断革命论、阶级独立论的
  • 弋部弋部,为汉字索引里为部首之一,康熙字典214个部首中的第五十六个(三划的则为第二十七个)。就繁体和简体中文中,弋部归于三划部首。弋部通常是从右上方为部字,且无其他部首可用者将
  • 查尔斯·西蒙尼查尔斯·西蒙尼(英语:Charles Simonyi,1948年9月10日-),生于匈牙利布达佩斯,原名西蒙尼·卡罗利(匈牙利语:Simonyi Károly),软件开发专家,曾任微软公司的产品开发主任。西蒙尼是微软的
  • Tobu (音乐制作人)汤姆斯·伯尔科夫斯基斯(拉脱维亚语:Toms Burkovskis,1992年9月10日-),绰号Tobu,拉脱维亚音乐制作人。Tobu在YouTube达到100万订阅(截于2019年6月7号)Burkovskis于11岁,初尝制作音乐
  • 龚立本龚立本,字渊孟,居冶塘大河(今大河村)。隆庆六年(1572年)出生,早年是县学诸生,知县杨涟以国士待之。万历四十三年(1615年),中举人,选任太平府教授。知崇德县。温体仁之子不法乡里,贩卖私盐