至今还不是很体会kd-tree这种东西,只不过体会了一种解决某些枚举问题的方法,就是当我们有一群元素,我们要到一个答案,答案在这些元素中的某个或某几个中,我们就会枚举他们,然而我们发现这样做十分低效,于是我们就想要优化这种做法,想到剪枝,然而在我们这种链结构的枚举下剪枝十分困难, 所以我们可以选择改变枚举结构,这时我们可以想到在dfs的过程中,在dfs树上对以子树为单位的元素进行的剪枝十分高效,于是我们为之建立树形结构,我们在树形结构上按照dfs序进行枚举实际上就相当于在dfs,那么我们就可以依据已有信息与子树信息进行剪枝,但是我们发现这样仍然不是很优秀,然后我们继续观察,发现如果能在一定程度上控制树的形态与各个元素在树上的位置,我们就会让我们的剪枝变得十分高效。

  我并不确定kd-tree的思想是不是与我的相同,只是觉得我的想法可以在一定程度上解释kd-tree。

  对于“控制树的形态与各个元素在树上的位置”这个操作,我觉得是可以在相当大的程度上借鉴kd-tree的,比如,其树形结构为二叉树,且是一棵平衡树,其各个元素在树上的位置,是通过在建树过程中不断用某一维中位数划分此维得到的。

  对于“用某一维中位数划分此维”中到底是哪一维,在原本的kd-tree里,是比较极差或者方差来得到的,然而现在在oi中往往用更为实用且易于实现的各维轮流操作,我觉得这样在一定程度上有利于kd-tree实现插入操作,但这也是面对不同的情况做出的不同决策,应该对于不同的情况有着不同的处理,我觉得现在在我们面对oi中维数较少的情况,轮流操作还是十分好用的,但是当维数升高,高到我们进行轮流操作都不能轮完一轮或者比这还稍微好一些的时候轮流操作就会十分无用,这个时候极差与方差就会十分优秀。

  对于原本二叉树的插入操作进行到一定程度后的不平衡的解决办法,在我经过一些做题的经验与思考后,发现利用替罪羊树拍扁重建的思想是一种优秀的策略。

  我觉得kd-tree的各种方法在面对多维空间内的查询时是是十分有效的,但是当脱离多维空间的时候,我们也许就需要自己思考到底该做出怎样的改变。

  关于对kd-tree与我以上所说的思想的体会与理解,我觉得我应该在以后的不断学习中继续,因为我还是有许多空洞的地方。  

假的kd-tree小结的更多相关文章

  1. AOJ DSL_2_C Range Search (kD Tree)

    Range Search (kD Tree) The range search problem consists of a set of attributed records S to determi ...

  2. k-d tree 学习笔记

    以下是一些奇怪的链接有兴趣的可以看看: https://blog.sengxian.com/algorithms/k-dimensional-tree http://zgjkt.blog.uoj.ac ...

  3. 【BZOJ-2648&2716】SJY摆棋子&天使玩偶 KD Tree

    2648: SJY摆棋子 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2459  Solved: 834[Submit][Status][Discu ...

  4. K-D Tree

    这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...

  5. K-D Tree题目泛做(CXJ第二轮)

    题目1: BZOJ 2716 题目大意:给出N个二维平面上的点,M个操作,分为插入一个新点和询问到一个点最近点的Manhatan距离是多少. 算法讨论: K-D Tree 裸题,有插入操作. #inc ...

  6. k-d Tree in TripAdvisor

    Today, TripAdvisor held a tech talk in Columbia University. The topic is about k-d Tree implemented ...

  7. k-d tree算法

    k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...

  8. k-d tree模板练习

    1. [BZOJ]1941: [Sdoi2010]Hide and Seek 题目大意:给出n个二维平面上的点,一个点的权值是它到其他点的最长距离减最短距离,距离为曼哈顿距离,求最小权值.(n< ...

  9. [模板] K-D Tree

    K-D Tree K-D Tree可以看作二叉搜索树的高维推广, 它的第 \(k\) 层以所有点的第 \(k\) 维作为关键字对点做出划分. 为了保证划分均匀, 可以以第 \(k\) 维排名在中间的节 ...

  10. BZOJ3489 A simple rmq problem K-D Tree

    传送门 什么可持久化树套树才不会写呢,K-D Tree大法吼啊 对于第\(i\)个数,设其前面最后的与它值相同的位置为\(pre_i\),其后面最前的与它值相同的位置为\(aft_i\),那么对于一个 ...

随机推荐

  1. mac phpstorm 破解方法

    方法参考如下链接: 来源:http://www.cnblogs.com/zyliang/p/6148960.html

  2. ctf题目writeup(9)

    继续刷题,找到一个 什么 蓝鲸安全的ctf平台 地址:http://whalectf.xin/challenges (话说这些ctf平台长得好像) 1. 放到converter试一下: 在用十六进制转 ...

  3. 笔记-python-常见特殊变量

    笔记-python-常见特殊变量 类似__xx,以双下划线开头的实例变量名,就变成了一个私有变量(private),只有内部可以访问,外部不能访问: 类似__xx__,以双下划线开头,并且以双下划线结 ...

  4. WPF中的线程使用

    原文:WPF中的线程使用 简介 但凡涉及到图形界面,往往的设计都是不支持或者不推荐使用多个线程操作界面内容.而且通常会有一个专门的线程调度器来处理任务线程和界面线程的问题.下面提供两个两个方案. 使用 ...

  5. 关于 js 对象 转 字符串 和 深拷贝 的探讨

    随着更多语言的支持 **json** 作为数据传输和存储的媒体,已经非常成熟且应用广泛.却存在致命硬伤,不携带 **对象方法** .在数据传输和存储中,这是恰当的和合理的. 但是在更多的应用场景中,又 ...

  6. 2007: [Noi2010]海拔

    2007: [Noi2010]海拔 https://www.lydsy.com/JudgeOnline/problem.php?id=2007 分析: 平面图最小割. S在左下,T在右上,从S到T的一 ...

  7. LeetCode:26. Remove Duplicates from Sorted Array(Easy)

    1. 原题链接 https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/ 2. 题目要求 给定一个已 ...

  8. mysql 函数以及操作总结

    1. 拼接 concat(参数1,参数2,.. ,参数)  实现将多个字符串拼接到一起 要批量修改一个字段值   字段值又是复杂的sql 计算得来   通过查询字段值 和 修改的条件fundId(这是 ...

  9. Linux安装防火墙

    1.安装防火墙 1)yum install iptables(centos) 安装IPtables服务 yum install iptables-services 2)清楚规则iptables -F ...

  10. JVM运行内存分配和回收

    本文来自网易云社区 作者:吕宗胜 Java语言与C语言相比,最大的特点是编程人员无需过多的关心Java的内存分配和回收,因为所有这一切,Java的虚拟机都帮我们实现了.JVM的内存管理,大大降低了开发 ...