k_d树

转载 2007年09月19日 20:14:00

最近在找一些kd树方面的资料,力所能及的只能找到这个了。一般都是拿2d树来举例子。

K-D树,K表示空间的维数。 它的每一层通过检测不同的属性(关键字)值以决定选择分枝的方向。在二维空间中(也就是2-D树)在根和偶数层比较X坐标值(假设根的深度为0),在奇数层比较Y坐标值。

每个数据点用K-D树中一个结点来表示,每个记录是通过结点中的6个域表现出来。开始的两个域是指向结点两个孩子的指针,各自相对应方向是左和右。XCOORD和YCOORD各自保存数点X和Y的坐标值。NAME域用来保存结点描述信息(例如城市名)。DISC域表示结点识别的坐标名(也就是比较坐标名)。

左孩子 右孩子 x坐标 y坐标 NAME DISC

当结点P是一个x识别器。那么所有具有x坐标值小于P的结点将放在左树中,而x坐标值大于或等于P的结点将放到P的右子树中。对于一个Y识别器的结点有同样的约定。实际上DISC域并不是必须的,因为随着树的下降,很容易跟踪被访问的结点类型。

举一个离例子,有八个城市,他们的x,y坐标如图2.1所示。另一个通用的技术就是倒排表方法。这种方法中,对于文件的每一个关键字,有一个排序表来维持。 图2给出了一个2-D树它对应于表1中的相同的8个结点。

NAME

X

Y

CHICAGO

MOBILE

TORONTO

BUFFALO

DENVER

OMAHA

ATLANTA

MIAMI

35

50

60

80

5

25

85

90

40

10

75

65

45

35

15

5

表1

 

 

图2 一个k-d树及其记录的表示

在识别器的定义中,关键字相等的问题的解决是靠规定相等的关键字在右子树中(也就是HISON)实现的。另一种方法是 通过超关键字定义一个结点。给定一个结点P,用K0(P),K1(P)等指代它的K个关键字。假设j的值代表DISC(P)那么任何满足条件Kj(Q)〈Kj(P)的结点Q在P的左子树中,同样任何满足条件Kj(R)>Kj(P)的结点R在P的右子树中。在相等的情况下,定义一个超关键字,它是通过一个从Kj(P)开始所有关键字循环的相关值形成的.换言之Sj(P)=Kj(P)Kj+1(P)…Kk-1(P)K0(P)…Kj-1(P)  ,现在比较P和Q的2个关键字,当Sj(Q)<Sj(P)转向左子树,当Sj(Q)>Sj(P)则转向右子树,如果Sj(Q)=Sj(P),那么所有K个关键字相等则返回一个特殊的值。

 

k-d Tree及其Java实现

本文内容基于An introductory tutoril on kd-trees 1.KDTree介绍 KDTree根据m维空间中的数据集D构建的二叉树,能加快常用于最近邻查找(在加快k-means...
  • riverflowrand
  • riverflowrand
  • 2016年07月15日 17:36
  • 979

B树,B-树和B+树的区别

B树        即二叉搜索树:        1.所有非叶子结点至多拥有两个儿子(Left和Right);        2.所有结点存储一个关键字;        3.非叶子结点的左指针...
  • zwz2011303359
  • zwz2011303359
  • 2017年03月18日 17:26
  • 3163

B-树详细分析及B树B-树B+树B*树概念

B- 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。 B- 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的...
  • guanyasu
  • guanyasu
  • 2016年12月03日 11:04
  • 649

2-3-4树、红黑树、B树

本总结是是个人为防止遗忘而作,不得转载和商用。 2-3-4树                   如上图所示。          有的节点存一个值,则有2个孩子,如:           ...
  • xueyingxue001
  • xueyingxue001
  • 2016年10月27日 14:52
  • 801

查找三 多路查找树(2-3树,2-3-4树,B树、B+树)

应用场景:解决在硬盘中的大量数据中的查找。因为大量数据存储在硬盘中,不能一次全部加载到内存中,而每次查一个数据读一次硬盘,读取速度太慢,这时就需要使用一种数据结构一部分一部分读入,这就是多路查找树的作...
  • u010512964
  • u010512964
  • 2017年07月26日 00:01
  • 403

浅谈AVL树,红黑树,B树,B+树原理及应用

背景:这几天在看《高性能Mysql》,在看到创建高性能的索引,书上说mysql的存储引擎InnoDB采用的索引类型是B+Tree,那么,大家有没有产生这样一个疑问,对于数据索引,为什么要使用B+Tre...
  • whoamiyang
  • whoamiyang
  • 2016年07月18日 09:36
  • 5450

K-D树

K-D树,即K-Dimensional Tree,是一种高维索引树型数据结构。常用于大规模高维数据空间的最邻近或者K邻 近查找,例如图像检索中高维图像特征向量的K邻近匹配,对KNN算法的优化等。   ...
  • ACdreamers
  • ACdreamers
  • 2015年03月27日 01:49
  • 8191

树的定义及基本操作

首先,什么是树呢? 数的定义是递归的: 定义树是满足以下条件的,包含至少一个结点的有限集合: (1)树中有一个特别指定的结点,称为根,或树根。 (2)其它结点划分成n>=0个不相交的集合T1…...
  • thefutureisour
  • thefutureisour
  • 2012年08月17日 10:52
  • 4326

最短路径树问题

最短路径树问题时间限制: 1 Sec 内存限制: 128 MB 题目描述 给一个包含n个点,m条边的无向连通图。从顶点1出发,往其余所有点分别走一次并返回。 往某一个点走时,选择总长度...
  • wcy_1122
  • wcy_1122
  • 2015年11月15日 10:17
  • 3821

noip2004 FBI树 (树的后序遍历)

A1149. FBI树 时间限制:1.0s   内存限制:256.0MB   总提交次数:582   AC次数:286   平均分:63.64 将本题分享到:     ...
  • yuyanggo
  • yuyanggo
  • 2015年08月30日 18:43
  • 1746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:k_d树
举报原因:
原因补充:

(最多只允许输入30个字)