一种时间依赖路网上的移动对象K近邻查询算法制造技术

技术编号:21400097 阅读:26 留言:0更新日期:2019-06-19 07:17
本发明专利技术公开了一种时间依赖路网上的移动对象K近邻查询算法,包括如下步骤:(1)查询用户发起查询请求;用户需向系统提出查询要求,请求反馈所有满足要求的K个结果;(2)初始化相关信息;(3)确定查询发起的位置、查询时间和最大等待时间;(4)从查询点开始扩展路网,找出若干近邻活跃点;(5)对若干近邻活跃点上的活跃对象进行计算和排序;(6)返回时间最小的前K个活跃对象给用户,作为K近邻查询结果。本发明专利技术设计了高效启发值,并使用了倒排网格索引管理移动对象和辅助启发值的计算。

【技术实现步骤摘要】
一种时间依赖路网上的移动对象K近邻查询算法
本专利技术涉及数据库
,尤其是一种时间依赖路网上的移动对象K近邻查询算法。
技术介绍
随着移动终端的迅猛发展,基于位置的服务(LBS)成为了路网中的重要应用。在LBS中,用户可能会搜索自己感兴趣的地理点(Pointofinterest,POI)(如餐厅、加油站等)以及到这些地理点的路线和所需时间。而实际上,道路的交通时间在很大程度上取决于交通流量,即道路交通状况会随着时间的变化而发生改变。在车辆通行的高峰时期,路网可能会形成堵塞,道路的通行时间会增加,而在凌晨等时间段车辆稀少,道路的通行时间会相应减少。因此,道路的通行时间不是固定的,而是一个关于时间的函数,现在有关静态路网的查询没有考虑到这个问题。路网通行时间的变化给计算最短路径和估计路线时间带来了巨大挑战,但是考虑交通状况对提高基于位置的服务质量至关重要,也具有更高的实际参考价值,因此在这种情况下,可以将路网建模为时间依赖路网。与静态路网模型不同的是,在时间依赖路网中,道路的权值(通过这条路的时间)随一天之中时间的变化而变化。因此在寻找K近邻等查询问题中,查询结果取决于查询发起的时间。查询发起的时间不同,即使是相同的查询,查询结果也可能不同。时间依赖路网中的K近邻查询是指用户在某一时刻发起查询,查找满足条件且能最快到达的K个对象,但大多数现有工作只是针对静态兴趣点(如餐厅,加油站等),没有考虑到移动兴趣点的情况,但查询移动兴趣点K近邻在日常生活中有非常大的需求量,例如生活中的一种场景:一位用户在路口想要寻找一辆能最快到达自己的出租车,假设有十辆出租车可用,出租车公司需要计算哪一辆车到该用户的最短路径所需时间较少,遂派单给该车辆。从这个例子中可以发现,与静态对象K近邻查询算法TD-KNN不同的是,本专利技术提出的算法旨在针对查询时间依赖路网下的移动对象K近邻。
技术实现思路
本专利技术所要解决的技术问题在于,提供一种时间依赖路网上的移动对象K近邻查询算法,设计了高效启发值,并使用了倒排网格索引管理移动对象和辅助启发值的计算。为解决上述技术问题,本专利技术提供一种时间依赖路网上的移动对象K近邻查询算法,包括如下步骤:(1)查询用户发起查询请求;用户需向系统提出查询要求,请求反馈所有满足要求的K个结果;(2)初始化相关信息;(3)确定查询发起的位置、查询时间和最大等待时间;(4)从查询点开始扩展路网,找出若干近邻活跃点;(5)对若干近邻活跃点上的活跃对象进行计算和排序;(6)返回时间最小的前K个活跃对象给用户,作为K近邻查询结果。优选的,步骤(2)中,初始化相关信息具体为:使用全天道路通行时间的最小值作为权值,在内存中创建反向时间依赖路网;建立倒排网格索引,将路网顶点依据其坐标映射到各自的网格单元中。优选的,步骤(4)中,从查询点开始扩展路网,找出若干近邻活跃点具体为:扩展过程中给路网中每个顶点都赋予启发值,代表它们与最近移动对象距离的乐观估计,以启发值从小到大的顺序访问,找到若干近邻活跃点并存放于临时优先队列中。优选的,步骤(5)中,对若干近邻活跃点上的活跃对象进行计算和排序具体为:对步骤(4)中产生的近邻活跃点,读取其上的活跃对象和它们之间的距离,计算每个活跃对象到查询点的时间,并以该时间排序存放于另一优先队列中,一旦该队列第K个对象的时间小于步骤(3)中新添加活跃点的时间,步骤(3)停止。本专利技术的有益效果为:(1)针对以往研究假设移动对象恰好在路网顶点上的不足,提出一种新的移动对象映射方法,使得最终结果更加接近真实值;(2)设计了合适的网格索引结构来管理移动对象并辅助启发值的计算;(3)算法采用增量式网络扩展和A*算法来确保有效的剪枝和更快的响应时间,并在提出的索引结构基础上设计选取了合理的启发值以指导路网的高效扩展。附图说明图1为本专利技术的算法流程示意图。图2为本专利技术的活跃点和活跃对象示意图。图3为本专利技术网格索引示意图。图4为本专利技术的启发值计算示意图。具体实施方式一种时间依赖路网上的移动对象K近邻查询算法,包括如下步骤:(1)查询用户发起查询请求;用户需向系统提出查询要求,请求反馈所有满足要求的K个结果;(2)初始化相关信息;(3)确定查询发起的位置、查询时间和最大等待时间;(4)从查询点开始扩展路网,找出若干近邻活跃点;(5)对若干近邻活跃点上的活跃对象进行计算和排序;(6)返回时间最小的前K个活跃对象给用户,作为K近邻查询结果。如图2所示,说明了活跃点和活跃对象的定义和关系。假设m是在路径e(u,v)上向顶点v移动的对象,则称v是活跃点,并称m是顶点v上的活跃对象。有活跃对象的顶点称为活跃点,反之为非活跃点。在图2中,m在边e(A,B)上由B移动向A且距离A点的偏移量为o,则m是活跃点A上的一个活跃对象,B点和C点均为非活跃点。从m点到任何顶点u的最短路径距离为m到v的距离加上v到u的最短路径距离,即d(m,u)=o+d(v,u)。我们的方法保留了偏移量o并将其应用到之后的最快路径的计算中,所以结果更加接近真实值。我们为每个活跃点设计一个结构来保存该点上的活跃对象。假设活跃点V上有两个活跃对象m1和m2,它们距离V的距离分别为10和20,则活跃点V拥有两个属性:(1)Moving_Objects,代表V点上的活跃对象。(2)Offset,代表该活跃对象相对于V点的偏移量。如图3所示,说明了路网上普通顶点和活跃点的映射方法和倒排网格索引结构。由于网格可以很好地利用空间特性,因此我们为移动对象设计网格索引。该索引用均匀的网格将平面区域划分成大小相等的若干块,每一块区域唯一对应一个单元格,对于空间中的点x,函数index(x)可以检索到包含点x的网格单元,我们通过组合倒排索引和空间网格划分来设计倒排网格索引以管理空间对象的位置。首先,我们给出倒排网格索引的定义。倒排网格索引:给定一个由欧式空间中一组数据点组成的大规模数据集P。每个数据点p∈P由(p.x,p.y)表示。每个维度上每个单元格的范围为δ。网格单元c[i,j]表示第i列和第j行的单元格,最左下角单元格为c[0,0]。每个单元格维护一个对象列表,其中包含封闭活跃点的标示符。根据规则,点p落在单元格δ是一个参数,我们可以根据不同数据集的密集程度做出相应调整。不失一般性,我们假设服务空间是一个正方形,我们可以将空间划分为大小为δ*δ的规则网格单元。我们将普通顶点和活跃点均映射到网格中,利用网格单元来进行管理,但每个单元只保存落入该单元的活跃点信息,每个单元中活跃点的信息存储在对象数组中,对象标识是这个数组的索引。图3显示了一个通过4*4的单元格网格索引并使用键值对来进行管理的例子,例如<c1,{a1,a2,a3}>。算法执行阶段分为预处理和查询两部分:预处理阶段:(1)使用全天道路通行时间的最小值作为权值,在内存中创建路网图的反向时间依赖路网。(2)建立倒排网格索引,将路网顶点依据其坐标映射到各自的网格单元中。查询阶段:在路网的扩展搜索中,我们希望有机会成为q最近邻的POI获得最大的优先扩展权。对于顶点来说,我们希望距离最近POI近的顶点能够被优先扩展,我们利用网格索引来计算每个顶点距离与自己最近POI之间的距离。下面结合图4介绍启发值的计算本文档来自技高网
...

【技术保护点】
1.一种时间依赖路网上的移动对象K近邻查询算法,其特征在于,包括如下步骤:(1)查询用户发起查询请求;用户需向系统提出查询要求,请求反馈所有满足要求的K个结果;(2)初始化相关信息;(3)确定查询发起的位置、查询时间和最大等待时间;(4)从查询点开始扩展路网,找出若干近邻活跃点;(5)对若干近邻活跃点上的活跃对象进行计算和排序;(6)返回时间最小的前K个活跃对象给用户,作为K近邻查询结果。

【技术特征摘要】
1.一种时间依赖路网上的移动对象K近邻查询算法,其特征在于,包括如下步骤:(1)查询用户发起查询请求;用户需向系统提出查询要求,请求反馈所有满足要求的K个结果;(2)初始化相关信息;(3)确定查询发起的位置、查询时间和最大等待时间;(4)从查询点开始扩展路网,找出若干近邻活跃点;(5)对若干近邻活跃点上的活跃对象进行计算和排序;(6)返回时间最小的前K个活跃对象给用户,作为K近邻查询结果。2.如权利要求1所述的时间依赖路网上的移动对象K近邻查询算法,其特征在于,步骤(2)中,初始化相关信息具体为:使用全天道路通行时间的最小值作为权值,在内存中创建反向时间依赖路网;建立倒排网格索引,将路网顶点依据其坐标映射到各自的网格单元中。3...

【专利技术属性】
技术研发人员:秦小麟张彤李星罗陈骏岭鲍斌国
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1