基于
基于基于
基于
∆-tree
的
的的
的递归深度优先
递归深度优先递归深度优先
递归深度优先
KNN
查询算法
查询算法查询算法
查询算法
刘
刘刘
刘
艳
艳艳
艳
1,2
,
,,
,郝忠孝
郝忠孝郝忠孝
郝忠孝
1,3
(1. 哈尔滨理工大学计算机科学与技术学院,哈尔滨 150080;
2. 长春大学计算机科学技术学院,长春 130022;
3. 哈尔滨工业大学计算机科学与技术学院,哈尔滨 150001)
摘
摘摘
摘 要
要要
要:
::
:基于 ∆-tree 提出一种用于高维数据的主存 K 最近邻(KNN)查询算法。该算法利用递归调用方法深度优先遍历 ∆-tree,找到距离查
询点较近的叶子节点,并选择其中较优的 KNN 候选点进行查询,从而缩小修剪距离、提高查询速度。实验结果表明,与已有算法相比,
该算法具有更高的查询效率。
关键词
关键词关键词
关键词:
::
:高维索引;主存;K 最近邻查询;深度优先搜索
Recursive Depth-first KNN Query Algorithm Based on ∆-tree
LIU Yan
1,2
, HAO Zhong-xiao
1,3
(1. College of Computer Science and Technology, Harbin University of Science and Technology, Harbin 150080, China;
2. Institute of Computer Science and Technology, Changchun University, Changchun 130022, China;
3. College of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)
【
【【
【Abstract】
】】
】This paper proposes an algorithm based on ∆-tree to support efficient main memory K-Nearest Neighbor(KNN) query in
high-dimensional databases. By recursive transfer method and depth-first traversal of ∆-tree, the algorithm finds the leaf nodes that are nearer to
query point and adopts the superior KNN candidates in them to reduce pruning distance, thus lesses calculation amount and accelerates the nearest
neighbors search. Experimental results show that this algorithm can improve query efficiency.
【
【【
【Key words】
】】
】high-dimensional index; main memory; K-Nearest Neighbor(KNN) query; depth-first search
DOI: 10.3969/j.issn.1000-3428.2011.22.013
计 算 机 工 程
Computer Engineering
第 37 卷 第 22 期
Vol.37 No.22
2011 年 11 月
November 2011
·
··
·软件技术与数据库
软件技术与数据库软件技术与数据库
软件技术与数据库·
··
·
文章编号
文章编号文章编号
文章编号:
::
:1000—
——
—3428(2011)22—
——
—0048—
——
—03
文献标识码
文献标识码文献标识码
文献标识码:
::
:A
中图分类号
中图分类号中图分类号
中图分类号:
::
:TP311
1
概述
概述概述
概述
在高维数据应用中,
K
最近邻
(K-Nearest Neighbor, KNN)
查询是一种使用频率高且操作代价昂贵的检索方式。
KNN
查
询要求在高维空间中查找出与给定查询对象距离最近的
k
个
数据点
[1]
。目前
RAM
的容量越来越大且价格越来越便宜,对
主存数据库
的
研究引起了学者们的兴趣
[2]
。
文献
[3]
提出了一
种主 存索引
∆-tree
;文 献
[4-6]
基于 Δ
-tree
提出 了自 相似连
接
[4-5]
、
KNN
连接算法;文献
[3]
中已证明索引结构Δ
-tree
能
够有效地支持高维数据的主存
KNN
的快速搜索,但该文中
的
KNN
查询算法存在一定缺陷,不利于修剪距离的快速缩
小。本文根据
KNN
查询自身的特点,采用递归调用的方式,
深度优先遍历
∆-tree
中距离查询点较近的叶子节点,快速缩
小了修剪距离。
2
基本概念
基本概念基本概念
基本概念
本文根据文献
[3]
中创建
∆-tree
的方法,为数据集
R
创建
∆-tree
。
定义
定义定义
定义
1
(
孩子节点的序号
)
对Δ
-tree
中内部节点的各孩子
节点从左到右使用
1, 2,
…进行编号,用以表示各孩子节点为
其父节点的第几个孩子节点的序号,简称孩子节点的序号。
定义
定义定义
定义
2
(
查询点与节点之间的距离
)
查询点到节点中心的
距离与节点半径之差,称为查询点与节点之间的距离。
定理
定理定理
定理
1
转换后的低维
PCA
[7]
空间中查询点到
∆-tree
中节
点之间的距离是高维空间中查询点到该节点中所有数据点之
间距离的下限。
证明:设
Q
表示查询点,
Q
′
表示
Q
转换后低维空间中的
点,
∆-tree
中某节点中心为
C
′
,半径为
R
′
。设
P
为该节点中
的
1
个数据点,被转换为
P
′
。
根据文献
[3]
中
PCA
的属性
1
,有如下等式成立:
dist
(
P
,
Q
)
≥
dist
(
P
′,
Q
′)
(1)
其中,
dist
(
p
,
q
)
表示
p
和
q
2
个数据点之间的距离;
dist
(
C
1
′,
Q
′)
-
R
1
′
表示
Q
′
到
∆-tree
中该节点的距离。
有下式成立:
dist
(
P
′,
Q
′)
≥
dist
(
C
1
′,
Q
′)
-
R
1
′
(2)
由式
(1)
和式
(2)
可得:
dist
(
P
,
Q
)
≥
dist
(
C
1
′,
Q
′)
-
R
1
′
(3)
所以,
dist
(
C
1
′,
Q
′)
-
R
1
′
是高维空间中查询点到该节点中
所有数据点之间距离的下限。如果
dist
(
C
1
′,
Q
′)
-
R
1
′
比搜索半
径大,则可将该节点修剪掉。
3
递归的
递归的递归的
递归的
KNN
查询算法
查询算法查询算法
查询算法
算法
R_DF_KNN_Search
及其子算法的符号说明如下:
queryPoint
为与数据集
R
中的数据点同时经过
PCA
转换的查
询点;
node
为
∆-tree
的内部节点;
computedChild
为
node
中
计 算 了 到
queryPoint
之 间 距 离 的 孩 子 节 点 的 集 合 ;
nearestNode
为
c
omputedChild
中距离查询点最近的孩子节点;
point
为数据点;
k
为最近邻的数目;
pruneDist
为
KNN
的修
剪距离;
KNNList
为
KNN
候选列表;
KNN
在
KNNList
中按
基金项目
基金项目基金项目
基金项目:
::
:黑龙江省自然科学基金资助项目(F2006-01)
作者简介
作者简介作者简介
作者简介:
::
:刘 艳(1981-),女,讲师、博士研究生,主研方向:
高维数据处理;郝忠孝,教授、博士生导师
收稿日期
收稿日期收稿日期
收稿日期:
::
:2011-06-10 E-mail:
::
:liuyan6374@yahoo.com.cn