假的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\),那么对于一个 ...
随机推荐
- 响应式布局--设置rem自适应
//designWidth:设计稿的实际宽度值,需要根据实际设置 //maxWidth:制作稿的最大宽度值,需要根据实际设置 //这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作 ...
- 最简单的bootloader的编写
目标:写出bootloader的第一阶段代码和第二阶段代码,并测试. 最简单的bootloader的编写步骤: 1. 初始化硬件:关看门狗.设置时钟.设置SDRAM.初始化NAND FLASH2. 如 ...
- Leecode刷题之旅-C语言/python-101对称二叉树
/* * @lc app=leetcode.cn id=101 lang=c * * [101] 对称二叉树 * * https://leetcode-cn.com/problems/symmetri ...
- js获取浏览器内容宽高(小计)
<SCRIPT LANGUAGE="JavaScript">var s = "";s += "\r\n网页可见区域宽:"+ d ...
- 10 TCP 传输控制协议 UDP区别
1.tcp和udp区别 2.TCP通信模型 生活中的电话机 如果想让别人能更够打通咱们的电话获取相应服务的话,需要做一下几件事情: 买个手机 插上手机卡 设计手机为正常接听状态(即能够响铃) 静静的等 ...
- React实现最完整的百度搜索框
import React,{Component} from 'react' import ReactDOM,{render} from 'react-dom' import 'bootstrap/di ...
- C#获取网络图片
简单获取图片 string url = zhi_txt.Text;//图片地址 string dizhi = lujing.Text;//图片下载后保存路径及图片名称要写在一块 WebClient w ...
- 从一个线上服务器警告谈谈backlog
缘起 双十一如期而至,此时的我因为在处理客户的一个问题已经陷入了忙碌.突然,不断接到驻场实施发来的反馈,都是相同的反馈--"客户端操作缓慢". 我现在负责的服务器是一台接口服务器, ...
- ubuntu下安装redis及在php中使用
一.安装redis sudo apt-get install redis-server 安装完成后,Redis服务器会自动启动,我们可以通过下面的命令行检查一下: # redis-cli > p ...
- Eclipse中JS文件红叉处理
使用新版本的Eclipse 或者 MyEclipse,项目中的 JS文件出现红叉,让人觉得项目中存在错误代码,给人的感觉很不爽. 记录一下去掉红叉的方法: 第1步: 打开工作空间中的项目找到项目的 . ...