r树

高级数据结构之R树(R-tree)

南笙酒味 提交于 2020-01-22 12:39:18
R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子 R树表示由二维或者更高维区域组成的数据,我们把它们称为数据区。一个R树的内结点对应于某个内部区域,或称“区域”,它不是普通的数据区。原则上,区域可以是任意形状,虽然实际中它经常为矩形或其他简单形状。例如上图中(a)是一棵R树,其中的一个内部结点R3R4R5就代表(b)中的一个区域,它被包含在R1之中。R树的结点用子区域替代键,子区域表示结点的子结点的内容,例如R3、R4、R5是结点R3R4R5中的键,它们中的每一个都表示(b)中的一个子区域。注意,子区域没有覆盖整个区域,只要把位于大区域内的所有数据区都完全包含在某个小区域中就合乎要求。进一步说,子区域允许有部分重叠,例如R3和R4就彼此互有重叠。当然,我们希望重叠的部分尽可能地小。 一、R树(R-tree)的定义 在R-tree中首先要明确的一个概念是 Bounding Box (或者简写为BB)。前面已经讲过,区域可以是任意形状

B-树和B+树和B*树和R树

妖精的绣舞 提交于 2020-01-12 16:49:28
  在大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于 树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下 ,那么如何减少树的深度(当然是不能减少查询的数据量),一个基本的想法就是:采用 多叉树 结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。   为了更有效的 减少树的深度 ,新的查找树结构——多路查找树。根据平衡二叉树的启发,自然就想到平衡多路查找树结构。即B树结构。    磁盘读取数据是以盘块 (block) 为基本单位的。 位于同一盘块中的所有数据都能被一次性全部读取出来。而磁盘IO代价主要花费在查找时间Ts上。因此我们应该尽量将相关信息存放在同一盘块,同一磁道中。或者至少放在同一柱面或相邻柱面上,以求在读/ 写信息时尽量 减少磁头来回移动的次数 ,避免过多的查找时间 Ts 。   所以,在大规模数据存储方面,大量数据存储在外存磁盘中,而在外存磁盘中读取/写入块(block)中某数据时,首先需要 定位到磁盘中的某块 。 1.B-树(B树)   1)定义   B是 balanced,而不是b inary,B-树或B_树 不要误解成“B减树”,“-”“_”只是连字符。   是一种多路搜索树(并不是二叉的),一个M阶的B树: 1

浏览器渲染页面的原理及流程

…衆ロ難τιáo~ 提交于 2019-12-02 00:17:14
我们可能都知道浏览器含有一个渲染引擎,用来渲染窗口所展示的内容。默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF阅读器插件,用于显示PDF格式。但是其具体的渲染原理和流程估计也有很多人都不知道或者不清楚吧。这些天研究了一下浏览器的渲染原理,有了些心得,在这里跟大家分享一下。 网页浏览器的排版引擎也被称为页面渲染引擎,它负责取得网页的内容(HTML、XML、图象等等)、整理信息(例如加入CSS等),以及计算网页的显示方式然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要排版引擎。 渲染引擎在取得内容之后的基本流程: 解析HTML构建dom树—>构建render树—>布局render树—>绘制页面。 1、构建dom树 HTML文档中的所有内容都是节点,各节点之间拥有层级关系,如父子关系,兄弟关系等等,彼此相连构成dom树,dom树中节点和HTML文档存在一一对应的关系。 需要注意的是:在构建dom树期间,如果遇到JS,会阻塞dom树的构建,优先加载JS文件,加载完毕后在继续构建dom树。 在构建dom树的同时,浏览器还会构建一个CSSOM。当遇到css文件时,先加载css文件,然后构建CSSOM,但是会阻塞render树的构建。如果将css文件放在底部

R树

£可爱£侵袭症+ 提交于 2019-12-01 18:28:42
R树数据结构 简介 Guttman, A.; “R-trees: a dynamic index structure for spatial searching,” ACM, 1984, 14 R树在数据库等领域做出的功绩是非常显著的。它很好的解决了在高维空间存储数据,搜索等问题。 例如: 用手机查找附件商圈的所有餐厅。如果用经纬来记录餐厅的坐标(x,y), 这两个字段储存在数据库中。我们就需要遍历所有的位置信息,然后计算是否满足要求。如果是谷歌地图这种大数据库,遍历就太慢了。 R树解决了这种空间搜索问题。它把B树的思想扩展到多维空间,采用B树分割空间的思想,并在添加、删除操作时采用合并、分解结点的方法,保证树的平衡性。因此,R树就是一棵用来存储高维数据的平衡树。 来源: https://www.cnblogs.com/chentianwei/p/11712079.html