假的kd-tree小结
至今还不是很体会kd-tree这种东西,只不过体会了一种解决某些枚举问题的方法,就是当我们有一群元素,我们要到一个答案,答案在这些元素中的某个或某几个中,我们就会枚举他们,然而我们发现这样做十分低效,于是我们就想要优化这种做法,想到剪枝,然而在我们这种链结构的枚举下剪枝十分困难, 所以我们可以选择改变枚举结构,这时我们可以想到在dfs的过程中,在dfs树上对以子树为单位的元素进行的剪枝十分高效,于是我们为之建立树形结构,我们在树形结构上按照dfs序进行枚举实际上就相当于在dfs,那么我们就可以依据已有信息与子树信息进行剪枝,但是我们发现这样仍然不是很优秀,然后我们继续观察,发现如果能在一定程度上控制树的形态与各个元素在树上的位置,我们就会让我们的剪枝变得十分高效。
我并不确定kd-tree的思想是不是与我的相同,只是觉得我的想法可以在一定程度上解释kd-tree。
对于“控制树的形态与各个元素在树上的位置”这个操作,我觉得是可以在相当大的程度上借鉴kd-tree的,比如,其树形结构为二叉树,且是一棵平衡树,其各个元素在树上的位置,是通过在建树过程中不断用某一维中位数划分此维得到的。
对于“用某一维中位数划分此维”中到底是哪一维,在原本的kd-tree里,是比较极差或者方差来得到的,然而现在在oi中往往用更为实用且易于实现的各维轮流操作,我觉得这样在一定程度上有利于kd-tree实现插入操作,但这也是面对不同的情况做出的不同决策,应该对于不同的情况有着不同的处理,我觉得现在在我们面对oi中维数较少的情况,轮流操作还是十分好用的,但是当维数升高,高到我们进行轮流操作都不能轮完一轮或者比这还稍微好一些的时候轮流操作就会十分无用,这个时候极差与方差就会十分优秀。
对于原本二叉树的插入操作进行到一定程度后的不平衡的解决办法,在我经过一些做题的经验与思考后,发现利用替罪羊树拍扁重建的思想是一种优秀的策略。
我觉得kd-tree的各种方法在面对多维空间内的查询时是是十分有效的,但是当脱离多维空间的时候,我们也许就需要自己思考到底该做出怎样的改变。
关于对kd-tree与我以上所说的思想的体会与理解,我觉得我应该在以后的不断学习中继续,因为我还是有许多空洞的地方。
假的kd-tree小结的更多相关文章
- 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 ...
- k-d tree 学习笔记
以下是一些奇怪的链接有兴趣的可以看看: https://blog.sengxian.com/algorithms/k-dimensional-tree http://zgjkt.blog.uoj.ac ...
- 【BZOJ-2648&2716】SJY摆棋子&天使玩偶 KD Tree
2648: SJY摆棋子 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2459 Solved: 834[Submit][Status][Discu ...
- K-D Tree
这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...
- K-D Tree题目泛做(CXJ第二轮)
题目1: BZOJ 2716 题目大意:给出N个二维平面上的点,M个操作,分为插入一个新点和询问到一个点最近点的Manhatan距离是多少. 算法讨论: K-D Tree 裸题,有插入操作. #inc ...
- k-d Tree in TripAdvisor
Today, TripAdvisor held a tech talk in Columbia University. The topic is about k-d Tree implemented ...
- k-d tree算法
k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...
- k-d tree模板练习
1. [BZOJ]1941: [Sdoi2010]Hide and Seek 题目大意:给出n个二维平面上的点,一个点的权值是它到其他点的最长距离减最短距离,距离为曼哈顿距离,求最小权值.(n< ...
- [模板] K-D Tree
K-D Tree K-D Tree可以看作二叉搜索树的高维推广, 它的第 \(k\) 层以所有点的第 \(k\) 维作为关键字对点做出划分. 为了保证划分均匀, 可以以第 \(k\) 维排名在中间的节 ...
- BZOJ3489 A simple rmq problem K-D Tree
传送门 什么可持久化树套树才不会写呢,K-D Tree大法吼啊 对于第\(i\)个数,设其前面最后的与它值相同的位置为\(pre_i\),其后面最前的与它值相同的位置为\(aft_i\),那么对于一个 ...
随机推荐
- 微信小程序关于tabbar点击切换数据不刷新问题
微信小程序中经常遇到的需求就是我提交了一个表单或者进行了一个操作,需要在我的个人中心页面中实时显示出来,但是小程序中的tabbar切换类似于tab切换 并不会进行页面刷新请求 所以总是会造成一些数据更 ...
- 初识python 函数(定义,传参,返回值)
python基础(二): 菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍 函数: 定义一个函数: 你可以定义一个由自己想要功能的函数,以下是简单的规则: def fun(arg): pa ...
- 实验吧编程题python
网址:http://ctf5.shiyanbar.com/jia 之后第一步就是刷新一下网页,发现给的公式会变,(废话,要不直接算数不就行了...)但是格式不会变. 所以那就暴力一点好了,我们看一下这 ...
- node解析post表单信息
一共有4种解析方式 urlencoded.json.text .raw 发起请求的form表单中可以设置三种数据编码方式 application/x-www-form-urlencoded.multi ...
- Hbase数据IO
场景及方案分析 场景1:logs --> HBase logs -> flume -> hfile -> import -> HBase (实时) csv导入HBase ...
- 8.Mongodb备份与恢复
1.备份 语法 mongodump -h dbhost -d dbname -o dbdirectory -h:服务器地址,也可以指定端口号 -d:需要备份的数据库名称 -o:备份的数据存放位置,此目 ...
- jenkins使用Role Strategy管理用户权限
下载插件地址:https://wiki.jenkins.io/display/JENKINS/Role+Strategy+Plugin 1. 安装好插件后,进入jenkins系统管理的Configur ...
- 『AngularJS』Service
理解Angular 服务 什么是Angular Service Angular 服务是为web应用执行特定任务的单例对象或方法. 注:如果组件是为了内容呈现的功能复用,那么服务就是为组件进行功能复用. ...
- inline-block 空隙
IE8-9.Firefox.Safari 是4px Chrome下是8px 出现原因 标签换行引起 解决方案网上很多 但是在布局中尽量避免使用inline-block
- deepin linux 安装/启动jeakins报错:处理
ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin 安装报错: 1.如还未安装java,则安装 ...