定义

KD树(KDT , k-Dimension Tree) 是一种可以高效处理K维空间信息的数据结构。KD树具有二叉搜索树的形态,二叉搜索树上的每个结点都对应K维空间内的一个点[1]

相对二叉树而言,二叉树是针对输入数组是一维的情况,如果将一维数组推广到K维情况,那么久得到了KD树。

举例

以二维数组进行举例[2]

数组B=[[6, 2], [6, 3], [3, 5], [5, 0], [1, 2], [4, 9], [8, 1]],对于元素x,我们要找到数组B中距离x最近的元素,令x =  [1, 1]

KD树的建立:

1、首先找到变化较大的那个维度,由于std(B) = [2.11, 2.79],所以选择维度2;

2、对于维度2上的数组进行排序,得到[0, 1, 2, 2, 3, 5, 9],中位数是2,选择[6,2]作为根节点;

3、对于[6,2]左右两侧的节点再分别执行操作1操作2和操作3,直到树完成建立。

图 1 建立得到的KD数

KD树的查找:

1、从根节点[6,2]开始,计算x和根节点之间的距离L1;

2、根据x在维度2中是否小于或大于当前节点,向左或向右移动;

3、计算x和[8,1]之间的距离L2,比较L2和L1的距离,记录最优Lmin;

4、计算x和[5,0]之间的距离L3,比较L3和Lmin的距离,记录最优Lmin;

5、计算x和[1,2]之间的距离L4,比较L3和Lmin的距离,记录最优Lmin。

Lmin对应的那个节点就是x最接近的元素。

参考文献

[1] https://oi-wiki.org/ds/kdt/
[2] https://zhuanlan.zhihu.com/p/45346117

作          者: 泮桥成像光电商城

出          处: https://www.ipanqiao.com/entry/105

版          权:本文版权归泮桥成像光电商城所有

免责声明:本文中使用的部分文字内容与图片来自于网络,如有侵权,请联系作者进行删除。

转          载:欢迎转载,但必须保留上述声明;必须在文章中给出原文链接;否则必究法律责任。

Copyright © 2019-2022 南京超维景生物科技有限公司 版权所有 www.ipanqiao.com苏ICP备20009590号-1
联系我们
立即做合同
微信客服
电话咨询

400-998-9826

17302548620

快速留言

泮桥成像光电商城专业人员会在24小时之内联系您

关闭 提交