kd-tree

k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。K-D树是二进制空间分割树的特殊的情况。

kd-tree基本信息

外文名称 k-dimensional树 简称 kd-tree
属于 分割k维数据空间的数据结构 用于 多维空间关键数据的搜索

kd-tree构建算法

k-d树是一个二叉树,每个节点表示一个空间范围。表1给出的是k-d树每个节点中主要包含的数据结构。

表1 k-d树中每个节点的数据类型

域名

数据类型

描述

Node-data

数据矢量

数据集中某个数据点,是n维矢量(这里也就是k维)

Range

空间矢量

该节点所代表的空间范围

split

整数

垂直于分割超平面的方向轴序号

Left

k-d树

由位于该节点分割超平面左子空间内所有数据点所构成的k-d树

Right

k-d树

由位于该节点分割超平面右子空间内所有数据点所构成的k-d树

parent

k-d树

父节点

从上面对k-d树节点的数据类型的描述可以看出构建k-d树是一个逐级展开的递归过程。表2给出的是构建k-d树的伪码。

表2 构建k-d树的伪码

算法:构建k-d树(createKDTree)

输入:数据点集Data-set和其所在的空间Range

输出:Kd,类型为k-d tree

1.If Data-set为空,则返回空的k-d tree

2.调用节点生成程序:

(1)确定split域:对于所有描述子数据(特征矢量),统计它们在每个维上的数据方差。以SURF特征为例,描述子为64维,可计算64个方差。挑选出最大值,对应的维就是split域的值。数据方差大表明沿该坐标轴方向上的数据分散得比较开,在这个方向上进行数据分割有较好的分辨率;

(2)确定Node-data域:数据点集Data-set按其第split域的值排序。位于正中间的那个数据点被选为Node-data。此时新的Data-set' = Data-set\Node-data(除去其中Node-data这一点)。

3.dataleft = {d属于Data-set' && d[split] ≤ Node-data[split]}

Left_Range = {Range && dataleft} dataright = {d属于Data-set' && d[split] > Node-data[split]}

Right_Range = {Range && dataright}

4.left = 由(dataleft,Left_Range)建立的k-d tree,即递归调用createKDTree(dataleft,Left_

Range)。并设置left的parent域为Kd;

right = 由(dataright,Right_Range)建立的k-d tree,即调用createKDTree(dataright,Right_

Range)。并设置right的parent域为Kd。

以上述举的实例来看,过程如下:

由于此例简单,数据维度只有2维,所以可以简单地给x,y两个方向轴编号为0,1,也即split={0,1}。

(1)确定split域的首先该取的值。分别计算x,y方向上数据的方差得知x方向上的方差最大,所以split域值首先取0,也就是x轴方向;

(2)确定Node-data的域值。根据x轴方向的值2,5,9,4,8,7排序选出中值为7,所以Node-data = (7,2)。这样,该节点的分割超平面就是通过(7,2)并垂直于split = 0(x轴)的直线x = 7;

(3)确定左子空间和右子空间。分割超平面x = 7将整个空间分为两部分,如图2所示。x < = 7的部分为左子空间,包含3个节点{(2,3),(5,4),(4,7)};另一部分为右子空间,包含2个节点{(9,6),(8,1)}。

如算法所述,k-d树的构建是一个递归的过程。然后对左子空间和右子空间内的数据重复根节点的过程就可以得到下一级子节点(5,4)和(9,6)(也就是左右子空间的'根'节点),同时将空间和数据集进一步细分。如此反复直到空间中只包含一个数据点,如图1所示。最后生成的k-d树如图3所示。

kd-tree造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
带网扶手 KD-2901 查看价格 查看价格

13% 福建南安市科迪卫浴有限公司
扶手 KD-2902 查看价格 查看价格

13% 福建南安市科迪卫浴有限公司
内接式接口 KD50 KD65 查看价格 查看价格

13% 广西南宁赛福消防设备有限公司
菜盆软管 KD-401 80cm 查看价格 查看价格

13% 福建南安市科迪卫浴有限公司
电源线 kd75型号:kd75;绝缘材料:对绞铜丝编织屏蔽;额定电压(V):250;特点:内芯全铜 2×0.75铜芯粗细0.7平方; 查看价格 查看价格

凯聪

m 13% 上海凯聪电子科技有限公司
扶手 KD-2903A 30cm 查看价格 查看价格

13% 福建南安市科迪卫浴有限公司
太空铝扶手 KD-L2903B 40cm 查看价格 查看价格

13% 福建南安市科迪卫浴有限公司
绝缘配线槽 KD1L 查看价格 查看价格

台湾凯士士

13% 青岛金贝特国际贸易有限公司
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
暂无数据
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
货梯KD6#/KD7# 详附件|1台 3 查看价格 日立电梯(中国)有限公司深圳分公司 全国   2021-01-18
货梯KD5#/KD8# 详附件|1台 3 查看价格 日立电梯(中国)有限公司深圳分公司 全国   2021-01-18
KD 厚度0.5|1m² 1 查看价格 天津市恒信鑫钢材销售有限公司 天津  天津市 2013-05-20
树形秋千TREE-SHAPEDSWING 1、尺寸:大约5000长Size2、材质:工程塑料 PEMaterial|1套 3 查看价格 广州奇乐游乐设备有限公司 广东   2020-07-09
KD罩面涂料 18L|9544桶 1 查看价格 亚士漆(上海)有限公司广州办事处 广东  广州市 2015-08-25
KD直纹木门 1000×2200|50m² 3 查看价格 佛山市南海沐森木业有限公司 全国   2022-05-09
KD涂装木皮板 (2440×1220×3)mm|1m² 1 查看价格 东莞市奥卓木业有限公司 广东   2022-07-25
KD9816应方块地毯 500X500X5|3718m² 1 查看价格 常州市彬彬机房设备安装有限公司 江苏  常州市 2015-11-19

kd-tree查找算法

在k-d树中进行数据的查找也是特征匹配的重要环节,其目的是检索在k-d树中与查询点距离最近的数据点。这里先以一个简单的实例来描述最邻近查找的基本思路。

星号表示要查询的点(2.1,3.1)。通过二叉搜索,顺着搜索路径很快就能找到最邻近的近似点,也就是叶子节点(2,3)。而找到的叶子节点并不一定就是最邻近的,最邻近肯定距离查询点更近,应该位于以查询点为圆心且通过叶子节点的圆域内。为了找到真正的最近邻,还需要进行'回溯'操作:算法沿搜索路径反向查找是否有距离查询点更近的数据点。此例中先从(7,2)点开始进行二叉查找,然后到达(5,4),最后到达(2,3),此时搜索路径中的节点为<(7,2),(5,4),(2,3)>,首先以(2,3)作为当前最近邻点,计算其到查询点(2.1,3.1)的距离为0.1414,然后回溯到其父节点(5,4),并判断在该父节点的其他子节点空间中是否有距离查询点更近的数据点。以(2.1,3.1)为圆心,以0.1414为半径画圆,如图4所示。发现该圆并不和超平面y = 4交割,因此不用进入(5,4)节点右子空间中去搜索。

再回溯到(7,2),以(2.1,3.1)为圆心,以0.1414为半径的圆更不会与x = 7超平面交割,因此不用进入(7,2)右子空间进行查找。至此,搜索路径中的节点已经全部回溯完,结束整个搜索,返回最近邻点(2,3),最近距离为0.1414。

一个复杂点了例子如查找点为(2,4.5)。同样先进行二叉查找,先从(7,2)查找到(5,4)节点,在进行查找时是由y = 4为分割超平面的,由于查找点为y值为4.5,因此进入右子空间查找到(4,7),形成搜索路径<(7,2),(5,4),(4,7)>,取(4,7)为当前最近邻点,计算其与目标查找点的距离为3.202。然后回溯到(5,4),计算其与查找点之间的距离为3.041。以(2,4.5)为圆心,以3.041为半径作圆,如图5所示。可见该圆和y = 4超平面交割,所以需要进入(5,4)左子空间进行查找。此时需将(2,3)节点加入搜索路径中得<(7,2),(2,3)>。回溯至(2,3)叶子节点,(2,3)距离(2,4.5)比(5,4)要近,所以最近邻点更新为(2,3),最近距离更新为1.5。回溯至(7,2),以(2,4.5)为圆心1.5为半径作圆,并不和x = 7分割超平面交割,如图6所示。至此,搜索路径回溯完。返回最近邻点(2,3),最近距离1.5。k-d树查询算法的伪代码如下所示。

kd-tree实例

先以一个简单直观的实例来介绍k-d树算法。假设有6个二维数据点{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点位于二维空间内(如图1中黑点所示)。k-d树算法就是要确定图1中这些分割空间的分割线(多维空间即为分割平面,一般为超平面)。下面就要通过一步步展示k-d树是如何确定这些分割线的。

k-d树算法可以分为两大部分,一部分是有关k-d树本身这种数据结构建立的算法,另一部分是在建立的k-d树上如何进行最邻近查找的算法。

kd-tree常见问题

  • KD

    你好:这是空调管道的孔洞,用墙洞口定义布置,蓝色那条长虚线表示空调管道。

  • kd板是什么

    KD板是由 实木薄皮+夹板 制成的,是一种涂装木皮板,这个名字源自台湾科定。表面的实木贴皮给予非常逼真的实木触感和观感,很有档次感。与生态板不同就是表面用的是实木皮,厚度在3.6mm,价格¥200~¥...

  • 黄瓜胶韩国phyto tree黄瓜胶多少钱

    韩国“phyto tree黄瓜胶”最近很火热,最让人爱不释手的地方在于其有着强大的美白补水修复功能。空气的粉尘、大气中的紫外线、化妆品残留等这些无一不在伤害我们的肌肤。您可以找韩国代购买,价格都在30...

kd-tree文献

钨钢KD20 钨钢KD20

格式:pdf

大小:7KB

页数: 2页

评分: 4.5

日本 KD20 钨钢化学成分, KD20 钨钢板、 KD20 钨钢硬度, KD20 钨钢价格 KD20 钨钢的性能 : 具有较好的韧性和相适的耐磨性,主要用于线材,棒材加工用的拉制模。同 时也适合铸铁,有色金属及其合金与非金属材料不平整表面和间断切削时的粗 车,精刨精铣,一般孔和深孔的钻孔,扩孔及制作木工等 。 硬度 :91.5 抗折力 :2990 引伸力 :580 压缩强度 :5400 耐冲击强度 :29 KD20 钨钢的用途: 具有良好的韧性和耐磨性 ,用线材和管拉模零件冲压凹模, 电机定转子, EI钢片,LED线架冲压. KD20 钨钢的特点: 1、模具寿命的延长(疲劳强度高,不容易产生应力集中) 2、寿命稳定性好(裂纹的发生及扩展时间延迟 3、粘附,啃伤大幅度减少(润滑剂产生的腐蚀极其轻微) 4、线切割电火花加工过程中的耐腐蚀性大大改良(抗电加工腐蚀能

立即下载
KD型多用户电表 KD型多用户电表

格式:pdf

大小:7KB

页数: 16页

评分: 4.5

目录 1.概述 ........................................................................................................................................ 3 2.产品种类 ................................................................................................................................ 3 2.1 KD-BASA1(预付费智能安全用电控制型)多用户电表 ............................................. 3 2.11 主要技术特点 .....................

立即下载
kd-tree相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏