码迷,mamicode.com
首页 > 其他好文 > 详细

[译]K-D-B-tree

时间:2016-01-01 14:56:39      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

原文地址:https://en.wikipedia.org/wiki/K-D-B-tree

计算机科学中,KDB-tree(k-dimensional B-tree)是一个用于划分K维搜索空间的树形结构,KDB-tree的目的是提供平衡KD树的搜索效率,同时提供B树面向块的存储来优化外部内存的访问。

介绍

类似于KD树,KBD tree组织K维空间的点,有助于范围搜索和多维数据库查询等操作。KDB tree通过在某个维度元素的比较将空间划分为两个子空间。使用2-D-B-tree举例子,空间划分使用和KD树相同的方式:使用某个维度的一个点,其他值要么小于或者大于当前值,分别分到左边和右边的划分平面上。

不同于KD树的地方,每个半空间不是自己的节点。而是和B树类似,KDB-tree中的节点以页来存储,树存储一个指针,指向根页。

结构

KDB-tree包括两种类型的页:

  • 区域页面: (region, child)对的集合包含边界区域的描述,加上该区域指向子页面的指针。
  • 点页面:(point, location)对的集合。数据库方面,location可能指向数据库记录的索引,对于K维空间中的点,可以被看成该空间中的点坐标。

技术分享

当向KDB树插入元素时,导致节点的规模超过它的最优规模,页面溢出。因为KDB-tree的目的是优化外部内存访问,例如硬盘访问,当节点的规模超过外部内存页大小,一个叶被认为是溢出。

通过插入和删除操作,KDB树保持一些属性:

  • 该图是一个多叉树,区域页面指向子页面,并且不能为空。点页面是叶子节点。
  • 像B树,对于所有查询,到达叶节点的路径长度是相同的。
  • 如果根节点是区域页面,区域的联合是整个搜索空间。
  • 当一个区域页面的(region, child)对的儿子也是一个区域页面,所有儿子区域的联合是该页面。
  • 和上面例子相反,如果儿子是一个点页面,儿子中所有点必须被该区域包含。

KDB-tree中的操作 

 

[译]K-D-B-tree

标签:

原文地址:http://www.cnblogs.com/skycore/p/5093257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!