一种基于区域覆盖的动态最近邻查询方法

文档序号:6339997阅读:146来源:国知局
专利名称:一种基于区域覆盖的动态最近邻查询方法
技术领域
本发明属于移动数据索引技术领域,特别涉及一种基于区域覆盖的动态最近邻查 询方法。
背景技术
随着无线通信技术、全球定位系统(GlcAal Positioning System, GPS)技术以及 数据库技术的发展,移动对象数据库技术逐渐成为数据库领域的研究热点,其中移动对象 数据的最近邻查询方法是研究中的一个重要领域,但是过去的大部分研究工作都是针对处 于静态环境下的最近邻查询,并且已经比较成熟;对于在动态环境中,查询对象和被查询目 标都是移动的情况下的最近邻查询问题,目前国内外这方面的研究都还处于初始阶段;现在虽然处于和平时期,但是对于战争的研究也一直在进行,战场上如何减少牺 牲,使战士时刻了解附近队友的位置,相互做好配合至关重要,而很多战士都是处于移动状 态,这就涉及到动态环境中的近邻查询问题;要解决这类查询问题,首先是需要一个能够高效存储移动对象的索引结构,对于 静止查询点与静止查询目标间的最近邻查询,最基本的算法是基于R树的BAB (branch and bound)方法,包括深度优先遍历R树的DF方法和最佳优先遍历R树的BF方法;但是这些 方法是针对静态环境的,而动态环境下由于目标一直在移动,作为计算机处理需要在一个 可以忍受的时间间隔下,改变索引中结点的位置,以往的静态算法索引代价过大,不足取。动态环境下的最近邻查询方法于2005年Kollios和Gunopulous等人在2005年 提出一种利用对偶变换(dual transformation)的方法来解决动态环境下的最近查询问 题,该方法通过复制转换的方法,首先把一个移动对象的运动轨迹x(t) = &+vxt,转化为空 间中的一个点(xo,vx),然后再通过索引结构完成最近邻查询,这种方法的缺陷是只能返回 在某个时间间隔内的查询结果,而不能返回每个时刻的查询结果。Benetis和Jensen等人提出了移动对象的最近邻和反最近邻方法,但是,该方法 在进行最近邻查询时,只能返回一个最近邻对象,随后,Benetis等人拓展了他们在文献中 提出的方法,使其能够支持KNN查询;Iwerks等人研究了连续移动点的连续k最近邻查询 问题,Raptopoulou等人针对移动对象数据库中移动最近邻查询的问题做了讨论。Su Chen和Beng Chin Ooi等人基于ST2B树索引结构的最近邻查询方法,ST2B树 是一种自可调的移动对象B+树索引结构,首先在时间上,ST2B树将底层B+树划分为两棵子 树BTtl和BT1,每个移动对象根据更新的时间选择相应的子树进行索引,其中两棵子树随着 时间交替进行移动对象管理;在空间上,根据区域内移动对象的分布,根据密度的不同选取 一个参考点集,并根据参考点Voronoi块对区域进行分块,然后在不同的分块选取不同的 网格粒度划分对移动对象进行索引,对于基于SfB树的最近邻查询方法,采取的是不断扩 大范围查询半径,直到查询区域内的移动对象个数满足最近邻查询的条件为止,方法的缺 点是采用不断的调用范围查询算法,时间代价较大。

发明内容
为克服上述方法的不足,本发明提出一种基于区域覆盖的动态最近邻查询方法。本发明的技术方案是这样实现的一种基于区域覆盖的动态最近邻查询方法,包 括以下步骤步骤1 录入人员位置信息,方法为坐标系中的点代表士兵,每一个士兵向系统 报告自己的当前坐标,确定战场空间;步骤2 把战场空间划分为网格;首先将整个战场空间划分成MXN个虚拟的空间网格单元,其中,M表示横着将空 间分为M份,N表示竖着将空间分为N份,如图1所示;对于点p(x,y)所在的网格id,计算公式如下px = (int)x/hXpy = (int)y/hYid = px+py 氺 divX+1式中,x,y表示点ρ的横坐标和纵坐标,hX和hY分别表示网格单元的水平宽度和 垂直高度,divX表示网格文件在水平方向上的划分个数;步骤3 对士兵进行索引,方法为把每一个空间网格单元看作为空间中的一个点进行索引,将对动态移动对象的管 理转换为静态网格单元,即只对存在移动对象的区域进行索引,对不存在移动对象的区域 不进行索引,方法为对于划分后的每一个空间网格单元,若网格内区域存在移动对象,则将该空间网 格单元的抽象点插入到压缩四分树中;若其内部没有移动对象,则该区域的抽象点并不真 实存在,其中压缩四分树的结构如图2(b)所示,索引的建立如图4(a) 图4(d)所示;索引建立好后,在以下两种情况下对压缩四分树进行更新,更新的规则为(1)当一个网格中仅有一个移动对象离开了当前网格,需要更新压缩四分树;(2)当一个移动对象进入了一个未被索引的网格中时,需要更新压缩四分树;步骤4 对于战场上士兵稀疏的区域使用Voronoi图结构组织网格;Voronoi图结构将稀疏网格中的网格与其周围的网格有效地组织起来,包含了近 邻网格信息以及距当前网格最近的可能的近邻信息;Voronoi多边形将保存周围相邻的多 边形中心点的指针,构成一张有序的网状结构;其网格密度Density的计算公式如下Density = Leafnums/Maxnums式中,Leafnums是压缩四分树中某一层中间结点所对应的区域内叶子结点的数 量,即存在移动对象的网格单元的数目,Maxnums是该区域按照网格划分得到的虚拟网格单 元的总数目;步骤5 取一个0-1之间的值设为阈值,网格密度大于阈值执行步骤6,网格密度小 于阈值则执行步骤7 ;步骤6 采用最佳优先最近邻查询方法BNFF,确定最近邻队友的位置,方法为在 四分树上从根结点开始扫描,对各个结点按照其到查询点的最小距离由小到大排列在优先 队列上,当队首出现叶子结点时,记录叶子结点包含的所有移动对象,若移动对象已达到K个,使其与优先队列其它非叶子结点的最近距离比较,看是否为真正的K近邻,否则把有可 能存在K最近邻的非叶子结点的孩子结点插入优先队列,执行步骤8 ;步骤7 使用网格Voronoi图最近邻方法VorNN,确定最近邻队友的位置,方法为在建立了 Voronoi图的区域,如果士兵发起查询,则先找到士兵所在的Voronoi 多边形的位置,接下来计算查询点q所在网格单元内其它移动对象与查询点间的距离,并 选取一个当前距离第K近的作为候选K最近邻的阈值,若不够K个,则从周围多边形中扩 展;再计算查询点到其所在Voronoi多边形边界的最小距离,如果该距离比阈值大,则候 选最近邻即为查询结果,否则,继续在查询点所在Voronoi多边形的邻接Voronoi多边形 中查找过滤;如果查询点所在网格单元查询点外没有其它移动对象,则直接在查询点所在 Voronoi多边形的邻接Voronoi多边形中进行查找过滤,最后返回最近邻查询的结果;步骤8:结束。本发明优点结合了网格文件,压缩四分树,Voronoi图结构的优点,解决了动态 最近邻查询的难题,对于密集的移动网络,一个网格中仅有一个移动对象的情况比较少,这 种方法更新代价比较低,而对于其他情况只需要改变移动点的坐标即可,对于整体索引结 果不会产生大的影响,从而降低了更新索引的代价,同时与已有方法相比查询效率有明显 提高,这种方法可以在战场上发挥很大的作用,为每个查询人提供最大程度的快捷准确的 结果。


图1为本发明一种基于区域覆盖的动态最近邻查询方法空间网格划分示意图;图2(a)为本发明一种基于区域覆盖的动态最近邻查询方法普通四分树示意图;图2(b)为本发明一种基于区域覆盖的动态最近邻查询方法压缩四分树示意图;图3(a)为本发明一种基于区域覆盖的动态最近邻查询方法网络区域覆盖示意 图;图3(b)为本发明一种基于区域覆盖的动态最近邻查询方法与图3(a)对应的虚拟 网格的Voronoi图形结构示意图;图4为本发明一种基于区域覆盖的动态最近邻查询方法20个士兵平面位置示意 图;图5为本发明一种基于区域覆盖的动态最近邻查询方法空间网格划分示意图;图6 (a)、6 (b)、6 (c)、6 (d)为本发明一种基于区域覆盖的动态最近邻查询方法索 引结构建立过程示意图;图7为本发明一种基于区域覆盖的动态最近邻查询方法实施例12个实际网格示 意图;图8为本发明一种基于区域覆盖的动态最近邻查询方法最佳优先最近邻查询方 法辅助说明图;图9为本发明一种基于区域覆盖的动态最近邻查询方法Voronoi图近邻查询方法 辅助说明图;图10为本发明一种基于区域覆盖的动态最近邻查询方法总流程图。
具体实施例方式下面结合附图和实施例对本发明作进一步详细说明。本实施例采用的硬件环境为IBM服务器一台,CPU Xeon EM64T Quad core E5405(2. OGHz 12MB L21333MHz 80w,内存 16G Bytes DDR RAM,软件环境操作系统CentOS5. 2;开发工具GNU Toolkits (GCC、G++、⑶B)、 Make、Vim、SVN等;开发语言标准C++语言;针对的是战场上有大量士兵参战的情况,限于篇幅,本实施例只以20个士兵为 例,基于区域覆盖的动态最近邻查询方法,包括以下步骤步骤1 每一个士兵向上报告自己的当前坐标,确定战场空间要求士兵带有定位 通讯装置,上传自己的位置以及查询请求,士兵的分布如图5所示,士兵上报的位置坐标如 表1所示表1 士兵位置坐标
权利要求
1. 一种基于区域覆盖的动态最近邻查询方法,其特征在于包括以下步骤 步骤1 录入人员位置信息,方法为坐标系中的点代表士兵,每一个士兵向系统报告 自己的当前坐标,确定战场空间; 步骤2 把战场空间划分为网格;首先将整个战场空间划分成MXN个虚拟的空间网格单元,其中,M表示横着将空间分 为M份,N表示竖着将空间分为N份;对于点P(x,y)所在的网格id,计算公式如下 px = (int)x/hX PY = (int)y/hY id = px+py氺divX+1式中,X,y表示点P的横坐标和纵坐标,hx和hY分别表示网格单元的水平宽度和垂直 高度,divX表示网格文件在水平方向上的划分个数; 步骤3 对士兵进行索引,方法为把每一个空间网格单元看作为空间中的一个点进行索引,将对动态移动对象的管理转 换为静态网格单元,即只对存在移动对象的区域进行索引,对不存在移动对象的区域不进 行索引,方法为对于划分后的每一个空间网格单元,若网格内区域存在移动对象,则将该空间网格单 元的抽象点插入到压缩四分树中;若其内部没有移动对象,则该区域的抽象点并不真实存 在;步骤4 对于战场上士兵稀疏的区域使用Voronoi图结构组织网格; Voronoi图结构将稀疏网格中的网格与其周围的网格有效地组织起来,包含了近邻网 格信息以及距当前网格最近的可能的近邻信息;Voronoi多边形将保存周围相邻的多边形 中心点的指针,构成一张有序的网状结构; 其网格密度Density的计算公式如下 Density = Leafnums/Maxnums式中,Leafnums是压缩四分树中某一层中间结点所对应的区域内叶子结点的数量,即 存在移动对象的网格单元的数目,Maxnums是该区域按照网格划分得到的虚拟网格单元的 总数目;步骤5:取一个0-1之间的值设为阈值,网格密度大于阈值执行步骤6,网格密度小于阈 值则执行步骤7 ;步骤6 采用最佳优先最近邻查询方法BNFF,确定最近邻队友的位置,方法为在四分 树上从根结点开始扫描,对各个结点按照其到查询点的最小距离由小到大排列在优先队列 上,当队首出现叶子结点时,记录叶子结点包含的所有移动对象,若移动对象已达到K个, 使其与优先队列其它非叶子结点的最近距离比较,看是否为真正的K近邻,否则把有可能 存在K最近邻的非叶子结点的孩子结点插入优先队列,执行步骤8 ;步骤7 使用网格Voronoi图最近邻方法,确定最近邻队友的位置,方法为 在建立了 Voronoi图的区域,如果士兵发起查询,则先找到士兵所在的Voronoi多边 形的位置,接下来计算查询点q所在网格单元内其它移动对象与查询点间的距离,并选取 一个当前距离第K近的作为候选K最近邻的阈值,若不够K个,则从周围多边形中扩展;再计算查询点到其所在Voronoi多边形边界的最小距离,如果该距离比阈值大,则候选最近 邻即为查询结果,否则,继续在查询点所在Voronoi多边形的邻接Voronoi多边形中查找过 滤;如果查询点所在网格单元查询点外没有其它移动对象,则直接在查询点所在Voronoi 多边形的邻接Voronoi多边形中进行查找过滤,最后返回最近邻查询的结果; 步骤8 结束。
2.根据权利要求1所述的一种基于区域覆盖的动态最近邻查询方法,其特征在于步 骤3所述的压缩四分树,其更新规则如下(1)当一个网格中仅有一个移动对象离开了当前网格,需要更新压缩四分树;(2)当一个移动对象进入了一个未被索引的网格中时,需要更新压缩四分树。
全文摘要
一种基于区域覆盖的动态最近邻查询方法,属于移动数据索引技术领域,方法如下录入人员位置信息;把战场空间划分为网格;对士兵进行索引;对于战场上士兵稀疏的区域使用Voronoi图结构组织网格;取一个0-1之间的值设为阈值,网格密度大于域值采用最佳优先最近邻查询方法BNFF,确定最近邻队友的位置,网格密度小于域值使用网格Voronoi图最近邻方法,确定最近邻队友的位置;本发明降低了更新索引的代价,同时与已有方法相比查询效率有明显提高,这种方法可以在战场上发挥很大的作用,为每个查询人提供最大程度的快捷准确的结果。
文档编号G06F17/30GK102073689SQ20101060672
公开日2011年5月25日 申请日期2010年12月27日 优先权日2010年12月27日
发明者屈敬伟, 张胜宝, 王波涛, 韩东红 申请人:东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1