K-D树用来找给定点在一堆点中的最近点。

二叉搜索树,对一维空间进行切分
kd树对可以多维空间进行切分,二维举例,就是对二位空间进行切分,对平面切分

构建
建立树的目的为了减少搜索时间,最完美树两端平衡,这样搜索logn时间复杂度,所以怎么切很重要。
一维空间只有一根x轴,二维有xy两根轴,所以要选哪个轴进行切分?
分别对x 和y 算方差,哪个的方差大说明这个方向点稀疏,切分的平面越大,搜索步数越少,越快。
当然算方差比较费劲,随便整个简单无脑的,xy交替,效果交给上帝,类似快速排序。
切分点就直接取中间值的点。
切分点作为父节点。
切分轴左边的点归为左子树管。
切分轴右边的点归为右子树管。
递归到没点可切,或者只有自个。

搜索
从父节点出发,按照切分逻辑,找到自己所属的片区,计算自己与片区管理员的距离记作最小距离。
往上回溯,看看自己与其他片区的距离是不是比之前最小距离要小,如果小说明其他片区也许有更小距离的点存在,继续递归。
如果要大,则说明现在的最小距离已经是全局最小距离,算法停止。

插入与删除
插入与删除逻辑认为是子树的构建。但是没有类似红黑树的红黑属性,进行旋转,调整树的高度,可能造成整个树慢慢失衡。

如果要找k个最近点,就类似于算法题,找数组中最大k个数一样,搞个堆或者数组。记录搜索时候,距离最小的点。

k-dimensional tree相关推荐

  1. KD tree (K dimensional tree)多维空间搜索 近邻

    kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索).

  2. ICPC 南昌现场赛 K:Tree(dsu on tree + 动态开点线段树)

    Tree 让我们找满足一下五个条件的(x,y(x, y(x,y)点对有多少: x≠yx \neq yx​=y xxx不是yyy的祖先 yyy不是xxx的祖先 dis(x,y)≤kdis(x, y)\ ...

  3. K-D Tree 算法详解及Python实现

    K-D Tree 算法 k−d treek−dtree\mathrm{k-d\ tree}即k−dimensional treek−dimensionaltree\mathrm{k-dimension ...

  4. poj 2985(并查集+线段树求K大数)

    解题思路:这道题并查集很容易,合并时找到父节点就直接加上去就ok了.关键是如何求K大数,我一直在想用线段树怎么写,一开始想如果直接记录数的大小那肯定是没戏了,借鉴了一下别人的思路:区间[a,b]记录的 ...

  5. 2021牛客多校4 - Tree Xor(线段树+异或区间拆分)

    题目链接:点击查看 题目大意:给出一棵 nnn 个点组成的树,每个点权的取值范围是 [li,ri][l_i,r_i][li​,ri​],每条边权代表的是两点的异或值,现在问这棵树有多少种有效赋值 题目 ...

  6. 中石油训练赛 - Russian Dolls on the Christmas Tree(树上启发式合并/主席树)

    题目链接:点击查看 题目大意:给出一棵 n 个节点的树,以点 1 为根,现在对于每个节点作为根的子树求解:子树中有多少个编号不相交的连续子段,如:1 2 4 5 7,共有三个连续的段,分别为 [ 1 ...

  7. 山东理工大学第十二届ACM程序设计竞赛 - Cut the tree(树上启发式合并+线段树)

    题目链接:点击查看 题目大意:给一个具有 N 个节点的有根树,以 1 号节点为根,节点编号从 1 开始,点有点权.树的第 H 层权值为深度为 H 的所有点的点权之和.树的总权值为所有层权值的最大值.问 ...

  8. CodeForces - 343D Water Tree(树链剖分+线段树)

    题目链接: 题目大意:给出一棵由n个点组成的树,初始时每个点的权值为0,接下来有m个操作,每个操作分为以下三种: 1 x:将包括节点x在内的所有子孙节点的权值都改为1 2 x:将包括节点x在内的所有父 ...

  9. SPOJ - QTREE Query on a tree(树链剖分+线段树)

    题目链接:点击查看 题目大意:给出一棵由n个点组成的树,再给出数个操作,每次操作分为下列几种类型: QUERY x y:询问点x-点y这条路径上的所有边权的最大值 CHANGE x y:将第x条边的权 ...

  10. 计蒜客 - Distance on the tree(树链剖分+离线处理+线段树)

    题目链接:点击查看 题目大意:给出一颗含有n个节点的树,每条边都有权值,现在给出m个询问,每次询问的格式为u,v,w,我们需要求出在路径u-v上,边权小于等于w的边的个数 题目分析:因为一开始不会主席 ...

最新文章

  1. weex 阶段总结
  2. bootstrap signin将邮件改成用户名_[源码和文档分享]基于VC++和Oracle数据库的邮件管理系统的设计与实现...
  3. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
  4. Win7命令行局域网发消息图解
  5. python3解析json数据_Python3高级教程
  6. python人脸实时检测_openCV+python实现人脸实时检测
  7. 2021百万年薪AI职位趋势:数据科学、Python、自动驾驶、AIOps你关注了么?
  8. 天猫双11第一波今晚开启 预计2天内1亿人收到货
  9. 50道编程小题目之【反弹的球】
  10. linux 常见问题集 q,Linux新手几个常见问题集
  11. Spring Boot: 加密应用配置文件敏感信息
  12. 中国IT实验室--Visual C++编程电子书专题下载
  13. web界面配置视频 华为ac_华为无线ac配置教程
  14. 陕西2020行政区划调整_陕西省最新行政区划,厉害了大陕西
  15. SDPT3 4.0版:半正定二次线性规划的MATLAB软件包
  16. AuthorizingRealm中的两大方法
  17. fn键台式计算机在哪,fn键在哪?小鱼教您fn键使用方法
  18. 一个敷衍的开头。。。
  19. 电脑上可贴至桌面显示的便签软件
  20. 点云深度学习:多一维看世界【VALSE Webinar】Panel实录

热门文章

  1. Jvm-Sandbox原理分析-Sandbox的启动-01
  2. **挖金子小游戏外挂开发教程**
  3. FTP的协议分析实验
  4. 个人简历项目——需求分析
  5. 微信公众平台开发费用其实并不高 及微信公众平台开发简单教程
  6. 手机在线评分系统已成主流,逐步替代电子评分器
  7. 【UPCOJ】问题 U: 打酱油
  8. Java课程实验报告实验六——异常处理
  9. core2 duo I3 I5 I7什么意思
  10. 《白话深度学习与Tensorflow》学习笔记(7)RBM限制玻尔兹曼机