kd树的根节点_kd树基本描述

kd 树的结构

kd树是一个二叉树结构,它的每一个节点记载了【特征坐标,切分轴,指向左枝的指针,指向右枝的指针】。

其中,特征坐标是线性空间\(R^n\)中的一个点\(x_1,x_2,…,x_n\)。

切分轴由一个整数\(r\)表示,这里\(1 \le r \le n \),是我们在 n 维空间中沿第 r 维进行一次分割。

节点的左枝和右枝分别都是 kd 树,并且满足:如果 y 是左枝的一个特征坐标,那么\(y_r \le x_r \)并且如果 z 是右枝的一个特征坐标,那么\(z_r \ge x_r \)。

给定一个数据样本集 \(S \subseteq R^n\)和切分轴 r , 以下递归算法将构建一个基于该数据集的 kd 树,每一次循环制作一个节点:

−− 如果 \(|S|=1\),记录 S 中唯一的一个点为当前节点的特征数据,并且不设左枝和右枝.\(|S|\) 指集合 S 中元素的数量)

−− 如果\(|S| >1\):

∙∙ 将 S 内所有点按照第 r 个坐标的大小进行排序;

∙∙ 选出该排列后的中位元素(如果一共有偶数个元素,则选择中位左边或右边的元素,左或右并无影响),作为当前节点的特征坐标,并且记录切分轴 r;

∙∙ 将 \(S_L\) 设为在 S 中所有排列在中位元素之前的元素; \(S_R\) 设为在 S 中所有排列在中位元素后的元素;

∙∙ 当前节点的左枝设为以 \(S_L\) 为数据集并且 r 为切分轴制作出的 kd 树;当前节点的右枝设为以 \(S_R\) 为数据集并且 r 为切分轴制作出的 kd 树。再设\(r\lef

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值