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个关键字相等则返回一个特殊的值。

 

相关文章推荐

[BZOJ3489]A simple rmq problem(可持久化树套树||K-D tree)

还有一个月SDOI Round1

(八)k-dTree库教程一--k-d树在PCL中的应用

k-d树在PCL中的应用上一讲中,我们介绍了k-d树在二维上的原理,k-d树构建算法和k-d树是如何应用于最近邻查找算法的。对于PCL中的k-d树来说,只不过是将二维提升到了三维而已。下面我们就看看P...

Codeforeces 501D 平衡树求排名和第k大

传送门:点击打开链接 D. Misha and Permutations Summation time limit per test 2 seconds memory limit per test 2...

超小 2004年 64K 3D动画

  • 2015-08-10 13:23
  • 63KB
  • 下载

K视3D注册机

  • 2016-02-11 17:09
  • 191KB
  • 下载

纯js脚本1k大小的3D玫瑰, NB

http://sd.csdn.net/a/20120209/311621.html 导语:前年圣诞节上,西班牙程序员Roman Cortes带来了用纯javascript脚本编写的神...
  • faral
  • faral
  • 2012-02-10 09:56
  • 471

HiMedia Q5 4K3D boot.img contents

  • 2014-11-02 01:16
  • 7.82MB
  • 下载

神州笔记本 k470p i7-d2

  • 2014-09-14 16:04
  • 2.45MB
  • 下载

HDU5992Finding Hotels 【K-D tree】

Finding HotelsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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