Page 342 - 《软件学报》2026年第5期
P. 342

王撷阳 等: 基于数据分布的移动对象学习索引及查询算法                                                     2221



                 15.    for each  iter ← 0 to L(keyarray) do
                 16.     if bitmap[iter] = 1 then /*通过  bitmap  跳过空元素*/
                 17.      if keyarray[iter] then  在查询范围内
                 18.          Res ← keyarray[iter] 指向的所有数据点
                 19.     else if keyarray[iter] > max(SearchRange) then
                 20.      return Res
                 21.   移动至下个叶子节点并更新          P
                 22. return Res
                  5.2   基于非均匀网格的最近邻查询

                    面向移动对象的最近邻查询则更为关注具有时间依赖性的最近邻查询研究, 如最快到达的出租车. 基于
                 NUGC_LI 的最近邻查询算法是移动对象数据库中较为重要的查询操作之一, 需要查找与指定对象距离最近的移
                 动对象.
                    最近邻查询在数据库的实际应用中还有一个重要变体, 即                    k 近邻查询, 它的含义是连续查找         k 个距离指定对
                 象最近的移动对象. 在经典的最近邻查询算法中, 研究者们提出了大量类似于剪枝界定深度优先的算法, 希望通过
                 缩小搜索范围提高搜索效率. 但是, 所提出的最近邻查询算法与上述传统最近邻算法相比存在明显优势, 因为存储
                 的一维值由基于位置关系的           NUGC  算法生成, 所以对查询点的搜索区域可以限定在指定网格中, 而学习索引
                 NUGC_LI 的引入使得对于网格的查询时间有效降低, 如算法                4  所示.

                 算法  4. 基于  NUGC_LI 的最近邻查询    NNMO.
                 输入: 查询点   Q, 学习索引   NUGC_LI;
                 输出: 符合范围查询条件的移动对象集合             Res.

                 1.  Res ← ∅
                 2.  SearchQ ← NUGC(Q) /*对查询点进行降维, 得到降维后一维网格编码*/
                 3.  N ← GetRoot(NUGC_LI)
                 4. if N  是空节点 then
                 5.  return Res
                 6. else
                 7.     P ← NUGC_LI.Pointer(N)
                 8.    根据  SearchQ  查询到对应叶子节点更新     P
                 9.     P ← NUGC_LI.Pointer(SearchQ)
                 10.  遍历  SearchQ  网格中所有移动对象点
                 11.   Q min ← MinDistance(Q,网格中任意点)
                 12.  根据指针   P  找到相邻的网格
                 13.  for each  iter ← 1 to 相邻网格数量 do
                 14.   Distance(Q, 相邻网格中任意点)
                 15.   if Distance.value < MinDistance.value then
                 16.    更新 Q min
                 17.    Res ← Q min
                 18. return Res

                    算法  4  实现的最近邻算法同样为“粗过滤−细筛查”的二阶段查询过程, 首先在进行非均匀网格降维的基础上,
   337   338   339   340   341   342   343   344   345   346   347