KD树算法

这篇博客介绍了KD树算法,主要用于最近邻匹配。通过参考多个在线资源,包括HDU ACM问题、CSDN博客文章等,详细阐述了KD树的原理和使用方法。
摘要由CSDN通过智能技术生成

学习了KD树算法,用来进行最近邻匹配,其伪代码如下:

# KD树算法的伪代码

# 节点结构:
# node{
#     node_data   # 节点数据
#     node_left   # 左子树
#     node_right  # 右子树
#     node_parrent# 父节点
#     node_s      # 维度序号
# }

# 建立KD树:
# 输入:点集list
# 输出:KD树根节点
def build_tree(list):
    if list is None:
        return None
    # 计算所有点在每一维的方差并排序,从方差最大的维度vi维开始建树
    # 提取点集在vi维的中间点,该点为根节点tree_node
    for point in other_points:
        if point[vi] < tree_node[vi]:
            left_points.append(point)
        else:
            right_points.append(point)
    build_tree(left_points)
    # 设置点集 left_points 根节点的父节点为 tree_node
    build_tree(right_points)
    # 设置点集 right_points 根节点的父节点为 tree_node

# 查找最近邻:
# 输入:KD树根节点kd, 目标点target
# 输出:与 target 最近点 min_node, 最近距离 min_dis
def find_nn(kd, target):
    if kd is None:
        return 'kdTree is None'
    while kd is not None:       # 步骤1:二叉树搜索
     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值