k-d树

✍ dations ◷ 2024-12-22 22:00:00 #数据结构,树结构

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

相关

  • 胞间连丝胞间连丝(英语:Plasmodesmata)为植物细胞和部分藻类细胞壁间贯穿细胞壁的特有孔道,可以让相邻细胞的细胞质相互流通。有微小孔道,为细胞间物质运输与信息传递的重要通道,通道中有
  • 去氧羟四环素-5,10,11,12a-tetrahydroxy-6-methyl- 4a,5,5a,6-tetrahydro-4H-tetracene-1,3,12-trione多西环素(其国际非专利药品名称为“Doxycycline”)也称为“强力霉素”“伟霸霉素”
  • 46Brodmann 46区(简称BA46)是大脑皮质的额叶的一个细胞结构分区。BA46在后侧毗邻Brodmann 45区,在前侧毗邻Brodmann 10区。它的背侧与Brodmann 9区相邻。在人类,其位置大约包括额
  • 姊(姐),通常在口语中多称为姊姊、姐姐或家姐,中国古代又称女兄。一般来说是用来称呼比自己年长、而又是同一父亲或母亲所生的女性。有时也有用作较自己年长的女性朋友的称呼,或用
  • 环辛烷环辛烷(化学式:C8H16)是八个碳的环烷烃。无色液体或潮湿的白色固体。有类似樟脑的气味。难溶于水,易溶于乙醇、乙醚、苯等有机溶剂。易燃。Hendrickson认为环辛烷分子存在多个能
  • 博他仑府 small(高头廊府)/small博他仑府(泰语:จังหวัดพัทลุง,皇家转写:Changwat Phatthalung,泰语发音:)是泰国南部其中的一个府。她的邻近府份(北起按顺时针序)为:那空是贪玛叻府、宋卡府、沙敦府、董
  • 色情书刊色情书刊是具有色情娱乐要素的书籍总称,俗称小本,包括成人写真集、色情小说、成人漫画等。色情书刊起源很早,春宫图可以追溯至汉朝。日本为了申请2020年奥运主办权,于2012年公布
  • 波斯体波斯体字体或波斯悬体(波斯语:نستعلیق‬‎、拉丁转写:nastaʿlīq、音译纳斯赫·泰阿利格或纳斯塔里格、意思是“悬体”)是书写波斯—阿拉伯文字的一种字体。14-15世纪间
  • 曼特宁语曼特宁语 (曼特宁语: Hata Mandailing) 或称作巴塔克曼特宁语 (Batak Mandailing)是南岛语系的语言,在印尼苏门答腊岛北部 。主要使用地区由特宁纳塔尔摄政,北巴东老越摄政,巴东老
  • 维克多·贾博维克多·贾博(英语:Victor Garber,1949年3月16日-)是一名加拿大电影、电视及舞台演员,最为著名的角色有在《泰坦尼克号》中扮演泰坦尼克号总设计师托马斯·安德鲁斯(Thomas Andrews