先看个基础的问题:

1. 1d range search:(对应到数据库就是range find)

如果只要查一次,遍历一次就好了,但是如果要查很多次呢(每次要查的范围不一样)?

如果待搜索的数据空间量还在变化呢?

这时,普通的brute-force就不行了,解决方案之一是把数据加到BST中,计算rank(比该节点的值小的节点有多少个)

这样就可以做到,无论是插入,查找多次都是logN的时间复杂度,如果要具体求出每个,也只要遍历二叉树就好了

有了上面计算一维空间范围的基础,就可以在此基础上进行一些更复杂的工作

2. line segment intersection:

对应的解决办法是:Sweep-line algorithm,想象一条竖线从做往右扫描,遇到一条横线的左端点,就把这条线的y坐标加到BST,遇到该横线的右端点就把这条横线的y坐标移除BST,

如果遇到的是竖线,就在这条竖线的范围内1d-search在该范围内的横线的y坐标

3. kd trees:

先看先看2维空间的2-d orthogonal range search来引出kd tree的概念

一个想法是对空间进行网格划分,避免不必要的搜索,但同时会需要额外的空间,这就有个trade-off,同时这种方法也不是很robost

可以看到上面的问题是没有考虑数据的实际分布,单纯的均匀划分,

如果按照点来进行空间的划分应该会好一点

BST层与层之间是横线划分和竖线划分交替的,

我们来看下,在这种划分下找在某一个区域的所有的点

可以看到二叉树的作用在于:当发现矩形在 划分线 的一侧时,另外一侧的点就不用搜索了

累世的可以推广到KD-tree

2D-tree还有很多的应用,在图形学里面应用也不少,比如要找到距离某个点A最近的点在哪

可以看到二叉树的作用在于:当点A到某条 划分线 的距离比当前optimal的距离还大时,那这条 划分线 另外一侧的点就不用搜索了

GEOMETRIC APPLICATIONS OF BSTS相关推荐

  1. 值得一看的网络课程推荐(不限于计算机科学)

    前言:搜罗来一些不错的网络课程,比如Coursera, edX, Udacity上 一.计算机类 算法类首推Coursera上普林斯顿大学的Robert Sedgewick,能把复杂的算法(典型例子: ...

  2. 一些我推荐的和想上的网络课程(Coursera, edX, Udacity,MIT OCW)

    转载自 http://blog.csdn.net/fightforyourdream/article/details/21314929 感觉是很好的CS 网上公开课总结,在终身学习时代,好好利用网络学 ...

  3. 基于水平集LBF模型的图像边缘轮廓分割凸优化 - Split Bregman分裂布雷格曼算法的最优解

    目录 1. 凸优化简介 : 2. 次梯度(subgradient): 次梯度概念: 次梯度例子: 次梯度存在性: 3. Bregman距离(布雷格曼距离) : Bregman距离概念 : Bregma ...

  4. Several approaches to non-archimedean geometry

    Several approaches to non-archimedean geometry Brian Conrad1 Introduction Let k be a non-archimedean ...

  5. Geometric deep learning: going beyond Euclidean data译文

    Geometric deep learning: going beyond Euclidean data(几何深度学习:超越欧几里得数据) 摘要: 许多科学领域研究具有非欧几里德空间的底层结构的数据. ...

  6. 论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications

    论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications 论文搜索 ...

  7. Graph Neural Networks: A Review of Methods and Applications(图神经网络:方法与应用综述)

    Graph Neural Networks: A Review of Methods and Applications 图神经网络:方法与应用综述 Jie Zhou , Ganqu Cui , Zhe ...

  8. 2022,SCI一区(Advances in Engineering Software),Semantic Cluster Operator for SR and Its Applications

    ABSTRACT 本文针对遗传规划在符号回归中收敛性能低的问题,提出了一种新的算子 -- 语义聚类算子.陡峭收敛(steep convergence)的主要策略是缩小搜索空间,并使用语义聚类库对缩小的 ...

  9. Paper:《Graph Neural Networks: A Review of Methods and Applications—图神经网络:方法与应用综述》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications-图神经网络:方法与应用综述>翻译与解读 目录 < ...

  10. 面向单目深度估计的基于几何的预训练方式 -- Geometric Pretraining for Monocular Depth Estimation

    一些前提知识 Monocular Depth Estimation:单目深度估计,从单张图片中去预测每个像素点具体的深度,相当于从二维图像推测出三维空间. ImageNet-Pretraining:基 ...

最新文章

  1. 万字长文了解模拟退火算法原理及求解复杂约束问题(源码实现)
  2. Envoy实现.NET架构的网关(四)集成IdentityServer4实现OAuth2认证
  3. (六)Netty网络编程应用实例-群聊系统
  4. 【成长之路】【python】python基础2
  5. html5 瓶颈,html5+css3方式实现mobie app的一些瓶颈
  6. CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)
  7. Kubernetes学习笔记 ~~~黑马程序员
  8. linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
  9. 用友 U9好不好???
  10. 彻底清除 mplay.com与mplay.exe病毒
  11. 全屏功能-实现全屏-图标切换
  12. 微信小程序修改顶部通知栏字体颜色,手机电量时间.....。
  13. 软件开发项目风险管理的几点体会
  14. 小程序名片,让你彻底告别伸手递名片的烦恼!
  15. idea怎么看jdk版本_怎么看自己的jdk版本
  16. KubeSphere 社区双周报 | KubeKey v3.0.2 发布 | 2022-11-24
  17. 笔者带你剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)
  18. Java 并发编程(二)对象的发布逸出和线程封闭
  19. C++ 重载操作符与转换
  20. 使用CRT调式库调式运行时堆

热门文章

  1. linux下du和df结果不一致的原因及处理
  2. 干货:8266在3d打印机上的使用
  3. 旋律生成算法的现状与挑战
  4. 使用驱动器中的光盘之前需要将其格式化怎么办,使用驱动器中的光盘之前需要将其格式化寻回方法
  5. TapTap实习两周总结
  6. 更改Xcode项目名及app名称
  7. java 右对齐_Java中如何控制右对齐输出?
  8. oracle 列名sql,SQL查询表名、列名、列属性-Oracle
  9. 计算机主机hdmi接口是什么意思,什么是hdmi接口?
  10. 计算机Auto服务错误1053,Win7电脑宽带连接错误1053的原因和解决方案