Algorithms-3.3补充 Geometric Applications of BSTs 二叉树的几何应用
Geometric Applications of BSTs
- 1 1d range search 一维区间搜索
- 2 line segment intersection 线段交点几何问题
- 3 kd trees
- 3.1 2d正交范围搜索
- 3.3.1 网格分割法
- 3.3.2 递归分割法
- 3.2 nearest neighbor search
- 4 interval search trees 区间搜索树
- 4.1 1d区间搜索
- 4.1.1 插入
- 4.1.2 search
- 5 rectangle intersection
1 1d range search 一维区间搜索
//Returns the number of keys in the symbol table in the given range,两个边界也取进去public int size(Key lo, Key hi){if (contains(hi)) return rank(hi) - rank(lo) + 1;else return rank(hi) - rank(lo);//lo这边的rank始终一样}//Does this symbol table contain the given key?public boolean contains(Key key) {if (key == null) throw new IllegalArgumentException("argument to contains() is null");return get(key) != null;}public int rank(Key key){return rank(key, root);}private int rank(Key key, Node x){//返回以x为根结点的子树中小于x.key的键的数量if (x == null) return 0;int cmp = key.compareTo(x.key);if (cmp < 0) return rank(key, x.left);//若key小于根结点,返回key在左子树的排名(递归)else if (cmp > 0) return 1 + size(x.left) + rank(key, x.right);else return size(x.left);//如果key和根结点的key相等,rank就是左边子树的结点总数}
2 line segment intersection 线段交点几何问题
- 扫描线算法
3 kd trees
3.1 2d正交范围搜索
3.3.1 网格分割法
- 选择根号N为M的大小(小正方形边长),可以保证时间不变
- 因此,针对有些数据不随机的情况,grid implementation并不合适
3.3.2 递归分割法
- 下在左,上在右
- 单数用垂线,双数key用水平线
- 如果一条线穿过区域,则左右子树都要遍历,先遍历一边,结束,再另一边
- R是所有要返回的包含在区域内的点
3.2 nearest neighbor search
- 寻找一点周围最近的点
- query point在一点左边,因此先遍历左子树(右子树稍后也要遍历)
- 如果在左子树中,找到距离更小的点,把这个点设为新的champion,且不再遍历右子树,因为比query point到1点所在垂线的垂直距离短
- 上下同理
4 interval search trees 区间搜索树
4.1 1d区间搜索
4.1.1 插入
4.1.2 search
- 此处max endpoint被用上
Node x = root;
while (x != null){if (x.interval.intersects(lo,hi)) return x.interval;else if (x.left = null) x = x.right;else if (x.left.max < lo) x = x.right;else x = x.left;
}
return null;
- 源码见algs4 --> Interval1D
5 rectangle intersection
Algorithms-3.3补充 Geometric Applications of BSTs 二叉树的几何应用相关推荐
- 值得一看的网络课程推荐(不限于计算机科学)
前言:搜罗来一些不错的网络课程,比如Coursera, edX, Udacity上 一.计算机类 算法类首推Coursera上普林斯顿大学的Robert Sedgewick,能把复杂的算法(典型例子: ...
- 一些我推荐的和想上的网络课程(Coursera, edX, Udacity,MIT OCW)
转载自 http://blog.csdn.net/fightforyourdream/article/details/21314929 感觉是很好的CS 网上公开课总结,在终身学习时代,好好利用网络学 ...
- 元启发式算法的参数微调方法(tuners for meta-heuristic algorithms)
目录 1. CRS-Tuning 2. F-Race 3. REVAC Reference 元启发式算法的tuners方法主要有CRS-Tuning, F-Race, REVAC等.下面,分别附上每一 ...
- 2012, PPSN,Geometric Semantic Genetic Programming,GSGP
Abstract 摘要 问题: 传统的遗传程序设计 (Genetic Programming,GP) 通过使用操纵语法表示的搜索算子来搜索函数/程序的空间,而不考虑它们的实际语义/行为.最近,语义感知 ...
- ECCV2022论文列表(中英对照)
Paper ID Paper Title 论文标题 8 Learning Uncoupled-Modulation CVAE for 3D Action-Conditioned Human Motio ...
- 度量学习 流形学习_流形学习2
度量学习 流形学习 潜图深度学习 (Deep learning with latent graphs) TL;DR: Graph neural networks exploit relational ...
- 机器视觉开源处理库汇总
从cvchina搞到的机器视觉开源处理库汇总,转来了,很给力,还在不断更新... 通用库/General Library OpenCV 无需多言. RAVL Recognition And Visio ...
- 2020年 ICLR 国际会议最终接受论文(poster-paper)列表(三)
来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-02-21 2020年的ICLR会议将于今年的4月26日-4月30日在Mil ...
- (九:2020.08.27)CVPR 2019 追踪之论文纲要(译)
CVPR 2019 追踪之论文纲要(修正于2020.08.28) 讲在前面 论文目录 讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自 ...
- 《因果科学周刊》第3期:因果助力 Stable Learning
为了帮助大家更好地了解因果科学的最新科研进展和资讯,我们因果科学社区团队本周整理了第3期<因果科学周刊>,从 Causality, Causal Inference, Causal AI ...
最新文章
- python字典通讯录_Python利用字典将两个通讯录文本合并为一个文本实例
- 扫地机器人“离家出走”的真实原因找到了:差个自动驾驶算法
- 2月1日学习内容整理:算法
- 云端的SRE发展与实践
- Java Spring源代码学习之DispatcherServlet.getHandler
- CSDN开发者周刊 TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库
- 爱奇艺CEO龚宇呼吁网络电影涨价:6块钱太低了
- 多元线性回归数据集_TensorFlow学习Program1——13.实现一元、多元线性回归(基于房价数据集)...
- 7模型集成:细粒度用户评论情感分析冠军思路及源码
- Bailian2737 大整数除法【大数】
- 一只特立直行的猪_修复特立尼达IE 11部分页面请求(PPR)问题/支持所有IE浏览器
- 验证服务器的通用性,通用VNFM部署的可行性分析与验证
- 桌面下雪软件测试工程师,Snow Flakes屏幕下雪动态屏保 模拟真实降雪情景的屏保程序...
- IE 浏览器旧版本下载
- ARINC485和RS485的区别
- iis6 增加PHP+MYSQL等时,记得 PHP目录要给EVERYONE权限
- Capstone CS5218转接设计|DP转HDMI 4K 30HZ转接电路
- 百度地图API V2.0 离线版本
- 关于echarts自定义合并中国地图分区展示的问题
- 计算机培训word,计算机培训word2010.pptx