«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (8): 258-265  DOI: 10.19678/j.issn.1000-3428.0064280
0

引用本文  

杨泽雪, 王阿川, 李陆, 等. 障碍环境中可视反向视域K最近邻查询[J]. 计算机工程, 2022, 48(8), 258-265. DOI: 10.19678/j.issn.1000-3428.0064280.
YANG Zexue, WANG Achuan, LI Lu, et al. Visible Reverse View Field K-Nearest Neighbor Queries in Obstacle Environment[J]. Computer Engineering, 2022, 48(8), 258-265. DOI: 10.19678/j.issn.1000-3428.0064280.

基金项目

中国博士后科学基金(2019M651318);黑龙江省自然科学基金(LH2020F047);黑龙江省高等教育教学改革重点委托项目(SJGZ20200145);黑龙江工程学院创新团队项目(2020CX07)

作者简介

杨泽雪(1978-), 女, 副教授、博士后, 主研方向为空间数据库、空间查询;
王阿川, 教授, 博士生导师;
李陆, 高级工程师, 硕士;
李松, 教授、博士

文章历史

收稿日期:2022-03-23
修回日期:2022-05-05
障碍环境中可视反向视域K最近邻查询
杨泽雪1,2,3 , 王阿川1 , 李陆3 , 李松4     
1. 东北林业大学 信息与计算机工程学院, 哈尔滨 150040;
2. 黑龙江工程学院 计算机科学与技术系, 哈尔滨 150050;
3. 黑龙江省政务大数据中心, 哈尔滨 150028;
4. 哈尔滨理工大学 计算机科学与技术学院, 哈尔滨 150080
摘要:在障碍环境下的空间应用中,用户通常只对视域范围内可视的数据对象感兴趣。为解决障碍环境中视域范围内的反向最近邻查询问题,将视域可视性引入到反向K最近邻查询中,提出一种可视反向视域K最近邻查询算法。给定某空间数据集P、障碍集O和查询点q,可视反向视域K最近邻查询检索P中数据点,并将q作为可视视域K最近邻。应用查询点进行障碍过滤,得到障碍过滤算法,利用数据对象的视域进行剪枝,使用查询点与数据对象的关系剪枝,形成有效的障碍剪枝规则,并根据剪枝规则得到视域可视性判断算法。在此基础上,分别基于R*-树和VFR-树提出可视反向视域K最近邻查询算法R*-V2-RKNN和VFR-V2-RKNN,并分别通过对R*-树和VFR-树进行一次遍历得到查询结果。在真实数据集和模拟数据集上的实验结果表明,VFR-V2-RKNN算法的查询性能明显优于R*-V2-RKNN算法。
关键词障碍    可视性    视域    反向K最近邻查询    空间查询    
Visible Reverse View Field K-Nearest Neighbor Queries in Obstacle Environment
YANG Zexue1,2,3 , WANG Achuan1 , LI Lu3 , LI Song4     
1. College of Information and Computer Engineering, Northeast Forestry University, Harbin 150040, China;
2. Department of Computer Science and Technology, Heilongjiang Institute of Technology, Harbin 150050, China;
3. Heilongjiang Provincial Big Data Center of Government Affairs, Harbin 150028, China;
4. College of Computer Science and Technology, Harbin University of Science and Technology, Harbin 150080, China
Abstract: In spatial applications used in obstacle environments, users are usually only interested in visible data objects within the field of view.To solve the problem of a reverse nearest-neighbor query within the field of view in an obstacle environment, view field visibility is introduced into the Reverse K-Nearest Neighbor(RKNN) query, and a Visible Reverse View Field K-Nearest Neighbor (V2-RKNN) query algorithm is proposed.The query considers both the visibility and view field, which makes up for the deficiency in which the existing query only considers one aspect.Given a spatial data set P, an obstacle set O, and a query point q, the V2-RKNN query retrieves the data points in P that have q as their visible view field K-nearest neighbor.First, a query point is used for obstacle filtering to obtain the obstacle filtering algorithm.The view field of the data object is then used for pruning, and the relationship between the query point and data object is applied to the pruning to form effective obstacle pruning rules, based upon which a view field visibility judgment algorithm is achieved.On this basis, two visible reverse view field K nearest neighbor algorithms, R*-V2-RKNN and VFR-V2-RKNN, based on an R*-tree and VFR-tree, respectively, are developed.The two algorithms obtain their query results through one traversal of an R*-tree and VFR-tree, respectively, and the query efficiency of the VFR-V2-RKNN algorithm is verified experimentally on real and synthetic data sets.
Key words: obstacle    visibility    view field    Reverse K-Nearest Neighbor(RKNN) query    spatial query    

开放科学(资源服务)标志码(OSID):

0 概述

反向K最近邻(Reverse K-Nearest Neighbor,RKNN)查询[1]将某查询点作为K最近邻的所有空间数据对象,在基于位置的服务、决策支持、集群和异常值探测、交通网络、冒险游戏、分子生物学等方面具有广泛应用。关于反向K最近邻查询的研究,学者提出诸多经典算法,主要有静态反向最近邻查询算法[2-4]、动态反向最近邻查询算法[5-6]、高维反向最近邻查询算法[7]、近似反向最近邻查询算法[8-9]、并行反向最近邻查询算法[10-11]、隐私保护反向最近邻查询算法[12-14]等。但由于以上反向K最近邻查询没有考虑到数据对象的可视性,可能导致已有算法在交互式在线游戏、军事模拟系统、游客推荐系统等应用中不可行,为此需要在空间查询的研究中考虑可视性。

关于考虑可视性的空间查询,NUTANONG等[15-16]提出可视K最近邻(Visual K-Nearest Neighbor,VKNN)查询,该查询返回距离查询点q最近的K个可视对象,并利用R-树提出处理VKNN查询的POSTPRUNING和PREPRUNING两个算法。GAO等[17]提出查询点在一条线段上移动的连续可视最近邻(Continuous Visible Nearest Neighbor,CVNN)查询,利用R-树和分枝限界技术得到有效的CVNN查询处理算法,并提出几种剪枝规则提高查询效率。另一个连续可视最近邻查询算法由WANG等[18]提出,给出过滤-精炼处理方法,并在过滤阶段提出2个剪枝规则,通过精炼步骤检查数据对象的确切位置,从而找到最终结果。XU等[19]提出组可视最近邻(Group Visible Nearest Neighbor,GVNN)查询,提出解决GVNN查询的MTO和TOO算法,通过定义查询数据集的不可视区域进行数据集和障碍集的剪枝,TOO算法只需遍历一次R-树即可得到结果。GAO等[20]提出可视反向K最近邻(Visible Reverse K Nearest Neighbor,VRKNN)查询,该查询在处理反向K最近邻查询时考虑了障碍物对数据对象可视性的影响,提出可视区域计算算法,有效检索只对查询点可视性有影响的障碍,并利用可视区域计算算法得到VRKNN查询处理算法。YANG等[21]提出连续可视反向最近邻(Continuous Visible Reverse Nearest Neighbor,CVRNN)查询,利用查询线段的可视性判断算法和过滤步骤的剪枝规则,给出处理CVRNN查询的过滤-精炼-分裂算法。针对可视性查询不能处理三维空间对象问题,LIU等[22]提出三维对象基于控制点的连续可视范围(Continuous Visible Range Query Based on Control Point,CVRQ-CP)查询,给出三维对象的可视性判定方法和控制点的定义,并提出CVRQ-CP查询处理算法。以上查询虽然考虑了数据对象的可视性,但在增强现实系统、导游系统、视频监控系统等应用中需要数据对象在某个特定的视域内,因此有必要对视域范围内的空间查询进行研究。

在已有文献中,SUNGMIN等[23]提出视域最近邻(View Field Nearest Neighbor,VFNN)查询,检索视域范围内距离查询点最近的数据对象,提出连续视域最近邻处理方法,并分别给出2个阶段的扇形探索算法和扇形监控算法,解决了VFNN查询问题。WOOIL等[24]提出移动视域最近邻(Moving View Field Nearest Neighbor,MVFNN)查询,该查询连续检索查询位置和视域变化情况下的最近邻结果,定义了地理安全界限和角度安全界限,并基于这2个定义给出了MVFNN查询处理的有效算法。YI等[25]提出反向视域最近邻(Reverse View Field Nearest Neighbor,RVFNN)查询,及基于扇形R-树和原始R-树的RVFNN查询算法,还构建了一个新的数据索引结构VFR-树,并给出基于VFR-树的RVFNN查询处理算法,用实验验证基于VFR-树的RVFNN查询算法优于前2种算法。

在上述所有查询研究中,部分研究仅考虑可视性,或者仅考虑视域范围,而有些查询在实际应用中可能只对视域范围内可视的数据对象感兴趣,导致存在适应性不高等问题,为此需要同时考虑可视性和视域2个方面。在相关文献中,SU等[26]提出视域可视K最近邻(View Field Visible K Nearest Neighbor,V2-KNN)查询,该查询检索视域范围内距离查询点最近的K个可视最近邻,基于网格索引数据集和障碍集,结合剪枝规则给出了V2-KNN查询的处理算法,该查询同时考虑可视性和视域2个方面,但只对视域范围内的可视K最近邻查询进行处理,忽略了视域范围内的可视反向K最近邻查询处理。

本文在反向K最近邻查询的研究中同时考虑可视性和视域2个因素,提出一种可视反向视域K最近邻(Visible Reverse View Field K Nearest Neighbor,V2-RKNN)查询算法。定义V2-RKNN查询,设计相应的剪枝规则和视域可视性判断算法,并分别基于文献[25]中的R-树和VFR-树给出V2-RKNN查询处理算法。

1 相关定义

定义1[23](查询点及其视域)  查询点q表示三元组(lrθ)。其中:l=(xy)表示q的位置;r表示用户的最大可视距离;θ表示q的视域角。θ =($ {\theta }_{q}^{⊢} $$ {\theta }_{q}^{⊣} $)由2个角$ {\theta }_{q}^{⊢} $$ {\theta }_{q}^{⊣} $组合而成,$ {\theta }_{q}^{⊢} $$ {\theta }_{q}^{⊣} $分别是θ基于x轴正方向的起始角和结束角。

图 1所示为查询点q及其视域、视域角θ$ {\theta }_{q}^{⊢} $$ {\theta }_{q}^{⊣} $的示意图,其中阴影部分为查询点q的视域。

Download:
图 1 查询点q及其视域 Fig. 1 Query point q and its view field

定义2[20](可视性)  给定数据集P={p1p2,…,pi},障碍集O={o1o2,…,oj},点pPp′∈P是可视的,需要满足pp′之间的连线不会穿过O中任意障碍o,即∀oO$ \overline{p{p}^{\text{'}}}\bigcap $o=$ \mathrm{\varnothing } $

定义3(视域可视性)  给定查询点qlrθ),数据集P={p1p2,…,pi},障碍集O={o1o2,…,oj},一个数据对象pPq是视域可视的,需要满足pq的视域范围内、qp的连线之间不存在障碍oO这2个条件。

定义4[26](可视距离)  给定查询点q和数据对象p,如果pq是可视的,则pq之间的可视距离(表示为Vdqp))是它们之间的最小欧式距离(即dist(pq)),否则Vdqp)是无穷的。即,

$ V_{d}(q\text{,}p)= \left\{\begin{array}{l}\mathrm{d}\mathrm{i}\mathrm{s}\mathrm{t}\left(q, p\right), p\mathrm{与}q\mathrm{是}\mathrm{可}\mathrm{视}\mathrm{的}\\ \mathrm{\infty }, \mathrm{其}\mathrm{他}\end{array}\right. $

定义5[26](可视视域K最近邻查询)  给定查询点qlrθ),数据集P={p1p2,…,pi},障碍集O={o1o2,…,oj},可视视域最近邻查询检索P的子集,表示为V2-KNN(q),满足:

1)|V2-KNN(q)| = k

2)∀p∈V2-KNN(q),pq是视域可视的;

3)∀p∈V2-KNN(q),$ {p}^{\text{'}} $P\V2-KNN(q),Vdqp)≤ Vdq$ {p}^{\text{'}} $)。

定义6(可视反向视域k最近邻查询)  给定查询点qlrθ),数据集P={p1p2,…,pi},障碍集O={o1o2,…,oj},可视反向视域K最近邻查询检索点集V2-RKNN(q)⊆P,满足∀p∈V2-RKNN(q),q∈V2-KNN(p),即V2-RKNN(q)={pP|q∈V2-KNN(p)}。

图 2给出了反向视域K最近邻查询和可视反向视域K最近邻查询的实例。

Download:
图 2 RVFKNN查询和V2-RKNN查询的实例 Fig. 2 Example of RVFKNN query and V2-RKNN query

图 2所示,数据对象p=(lrθ),给定一个数据对象集合P={p1p2p3p4p5}和查询点q,反向视域K最近邻查询RVFKNN(q)(k=1)结果为p3,因为在视域范围内包含查询点q的数据对象为p3p5,其中p3距离查询点q最近。虽然p2距离查询点q较近,但因其视域内不包含查询点q,所以不能成为结果。

图 2所示,加入障碍O={o1o2o3}后,可视反向视域K最近邻查询V2-RKNN(q)(k=1)结果为p5,这是因为p3与查询点q被障碍o1遮挡,p3与查询点q是不可视的,所以不能成为查询结果。而p5的视域内包含查询点qp5与查询点q是可视的,所以p5成为结果。

2 障碍过滤剪枝

给定障碍集O={o1o2,…,oj},由于不是所有障碍都会影响查询结果,因此需要对障碍进行剪枝。障碍过滤剪枝的具体步骤如下:

1)利用查询点q进行障碍剪枝,将不可能影响查询结果的障碍过滤掉,形成初步的障碍过滤集Sofr

2)对于Sofr中的障碍,只有落入数据对象的视域内障碍才有可能影响查询结果,因此利用数据对象的视域进行进一步剪枝;

3)对于查询点和某数据对象,只有与查询点和数据对象的连接线相交的障碍才对可视性有影响,为此进行再次剪枝,得到最终障碍。

2.1 障碍过滤算法

首先利用查询点q找到对查询结果有影响的障碍,剪掉没有影响的障碍。如图 3所示,设障碍集O={o1o2o3o4o5o6o7o8},其中o1~o6对查询点q的可视性有影响,组成的阴影区域是查询点q的不可视区域,落入阴影区域的障碍o7o8对查询点q的可视性没有影响,因此可以剪掉。空白区域构成了查询点q的可视区域。

Download:
图 3 基于查询点q的障碍过滤 Fig. 3 Obstacle filtering based on query point q

障碍过滤算法如算法1所示,算法1使用最小堆HO存放未访问的节点,最佳优先遍历TO,得到障碍过滤结果。

算法1  Obstacles-filter(qTOSofr

输入  查询点q,障碍集O的R-树TO

输出  Sofr(障碍过滤结果)

begin

  HO=$ \mathrm{\varnothing } $

  Sofr=$ \mathrm{\varnothing } $

  Enheap(HO,TO的树根);

  while HO≠∅ do

    e$ \leftarrow $Deheap(HO);

    if e是一个障碍then

        if e与q是可视的then

          Sofr= Sofr+{e};

    else

        for each ei∈e do

          if ei与q是可视的then

                Enheap(HO,ei);

  return Sofr

end

2.2 视域可视性判断算法

利用数据对象可视性进行剪枝,由算法1得到障碍集Sofr,由于只有落入某数据对象视域内的障碍才可能影响查询结果,因此需要进一步剪枝。

剪枝规则1[26]  如图 4所示,给定障碍o和数据对象pθpo.minθpo.max分别表示障碍o关于数据对象p的最小角和最大角,如果障碍o落入数据对象p的视域内,则障碍o一定满足po的最小距离小于或等于r,且$ {\theta }_{p}^{⊢} $$ {\theta }_{p}^{⊣} $θpo.minθpo.max满足以下4种情况之一:

Download:
图 4 o落入p视域内的4种情况 Fig. 4 Four cases of o is inside p's view field

1)$ {\theta }_{p}^{⊢} $θpo.min$ {\theta }_{p}^{⊣} $θpo.max > $ {\theta }_{p}^{⊣} $(如图 4(a)所示);

2)$ {\theta }_{p}^{⊢} $θpo.max$ {\theta }_{p}^{⊣} $θpo.min$ {\theta }_{p}^{⊢} $(如图 4(b)所示);

3)$ {\theta }_{p}^{⊢} $θpo.min$ {\theta }_{p}^{⊣} $$ {\theta }_{p}^{⊢} $θpo.max$ {\theta }_{p}^{⊣} $(如图 4(c)所示);

4)θpo.max > $ {\theta }_{p}^{⊣} $θpo.min$ {\theta }_{p}^{⊢} $(如图 4(d)所示)。

剪枝规则2  只有与qp的连线相交的障碍o会影响qp的可视性。

根据剪枝规则1和2,对障碍过滤结果Sofr中的障碍进行剪枝,得到视域可视性判断算法,如算法2所示。

算法2  View-Field-Visibility(pqSofr

输入  障碍过滤结果Sofr,查询点q,数据对象p

输出  p关于q的视域可视性Vpq

begin

  for each障碍o in Sofr do

    if o不在p的视域范围内then

      Sofr = Sofr -{o};//剪枝规则1

    else

      if o与q和p的连线不相交then

        Sofr = Sofr -{o};//剪枝规则2

  Vpq=True;

  If Sofr$ \mathrm{\varnothing } $ then

    Vpq=False;

  return Vpq

end

3 V2-RKNN查询处理算法

为处理V2-RKNN查询,需要计算给定查询点和数据对象之间的最小可视距离,进行查询点和数据对象之间的可视性判断,并检测给定查询点是否在某数据对象的视域范围内。为此,本节基于R*-树和VFR-树,分别给出基于R*-树和VFR-树的V2-RKNN查询处理算法。

3.1 基于R*-树的V2-RKNN查询处理算法

基于R*-树的V2-RKNN查询算法的思想如下:给定数据集P、障碍集O和查询点q,数据集P采用R*-树索引TP,该方法通过对TP的最佳优先遍历找到距离查询点最近的数据对象,在遍历树的过程中需要进行可视性判断并且确定查询点是否在数据对象的视域范围内,满足条件的则成为结果。

基于R*-树的V2-RKNN查询处理算法如算法3所示,算法使用最小堆HP存放未访问的节点,节点按照与查询点q的最小可视距离升序存放,如果访问的节点是中间节点,则需要判断其子节点与查询点q是否可视,可视则存入堆中;如果访问的节点是叶节点,则需要判断其中数据对象与查询点q是否可视,可视则存入堆中;如果访问的是数据对象,则需要判断该数据对象的视域范围内是否包含查询点q,然后判断数据对象与查询点q的视域可视性,形成候选,最后将候选集中的前k个结果作为最终结果。

算法3  R*-V2-RKNN(qTPOk

输入  查询点qlrθ),数据集P={p1p2,…,pi}的R*-树TP,障碍集O={o1o2,…,oj},RKNN的k

输出  V2-RKNN结果集合Sr

begin

  HP=∅;

  Sr=∅,Sc=∅;

  Enheap(HP,TP的树根);

  Obstacles-filter(q,TO,Sofr);

  while HP≠∅ do

    e$ \leftarrow $Deheap(HP);

    if e是数据对象then

      if e的视域范围内包含查询点q then

        if View-Field-Visibility(e,q,Sofr)=True

        then

          Sc=Sc+{e};

          if |Sc|≥k then

            kNN_dist=Vd(q,Sc中的第k个结果);

            if HP≠∅ or kNN_dist≤HP中第一个对象的键值

            then

                Sr=Sr+{Sc中的前k个元素};

            return Sr

  else if e是叶节点then

    for each数据对象ei∈e do

    if ei没有完全落入q的不可视区域

    then

          Enheap(HP,ei);//包含数据对象与q的最小可视距离

else

  for each子节点ei∈e do

    if ei没有完全落入q的不可视区域then

      Enheap(HP,ei);//包含ei与q的最小可视距离

end

3.2 基于VFR-树的V2-RKNN查询处理算法

VFR-树[25]的索引结构类似于R-树,节点类型分为叶节点和非叶节点,叶节点包括指向数据对象的指针、数据对象视域的扇形MBR和数据对象;非叶节点包括指向子节点的指针、覆盖所有子节点的扇形MBR和覆盖所有子节点的数据矩形MBR。图 5所示为VFR-V2-RKNN算法的实例。

Download:
图 5 VFR-V2-RKNN算法实例 Fig. 5 Example of VFR-V2-RKNN algorithm

基于VFR-树的V2-RKNN查询处理算法如算法4所示。

算法4  VFR-V2-RKNN(qTPOk

输入  查询点qlrθ),数据集P={p1p2,…,pi} 的VFR-树TP,障碍集O={o1o2,…,oj},RKNN的k

输出  V2-RKNN结果集合Sr

begin

  HP=∅;

  Sr =∅,Sc=∅;

  Enheap(HP,TP的树根);

  Obstacles-filter(q,TO,Sofr);

  while HP≠∅ do

    e$ \leftarrow $Deheap(HP);

    if e是数据对象then

      if e的视域范围内包含查询点q then

        if View-Field-Visibility(e,q,Sofr)=True

        then

            Sc=Sc+{e};

            iif | Sc |≥k then

              kNN_dist=Vd(q,Sc中的第k个结果);

              if HP≠∅ or kNN_dist≤HP中第一个对象的键值the

              Sr=Sr+{ Sc中的前k个元素};

              return Sr

  else if e是叶节点then

    for each子节点ei∈e do

      if ei没有完全落入q的不可视区域

      then

        if ei的数据MBR包含查询点q then

          Enheap(HP,ei);//包含数据对象与q的最小

//可视距离

else

  for each非叶子节点ei∈e do

    if ei没有完全落入q的不可视区域then

      if ei.扇形MBR包含q

      then

        Enheap(HP,ei);//包含数据对象与q的最小

//可视距离

end

图 5的例子说明算法执行过程。在本例中,k=2,P={p1p2,…,p12},障碍集O={o1o2,…,o8},数据对象及障碍如图 5(a)所示,对应的VFR-树如图 5(b)所示。算法采用最小堆HP按照节点与查询点q之间的最小距离升序存放未访问的节点,Sr按照最小距离升序存放结果,Sc按照最小距离升序存放候选。

初始时,算法访问VFR-树的根节点,对其子节点E1E2进行判断,因为E1E2没有完全落入q的不可视区域,所以判断E1E2的扇形MBR是否包含查询点q。由于E1E2的扇形MBR均包含查询点q,因此将其插入HP中。E1的数据MBR与q的距离小于E2的数据MBR与q的距离,顺序为HP={E1E2}。接下来访问节点E1,其子节点为E3E4,因为E3完全落入q的不可视区域,所以E3不可能成为结果,故被剪枝。而由于E4没有完全落入q的不可视区域,且E4的扇形MBR包含查询点q,因此将E4插入HP中,此时HP={E4E2}。继续访问E4,因为E4是叶节点,其子节点p1p2p3的数据矩形没有完全落入q的不可视区域,且p1p2的数据矩形均包含查询点q,所以将p1p2插入HP中,此时HP={ p2E2p1}。继续访问p2,因为p2是数据点,p2的视域内包含q,且p2q是视域可视的,所以p2成为候选集Sc中的第1个结果。此时候选集Sc中数据个数小于k。继续访问E2,其子节点为E5E6,因为E5E6没有完全落入q的不可视区域,且E5的扇形MBR包含查询点q,所以将E5插入HP中,此时HP={E5p1}。继续访问E5,因为E5是叶节点,其子节点p4p5p6的数据矩形没有完全落入q的不可视区域,且p4的数据矩形包含查询点q,所以将p4插入HP中,此时HP={p1p4}。继续访问,因为p1是数据点,p1的视域内包含q,但p1q是视域不可视的,所以p1不能成为候选集Sc的结果,p1被剪掉。继续访问p4p4成为Sc的第2个结果,此时候选集Sc中数据个数等于k,{p2p4}成为最终结果,算法结束。

算法执行过程中堆的内容如表 1所示。

下载CSV 表 1 算法执行过程中堆的内容 Table 1 Contents of heap during algorithm execution

定理1  VFR-V2-RKNN算法能够返回正确的结果,算法的时间复杂度为Ocloga|TP|+bloga|TO|),其中:loga|TP|为VFR-树的大小;loga|TO|为障碍R-树的大小;c为视域范围内定位查询点的时间;b为候选集的大小。

证明定理1的正确性:算法通过遍历VFR-树获取距离查询点最近的并且在其视域范围内包含查询点的k个可视最近邻,在树的遍历过程中根据节点的不同类型进行处理,候选集中的数据对象经过视域可视性算法的判定,若均满足与查询点之间是视域可视的,而视域可视性算法是针对过滤障碍集中的障碍根据剪枝规则1和2进一步处理的,剪枝规则1和2的正确性可以根据视域可视性的定义得到,由此证明候选集中的结果都是正确的。

时间复杂度分析:算法的时间包括遍历VFR-树的时间和遍历障碍R-树TO的时间,而算法只需遍历一次VFR-树,遍历一次VFR-树的时间为loga|TP|。遍历TO的次数为b,因为每个候选需要进行一次TO的遍历,所以遍历TO的时间为bloga|TO|。在VFR-树的遍历过程中需要查询扇形MBR是否包含查询点,这个时间为c,因此算法总的时间复杂度为O(cloga|TP|+bloga|TO|)。

4 实验结果及分析

实验环境为Intel CORE i5-10400 CPU,2.9 GHz,8 GB内存,1 TB硬盘,Windows 10操作系统,用C++语言实现。

实验数据包括模拟数据集和真实数据集,模拟数据集是由随机数生成器产生的数据,数据分布为Uniform分布和Zipfian分布数据集,数据集大小为5×103~1×105,障碍集采用http://chorochronos.Datastories.Org中Greece真实数据集,选取River数据集中的5×103~2.5×104条河流的MBR数据作为障碍集。以下实验中,用UR(Uniform River)表示数据集采用Uniform分布的模拟数据集而障碍集采用真实的River数据集;ZR(Zipfian River)表示数据集采用Zipfian分布的模拟数据集而障碍集采用真实的River数据集。所有数据都被映射在200×200的数据空间中。查询点从数据集中随机选取,实验参数详情如表 2所示。

下载CSV 表 2 实验参数 Table 2 Experimental parameters

实验测试算法执行过程中的查询执行时间,每个实验执行100次,最终结果取平均值。实验在不同分布数据集上分别比较R*-V2-RKNN算法和VFR-V2-RKNN算法的性能。

1)测试数据集大小对查询指标的影响。选取数据集大小|P|为5×103~1×105,障碍集大小|O|为1×103k的大小固定为10,图 6图 7分别给出了在UR和ZR数据集|P|的变化对查询时间的影响。如图 6图 7所示,随着|P|的增大,算法R*-V2-RKNN和VFR-V2-RKNN的查询时间呈线性增长,这是因为随着数据量的增大,数据集中数据的密度增大,导致需要更多次的可视性检测和视域可视性判断,视域范围内包含查询点的数据对象增多,而因为VFR-V2-RKNN在树的遍历中的剪枝大大减少了候选集规模,所以算法VFR-V2-RKNN的查询性能明显优于算法R*-V2-RKNN。

Download:
图 6 UR数据集下|P|的大小对查询时间的影响 Fig. 6 Effect of size of |P| on query time under UR date set
Download:
图 7 ZR数据集下|P|的大小对查询时间的影响 Fig. 7 Effect of size of |P| on query time under ZR date set

2)测试障碍集大小对查询指标的影响。选取数据集大小|P|为1×103,障碍集大小|O|为5×103~2.5×104,障碍集中数据从River数据集中随机选取,k的大小固定为10,图 8图 9分别给出了在UR和ZR数据集下|O|的变化对查询时间的影响。如图 8图 9所示,随着|O|的增大,算法R*-V2-RKNN和VFR-V2-RKNN的查询时间呈线性增长,这是因为随着障碍数量的增大,视域范围内障碍的密度不断增大,这就需要在可视性检测中处理更多的障碍,且视域可视性判断的次数也会增加,而算法VFR-V2-RKNN的查询性能明显优于R*-V2-RKNN算法,这是因为VFR-V2-RKNN算法的剪枝规则减少了处理的数据量,在障碍增多的情况下视域可视性检测的时间会增长,但增长幅度明显小于R*-V2-RKNN算法。

Download:
图 8 UR数据集下|O|的大小对查询时间的影响 Fig. 8 Effect of size of |O| on query time under UR date set
Download:
图 9 ZR数据集下|O|的大小对查询时间的影响 Fig. 9 Effect of size of |O| on query time under ZR date set

3)测试k值的变化对查询指标的影响。基于UR数据集进行实验,选取数据集大小|P|为1×103,障碍集大小|O|为1×103图 10给出了k值的变化对查询时间的影响。如图 10所示,随着k值的增大,算法R*-V2-RKNN和VFR-V2-RKNN的查询时间逐渐增大。这是因为随着k值的增大,可视性判断的次数增加。算法R*-V2-RKNN的查询时间增长幅度明显大于算法VFR-V2-RKNN,原因是前者需要检测数据对象查询视域范围内是否包含查询点。对于R*-V2-RKNN来说,因为R*-树中不包含扇形MBR,不能对中间节点进行剪枝,所以随着k值的增大,查询时间急剧增长,而VFR-V2-RKNN算法使用的VFR-树能够对不包含查询点的节点进行有效剪枝,查询性能明显优于R*-V2-RKNN算法。

Download:
图 10 UR数据集下k值变化对查询时间的影响 Fig. 10 Effect of k value on query time under UR date set

基于ZR数据集进行实验,选取数据集大小|P|为1×103,障碍集大小|O|为1×103,查询点q从密集区域数据对象中选取,图 11给出了k值的大小对查询时间的影响。如图 11所示,随着k值的增大,算法R*-V2-RKNN和VFR-V2-RKNN的查询时间逐渐增大,这是因为随着k值的增大,可视性判断的次数增加。但是算法在ZR数据集上的查询性能明显低于UR数据集,原因是数据集密集,访问数据量明显增大,包含在对象视域范围内的数据对象将明显增加,由于算法VFR-V2-RKNN基于剪枝规则,因此查询查询性能明显优于R*-V2-RKNN。

Download:
图 11 ZR数据集上k值变化对查询时间的影响(密集查询点) Fig. 11 Effect of k value on query time under ZR date set(dense query point)

基于ZR数据集进行实验,选取数据集大小|P|为1×103,障碍集大小|O|为1×103,查询点q从稀疏区域数据对象中选取,图 12给出了k值的大小对查询时间的影响。

Download:
图 12 ZR数据集下k值变化对查询时间的影响(稀疏查询点) Fig. 12 Effect of k value on query time under ZR date set(sparse query point)

图 12所示,随着k值的增大,算法R*-V2-RKNN和VFR-V2-RKNN的查询时间逐渐增大,这是因为随着k值的增大,可视性判断的次数增加。此实验结果跟UR数据集类似,但查询时间增长幅度明显大于UR数据集,这是因为随着k的增大,如果查询结果的数量小于k,则R*-V2-RKNN算法需要访问的节点数量基本等于查询数据集的节点数,所以查询时间剧增,而VFR-V2-RKNN算法使用的VFR-树能够对不包含查询点的节点进行有效剪枝,查询性能明显优于R*-V2-RKNN算法。

5 结束语

本文提出一种可视反向视域K最近邻查询算法,将可视性和视域范围同时引入到RKNN查询中,能够增强现实系统、导游系统和视频监控系统中的反向最近邻查询。结合障碍过滤算法和2个障碍剪枝规则给出视域可视性判断算法,并分别基于R*-树和VFR-树得到R*-V2-RKNN和VFR-V2-RKNN算法。在真实数据集和模拟数据集下的实验结果表明,VFR-V2-RKNN的性能明显优于R*-V2-RKNN。下一步将研究连续可视反向视域最近邻查询,即考虑数据点移动情况下的可视反向视域最近邻查询。

参考文献
[1]
TAO Y F, PAPADIAS D, LIAN X. K-Reverse NN search in arbitrary dimensionality[C]//Proceedings of 2004 VLDB Conference. Amsterdam: USA Elsevier, 2004: 744-755.
[2]
GOTOH Y, OKUBO C. A searching method for bichromatic reverse k-nearest neighbor with network voronoi diagram[C]//Proceedings of the 14th International Conference on Advances in Mobile Computing and Multi Media. Singapore Singapore. New York, USA: ACM Press, 2016: 71-78.
[3]
ALLHEEIB N, ADHINUGRAHA K, TANIAR D, et al. Computing reverse nearest neighbourhood on road maps[J]. World Wide Web, 2022, 25(1): 99-130. DOI:10.1007/s11280-021-00969-1
[4]
XU J K, ZHAO Y D, YU G. An evaluation and query algorithm for the influence of spatial location based on RKNN[J]. Frontiers of Computer Science, 2020, 15(2): 1-9.
[5]
BENETIS R, JENSEN C S, KARCIAUSKAS G, et al. Nearest neighbor and reverse nearest neighbor queries for moving objects[C]//Proceedings of International Database Engineering and Applications Symposium. Washington D.C., USA: IEEE Press, 2002: 44-53.
[6]
KANG J M, MOKBEL M F, SHEKHAR S, et al. Continuous evaluation of monochromatic and bichromatic reverse nearest neighbors[C]//Proceedings of the 23rd International Conference on Data Engineering. Washington D.C., USA: IEEE Press, 2007: 806-815.
[7]
CHEONG O, VIGNERON A, YON J. Reverse nearest neighbor queries in fixed dimension[J]. International Journal of Computational Geometry & Applications, 2011, 21(2): 179-188.
[8]
ACHTERT E, BÖHM C, KRÖGER P, et al. Approximate reverse k-nearest neighbor queries in general metric spaces[C]//Proceedings of the 15th ACM International Conference on Information and Knowledge Management. New York, USA: ACM Press, 2006: 788-789.
[9]
LIN J, ETTER D, DEBARR D. Exact and approximate reverse nearest neighbor search for multimedia data[C]//Proceedings of 2008 SIAM International Conference on Data Mining. Philadelphia, PA: Society for Industrial and Applied Mathematics, 2008: 656-667.
[10]
FRANCISCO G, CORRAL A, IRIBARNE L, et al. RKNN query processing in distributed spatial infrastructures: a performance study[C]//Proceedings of International Conference on Model and Data Engineering. Berlin, Germany: Springer, 2017: 200-207.
[11]
GARCIA F, F, CORRAL A, IRIBARNE L, et al. MRSLICE: efficient RKNN query processing in spatial hadoop[C]//Proceedings of International Conference on Model and Data Engineering. Berlin, Germany: Springer, 2019: 235-250.
[12]
LI X G, XIANG T, GUO S W, et al. Privacy-preserving reverse nearest neighbor query over encrypted spatial data[J]. IEEE Transactions on Services Computing, 2021, 1: 1-15.
[13]
PAN X, NIE S L, HU H B, et al. Reverse nearest neighbor search in semantic trajectories for location-based services[J]. IEEE Transactions on Services Computing, 2022, 15(2): 986-999. DOI:10.1109/TSC.2020.2968309
[14]
BUCCAFURRI F, LAX G, NICOLAZZO S, et al. A privacy-preserving localization service for assisted living facilities[J]. IEEE Transactions on Services Computing, 2020, 13(1): 16-29. DOI:10.1109/TSC.2016.2646363
[15]
NUTANONG S, TANIN E, ZHANG R. Visible nearest neighbor queries[C]//Proceedings of International Conference on Database Systems for Advanced Applications. Berlin, Germany: Springer, 2007: 876-883.
[16]
NUTANONG S, E T N, RUI Z. Incremental evaluation of visible nearest neighbor queries[J]. IEEE Transactions on Knowledge and Data Engineering, 2010, 22(5): 665-681. DOI:10.1109/TKDE.2009.158
[17]
GAO Y J, ZHENG B H, CHEN G C, et al. Continuous visible nearest neighbor query processing in spatial databases[J]. The VLDB Journal, 2011, 20(3): 371-396. DOI:10.1007/s00778-010-0200-z
[18]
WANG Y Q, ZHANG R, XU C F, et al. Continuous visible k nearest neighbor query on moving objects[J]. Information Systems, 2014, 44: 1-21. DOI:10.1016/j.is.2014.02.003
[19]
XU H, LI Z C, LU Y S, et al. Group visible nearest neighbor queries in spatial databases[C]//Proceedings of the 11th International Conference on Web-Age Information Management. Berlin, Germany: Springer, 2010: 333-344.
[20]
GAO Y J, ZHENG B H, CHEN G C, et al. Visible reverse k-nearest neighbor query processing in spatial databases[J]. IEEE Transactions on Knowledge and Data Engineering, 2009, 21(9): 1314-1327. DOI:10.1109/TKDE.2009.113
[21]
杨泽雪, 郝忠孝. 空间数据库中连续可视反向最近邻查询[J]. 西南交通大学学报, 2012, 47(3): 451-457.
YANG Z X, HAO Z X. Continuous visible reverse nearest neighbor queries in spatial databases[J]. Journal of Southwest Jiaotong University, 2012, 47(3): 451-457. (in Chinese) DOI:10.3969/j.issn.0258-2724.2012.03.016
[22]
LIU Y S, KONG D H. Continuous visible query for three-dimensional objects in spatial databases[J]. Mathematical Problems in Engineering, 2016(8): 1-12.
[23]
YI S, RYU H, SON J, et al. View field nearest neighbor: a novel type of spatial queries[J]. Information Sciences, 2014, 275: 68-82. DOI:10.1016/j.ins.2014.02.022
[24]
KIM W, SHIM C, HEO W, et al. Moving view field nearest neighbor queries[J]. Data & Knowledge Engineering, 2019, 119: 58-70.
[25]
YI S, SHIM C, CHUNG Y D. Reverse view field nearest neighbor queries[J]. Information Sciences, 2017, 402: 35-49.
[26]
SU I F, CHEN D L, LEE C A, et al. Finding visible kNN objects in the presence of obstacles within the user's view field[J]. ISPRS International Journal of Geo-Information, 2019, 8(3): 151-159.