本发明属于通信技术领域,尤其涉及一种基于语义轨迹大数据的反向最近邻查询方法及装置。
背景技术:
随着移动设备和社交网络普及和应用,产生了大量富含语义的轨迹数据(即语义轨迹)。语义轨迹包括一些列空间文本点,每个空间文本点包括空间位置以及关键词集合。所述关键词集合为该空间文本点的语义标签。由于语义轨迹中蕴含丰富的知识,语义轨迹检索已经引起了商业组织和研究机构的高度关注。关于语义轨迹检索的现有研究中主要关注k最近邻查询(knn,k-nearestneighbor)。反向最近邻查询作为重要查询类型之一,在语义轨迹上的相关研究上并未引起足够的重视。在语义轨迹上的反向k最近邻查询(rknnst,reversek-nearestneighbor)是查找那些将查询q作为其k最近邻查询结果之一的语义轨迹的集合。
rknnst对许多应用具有重要意义,如本地推荐,新站点选择,影响集的发现等。以旅游导游推荐为例,每位导游都各有擅长的领域(即标签),如宗教文化,自然美景,购物消费等。每个景点也都具有自己相应的特征。旅客可以事先指定预期的访问路线。导游希望找到那些将自己视为预进行或正在进行的旅游路线最佳导游选择的路线主人(即游客)。“最佳导游选择”是指该导游是这些景点的专家,且距离路线主人最近。另一个rknnst应用实例是确定新购物中心的位置。每个用户拥有一条消费轨迹。轨迹上的每个位置与用户购买的消费品关联。投资者想知道一个新选址的购物中心是否能最大限度地满足消费者在购买品种和空间邻近性方面的需求。
为了使rknnst的查询结果更加具体确切,在语义轨迹上进行rknnst查询时,将与查询q的关键词相关的语义轨迹的子轨迹集合作为查询结果,需要同时考虑轨迹中对应全部空间文本点的全局信息和对应每个空间文本点的局部信息,才能得到准确具体的查询结果。然而,现有技术中对语义轨迹的空间索引,例如str-tree,mv3r-tree,mtsb-tree关注的仅是全局空间特征,空间文本索引如ir树和i3仅考虑的是空间文本对象的快照位置,不能满足在语义轨迹上实现rknnst的需求。
技术实现要素:
本发明实施例提供了一种基于语义轨迹大数据的反向最近邻查询方法及装置,能够实现同时考虑轨迹中对应全部空间文本点的全局信息和对应每个空间文本点的局部信息,进而实现对语义轨迹的最近邻查询。
本发明实施例的第一方面,提供了一种基于语义轨迹大数据的反向最近邻查询方法,包括:
根据轨迹数据集建立轨迹索引imc树,其中,所述imc树包括倒排列表与多个mc树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个mc树与所述关键字词汇表中的每个关键字一一对应建立,所述mc树包括用于存储轨迹局部位置的轨迹摘要;
根据查询数据集建立查询索引wibr树;
通过对imc树与wibr树进行交替访问,并且在访问过程中根据imc树中的节点与wibr树中的节点之间的距离边界,对imc树中的节点与wibr树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述imc树中将查询q作为最近邻查询的最小相关子轨迹。
本发明实施例的第二方面,提供了一种基于语义轨迹大数据的反向最近邻查询装置,包括:
轨迹索引建立模块,用于根据轨迹数据集建立轨迹索引imc树,其中,所述imc树包括倒排列表与多个mc树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个mc树与所述关键字词汇表中的每个关键字一一对应建立,所述mc树包括用于存储轨迹局部位置的轨迹摘要;
查询索引建立模块,用于根据查询数据集建立查询索引wibr树;
处理模块,用于通过对imc树与wibr树进行交替访问,并且在访问过程中根据imc树中的节点与wibr树中的节点之间的距离边界,对imc树中的节点与wibr树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述imc树中将查询q作为最近邻查询的最小相关子轨迹。
本发明实施例的第三方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的基于语义轨迹大数据的反向最近邻查询方法的步骤。
本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于语义轨迹大数据的反向最近邻查询方法的步骤。
本发明实施例与现有技术相比的有益效果是:通过将轨迹数据集中各轨迹包括的关键字生成关键字词汇表,并将所述关键字词汇表构成倒排列表,并且通过为每个mc树的节点设置轨迹摘要,能够保留语义轨迹的全局与局部空间文本信息,具体地,每个mc树存储了轨迹空间的全局空间文本信息,mc树的各节点存储局部空间文本信息,从而能够实现语义轨迹上的反向最近邻查询并能够得到更加具体确切的查询结果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的语义轨迹进行反向最近邻查询的一般示例的示意图;
图2为本发明一个实施例提供的一种基于语义轨迹大数据的反向最近邻查询方法的流程示意图;
图3为imc树的结构示意图;
图4为图3中根节点e1中的轨迹摘要的结构图;
图5为本发明一个实施例提供的一种基于语义轨迹大数据的反向最近邻查询装置的结构框图;
图6为本发明实施例五提供的一种终端设备的示意框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
参考图1,图1为本发明实施例提供的语义轨迹进行反向最近邻查询的一般示例的示意图。
t1,t2和t3是三条语义轨迹。每个位置都与若干关键字关联。轨迹上每个空间文本点的空间和文本特征分别如图1(a)和图1(b)所示。图1(a)中的三角形是查询q1,q2和q3。图1(c)显示了各查询与各轨迹之间的空间距离和相关距离。从空间特征来看,q1与t2最近。但是,q1的r1nnst是{t1},这是因为t1与查询q的相关性距离同时考虑了关键字相关性和空间距离的邻近性。
结合图1所示的一般示例给出语义轨迹的反向最近邻查询中的相关定义如下:
定义1(语义轨迹)语义轨迹t被形式化地表示为一系列空间文本点,即t=(p1,p2,...,pn)。pi是一个空间文本点,即pi=(l,ws),其中l=(x,y)是空间位置,ws是位置l上标记的关键词集合。轨迹用于表示语义轨迹。t的子轨迹表示
定义2中给出轨迹t和查询q相关的定义。
定义2(相关)给定一条轨迹t和一个查询q=(l,ws),如果
如图1所示,轨迹t1,t2和t3与查询q1相关。显然,如果轨迹t和查询q是相关的,则存在多个与q相关的子轨迹。因此,我们定义最小相关子轨迹。
定义3.(最小相关子轨迹)给定子轨迹tm与查询q,tm是最小的当且仅当
在图1中,
我们在定义4中给出轨迹和查询之间的相关距离的正式定义。
定义4(相关距离)假定mcs是轨迹t相对于查询q的最小相关子轨迹的集合。t和q之间的相关距离为
相关距离是对称的,即cd(t,q)=cd(q,t)。直观上,定义4指的是最小相关子轨迹上的每个点到查询q的距离和的最小值。如图1所示,
当轨迹t上距离q的最近点附着的关键字集合包括查询中的所有关键字q.w时,相关距离cd是最小的。相反的,当q.ws散落于整条轨迹上时,最小相关子轨迹是整个轨迹时,此时的cd距离是最大的。因此,定理1形式化的表示出了cd的下限和上限。
定理1
对于轨迹t和查询q,
在定理1中,cd的上限即距离和
定理2.
对于轨迹t和查询q,
在正式定义反向最近邻查询rknnst之前,首先定义k相关最近邻。
定义5(k相关最近邻,kncn)给定一个轨迹t,co是与t相关的一组空间文本对象。当且仅当
定义6.(最近邻查询,rknnst)给定一个查询q,rknnst检索k条轨迹,这k条轨迹视查询q为k相关最近邻,形式上定义为rnnk(q)={t|q∈ncnk(t)}。
rknnst的查询目标:给定一个查询集合qs和一个轨迹集合ts,我们的目标是从ts中检索轨迹,这些轨迹的k相关最邻近中包括q(∈qs)。算法的输出是一组最小相关子轨迹,其形式是{(tid,s,e,cd)},其中tid是轨迹标识,s和e是轨迹t上的开始和结束位置,cd是tid和q之间的相关距离。
表1为主要符号的解释。
表1:符号的解释
参考图2,图2为本发明一个实施例提供的一种基于语义轨迹大数据的反向最近邻查询方法的流程示意图。本实施例中的方法,可以包括:
步骤101、根据轨迹数据集建立轨迹索引imc树,其中,所述imc树包括倒排列表与多个mc树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个mc树与所述关键字词汇表中的每个关键字一一对应建立,所述mc树包括用于存储轨迹局部位置的轨迹摘要。
所述imc树即指代轨迹索引树,为了描述方便,上下文中均以imc为轨迹索引树的代称。
所述mc树是一棵扩展的m-tree,与传统的m-tree的区别是在结点中扩展存储轨迹局部位置的轨迹摘要。
所述mc树的内部节点与叶节点均包括轨迹摘要,所述轨迹摘要包括:轨迹签名摘要sig与轨迹局部位置摘要skt;
轨迹签名摘要sig,为位向量,第i位表示该mc树节点的子树是否包含轨迹数据集中编号为i的轨迹;
轨迹局部位置摘要skt,为轨迹签名摘要sig指向的各轨迹中包括该mc树对应的关键字的各空间文本点的位置编码组成的线性四分树。该线性四分树以b+-树存储相应的位置编码。
可选地,mc树的结构如下:mc树的叶节点存储轨迹对象和指向父节点中心轨迹的指针or。轨迹对象包括轨迹标识、轨迹ot和与父节点中心轨迹or的空间距离d(ot,or)。mc树的内部节点存储一组中心轨迹集合。每一条中心轨迹or=(tr,pt,d,r,s)。tr是轨迹标识;pt是指向覆盖树mc-tree(or)的指针;d=d(tr,p(tr))是tr与父节点的中心轨迹p(tr)之间的空间距离;r是覆盖半径,其中
参考图3,图3为imc树的结构示意图,图3(a)表示关键字w1对应的mc树(即,图中左侧第一个mc树),将其表示为二维空间中的可视化图形如图3(b)所示,其中每个对象表示轨迹。根节点的中心轨迹集合是{e1(o1),e2(o4),e3(o6)}。o1是e1的中心轨迹,其覆盖半径为2。因此,e1中的任意一条轨迹(即,o2.t2或o3.t3)与中心轨迹(即o1.t1)的空间距离均不大于2。参考图4,图4为图3中根节点e1中的轨迹摘要的结构图。假设有9个轨迹,sig表示在e1包含t1,t2和t3(从左向右位序与轨迹序列对应)。位置摘要skt指向一个线性四分树,树中索引的数字是轨迹t1,t2和t3通过的且位置包含关键字w1的莫顿单元码。
步骤102、根据查询数据集建立查询索引wibr(wordinvertedbitmapr-tree,文字倒排位图r树)树。
wibr树的结构属于现有技术,在本实施例中wibr树包括若干个查询节点,每个查询节点包括查询节点的聚集信息,例如,查询节点中关键字的最小数量#iwq,查询节点下的查询数量#q。
步骤103、通过对imc树与wibr树进行交替访问,并且在访问过程中根据imc树中的节点与wibr树中的节点之间的距离边界,对imc树中的节点与wibr树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述imc树中将查询q作为最近邻查询的最小相关子轨迹。
所述距离边界包括相关距离的下限与上限。利用下限和上限可以较早的剪枝掉imc树和wibr树中的一些节点,减少在查询过程中节点的访问。一般来说,imc树和wibr树交替访问时,正在访问的节点会出现以下三种情况:情况1,imc树中的节点集合et与查询q;情况2,wibr树中的节点eq和轨迹t;情况3,imc树中的节点集et和wibr树中的节点eq。我们分别定义三种情况下距离的下限和上限。
当访问imc树时,获得与查询所需的关键字q.ws相关联的若干mc树的根节点集合et。
定义7.(最小相关距离)
下面分别讨论在上述3种情况下最小相关距离的具体值。
情况1:我们将et与q之间的最小相关距离表示为mincdet_q。对于et中的每个节点et,可以从et节点中的位置摘要构建虚拟四分树,在虚拟四分树中检索到查询q的空间最近单元记为cnn。查询q到cnn的距离记为d(q,cnn)。在情况1下,mincdet_q可以按照定理4进行计算。
定理4.
显然,
定理4的下限是松散的,我们可以通过步骤2021至步骤2024的算法进一步提升下限。
情况2:当从imc树检索到一条具体的轨迹t时(如中心轨迹),假设正在访问wibr树中的节点eq。
t和eq之间的最小相关距离表示为
定理5.设pnn∈t是空间上距离eq.mbr最近的点,则
根据定理5计算的
定理6.假设mct是t相对于eq的关键字集合的最小相关子轨迹的集合,则,
情况3:访问wibr树和imc树的一般情况是,imc树的当前访问节点集et和wibr树上的当前访问节点eq。与定理4类似,我们通过每个节点et∈et中的位置摘要找到eq.mbr的空间最近单元,计算
定理7.
定理7计算的下限也比较松散,可以通过下述实施例中步骤2021至步骤2024的算法进一步优化。
我们在三种情况下分别定义相关距离的上限。
定义8.(最大相关距离)
maxcd是轨迹et与eq中的查询之间的相关距离上限,即最大相关距离。根据定理1,一个查询和一条轨迹之间的相关距离的上限是它们的空间距离。情况1:
对于imc-树中的访问节点et和查询q,et和q之间的最大相关距离表示为maxcdet-q,可以采用定理8计算其值。
定理8.
证明:根据定理1,cd(t,q)的上限是空间距离d(q,t)。
情况2:
轨迹t和查询节点eq之间的最大相关距离分为松散的上限和严格的上限。
定理9.
·松散上限:
·严格上限:
证明:maxcdt-eq的证明非常简单。因此,我们着重证明最大相关距离tmaxdt_eq的正确性。利用eq.ws,可以获得最小相关子轨迹集合mcs。假设tmaxdt_eq是在子轨迹
对于第一种情况,查询q'的最小相关子轨迹是
证毕。
最小最大相关距离是轨迹集合et和查询集合eq之间的另一个重要距离。我们在定义9定义了中et和eq之间的最小最大相关距离mnxcd。
定义9.(最小最大相关距离)
我们将情况2中的最小最大相关距离表示为
定理10.
ct是t的质心,而mnxd(ct,eq)是ct和矩形eq.mbr之间的传统最小最大距离;qi'是t上的pi点计算mnxd(qi',eq)时在eq.mbr上的对应点。cq'是虚拟点q1',...,qi',...,qn'(i∈[1,n])的质心。
证明:
(1)找到轨迹t的质心ct,查询q'∈eq,使得d(ct,q')<mnxd(ct,eq)。我们想证明eq中存在一个点q',使得cd(t,q')<d(t,ct)+n×mnxd(ct,eq)。已知
(2)对于在t上的每个点pi,我们可以从eq.mbr中找到一个点qi'以计算mnxd(qi',eq)。然后,基于eq.mbr上的这n个虚拟点可以计算质心cq'。很容易知道d(cq',pi)≤d(qi',pi)+d(cq',qi')。
mnxcdt-eq是较小的一个。
可选的,可采用梯度下降法来计算近似的质心,使得d(t,ct)和
推论1:对于一个轨迹t,可以从eq上找到一个点q'使得
我们可以使用相关的子轨迹集合mct进一步缩小最小最大相关距离。
定理11.
情况3.给定wibr-tree中的一个节点eq和imc-tree中的一个节点集et,et和eq的最大相关距离表示为
定理12.
证明:根据定理1,
证毕。
通过将定理10中的
定理13.
证明:对于一个节点et∈et,根据推论1,我们知道
为了提高查询效率,我们期望尽可能早地访问必要的节点,尽可能少的访问不必要的节点。在访问imc树期间,我们期望imc树中更少的节点被插入到et中,这样可以减少了wibr树的访问次数。
基于以上的想法,我们提出了若干访问规则(即修剪规则和访问规则)。规则1是根据查询中文本要求中隐含的and语义提出的。结合优先查询队列queq和查询q的空间特征,我们提出规则2~规则6。
每个关键字w指向imc树中的一棵mc树。从q.ws中的每个关键字对应的mc树根获得一个轨迹签名etw.sig,令
规则1.假设etw'是在mc树中与关键字w'对应的正在被检查的节点,如果
下述步骤202中,即采用规则1对mc树中的访问节点进行修剪。如果交集为空,则修剪该节点,这意味着任何轨迹都不包含查询q中的所有关键字。
除规则1之外,可以使用步骤20331至步骤20333的算法检查是否可剪枝et。如果et可被修剪,则我们可以直接跳过et的所有孩子节点。如果et必须被访问,则et的子节点被直接访问,这样wibr树的访问就可以提前终止。接下来,步骤20331至步骤20333的算法具体涉及的4条修剪规则(即规则2到规则5)和1条访问规则(即规则6)。
我们观察到,如果存在k个查询,其与轨迹t的相关距离小于cdq,t,也就是说
定理14.给定节点eq∈queq和imc树中的节点et,如果
证明:如果
当et是叶节点时,定理14也成立。但是,如果et是叶节点,则et中的轨迹是确定的。因此,可以计算相关距离来代替mincdet_q。因此,可以得到推论1。
推论1.如果maxcdt_eq<cd(t,q)并且|eq|≥k,则轨迹t不是查询q的rknnst。
根据定理14和推论1,我们提出了规则2。
规则2(et的剪枝规则):给定一个查询节点eq∈queq并且|eq|≥k
规则2.1:对于一个轨迹节点et,如果
规则2.2:对于一条轨迹t,如果
规则2.1要求eq中的每个查询都比查询q距离et中的轨迹更近。此条件过于严格。因此,我们放宽了这个条件,考虑查询分散在不同查询节点中的情况。
定理15.给定节点et,如果k个节点eq(∈queq)满足
证明:
定理15只考虑了queq中的查询。回想et.candk中也保存了一些候选查询。结合queq和et.candk,我们提出了修剪规则3。
规则3(et的修剪规则):给定imc树中的节点et,假定num1是queq中与et的最小最大相关距离小于mincdet_q的节点数目,num2是et.candk中与et的最大相关距离小于mincdet_q的节点数目。如果num1+num2≥k,则修剪et。
如果et被修剪掉了,我们使用et作为一个锚点采用传统m树的空间特征修剪在同一队列中的其他节点。假设修剪过的et是在队列ew中,则规则4的描述如下:
规则4(est的修剪规则)如果使用规则2.1通过eq修剪掉了et,则与et同属于一个队列ew的其他节点est(∈ew),如果满足
证明:根据传统m-树的特征,
mincdet_q是根据定理4和步骤2021至步骤2024的算法计算的mincdet_q中的最大值。每个队列ew中的元素都升序排序。因此,随着剪枝节点et从队列ew中弹出,mincdet_q增加。也就是说,当est是ew的队头,从新的队头计算mincd'et_q,则
相似的,我们可以获得规则5。
规则5.(est的修剪规则)假定由规则3剪枝了et。对于另一个节点es,est和et位于同一队列ew中。num1是queq中满足
注意规则4和规则5并不会导致节点的冗余访问。具体来讲,当规则2或规则3检查et时,已经计算了
规则2到规则5的作用是尽量少地访问imc树中的节点。另一方面,如果我们知道et必须被访问,则不需要遍历wibr树。换句话说,步骤2031至步骤2034的算法的循环可以较早地被中断。让我们考虑一个极端的情况:
规则6.(et的访问规则)假设eqm是queq中的第m个项目,如果满足
基于imc树和wibr树的反向最近邻查询方法命名为dota算法,dota算法是一种基于双树(即imc树和wibr树)交替访问的分支定界算法。基本过程是从imc树访问开始,wibr树访问被嵌入到了imc树中的一个的节点访问中。为了提高查询效率,减少结点的访问量,在节点访问期间一个索引中的节点用于修剪另一个索引中的节点。
具体而言,使用wibr树索引的查询,检查imc树节点下的轨迹是否可被剪枝或作为候选结果(可参考规则2、规则3以及规则6)。另一方面,当我们确信wibr-树中某节点中的查询不可能是imc树节点下轨迹的最近相关邻居时,wibr树中的这个节点可以被剪枝。此外,枚举一个查询的所有相关子轨迹是一项非常耗时的工作。我们在步骤301至步骤303提出了一种有效地找到相关子轨迹的智能算法。
一个实施例中,步骤103可以包括:
步骤201、将查询q中的每个关键字对应的mc树的根节点插入到队列集set中,队列集set的各队列与各mc树一一对应,每个队列包括对应的mc树中的访问节点;
步骤202、判断各mc树的根节点的轨迹签名摘要的交集是否为空:若不为空,则将队列集set中各队列的队头构成imc树节点集合et,并确定imc树节点集合et中每个队头与查询q的最小相关距离,将最小相关距离最小的队头作为当前访问节点进行访问,为当前访问节点建立用于存储k个候选最近邻查询的查询排序列表candk;
可选地,在一个实施例中,所述确定imc树节点集合et中每个队头与查询q的最小相关距离,可以包括:
步骤2021、将et中每个队头与查询q之间的最小相关距离进行加和,得到第一距离总和sumd;
步骤2022、在队列集set的每一个队头的位置摘要skt上以查询q为中心以所述第一距离总和sumd为半径的搜索区域内进行搜索,获取所述搜索区域内各位置编码对应的各空间文本点的关键字数量#n以及各空间文本点与查询q之间的距离d;
步骤2023、选取两个空间文本点,将所述两个空间文本点的关键字数量#n进行加和得到数量总和n,若数量总和n小于查询q的关键字数量,则选取另一空间文本点,将另一空间文本点的关键字数量与数量总和进行相加得到新的数量总和n,直至数量总和n大于等于查询q的关键字数量,则将选取的各空间文本点与查询q之间的距离d进行求和得到第二距离总和newd;
步骤2024、若第二距离总和newd大于每个队头与查询q的最小相关距离mincdet_q,则将每个队头与查询q的最小相关距离mincdet_q更新为第二距离总和newd。
步骤2021至步骤2023的算法,为对定理4的进一步优化。提高定理4的下限。
步骤203、若当前访问节点为内部节点,则以最小最佳原则访问wibr树,根据当前访问节点与查询q之间的最小相关距离、当前访问节点与wibr树访问节点之间的最小相关距离和查询排序列表,对当前访问节点进行修剪并更新当前访问节点的查询排序列表candk:若当前访问节点被修剪,则根据当前访问节点与查询q之间的最小相关距离以及当前访问节点所在队列中的其他节点与wibr树访问节点之间的最大相关距离,修剪当前访问节点所在队列中的其他节点,可选地,可根据上述规则4和规则5对所述其他节点进行修剪;若当前访问节点未被修剪,则访问当前访问节点的每个孩子节点,并根据每个孩子节点的轨迹签名摘要对每个孩子节点进行修剪;若当前访问节点的孩子节点未被修剪,则将当前访问节点的查询排序列表candk复制给孩子节点,并根据孩子节点分别与k个候选查询之间的最大相关距离更新查询排序列表candk中存储的最大相关距离,将孩子节点加入队列集set中当前访问节点所在的队列中;
可选地,所述根据当前访问节点与查询q之间的最小相关距离、当前访问节点与wibr树访问节点之间的最小相关距离和查询排序列表,对当前访问节点进行修剪并更新当前访问节点的查询排序列表candk,可以包括以下步骤:
步骤2031、若当前访问节点与查询q的最小相关距离大于当前访问节点的查询排序列表candk中的最大相关距离,则将当前访问节点进行修剪;
步骤2032、若当前访问节点与查询q的最小相关距离小于等于当前访问节点的查询排序列表candk中最大相关距离,则将wibr的根节点插入查询队列queq;
步骤2033、根据当前访问节点与wibr树访问节点之间的最大相关距离、当前访问节点与查询q之间的最小相关距离以及当前访问节点与查询q之间的最大相关距离,对当前访问节点进行修剪并返回当前访问节点的状态,所述状态包括被修剪或被访问;
可选地,在一个实施例中,步骤2033,可以包括:
步骤20331、若查询队列queq中存在至少一个查询节点eq与当前访问节点et的最大相关距离小于当前访问节点与查询q的最小相关距离,并且所述查询节点eq包括多于k个具体查询,则将当前访问节点修剪。可参考上述规则2的说明。
步骤20332、确定查询队列queq中节点eq与当前访问节点的最小最大相关距离小于当前访问节点与查询q的最小相关距离的节点的第一数量num1以及查询排序列表et.candk中各候选查询的最大相关距离小于当前访问节点与查询q的最小相关距离的查询的第二数量num2,若所述第一数量num1与所述第二数量num2的总和大于k,则将当前访问节点修剪。可参考上述规则3的说明。
步骤20333、确定查询队列queq中查询节点与当前访问节点的最小相关距离大于当前访问节点与查询q的之间的最大相关距离maxcdet_q的节点的第三数量,若所述第三数量小于k,则将当前访问节点视为被访问。可参考上述规则6的说明。
步骤2034、若当前访问节点未被确认为被修剪或被访问,则比较et.candk中第k项的最大相关距离maxcd与queq的第一项的最小相关距离mincd,若前者小于后者,则退出wibr访问,若前者大于等于后者,则将wibr树访问节点eq的孩子节点插入队列queq或将eq下的具体查询更新当前访问节点的查询排序列表candk。
步骤204、若当前访问节点为叶节点,则确定当前访问节点中的每个轨迹t与查询q之间的相关距离cdt,q:若轨迹t与查询q之间的相关距离cdt,q大于当前访问节点的查询排序列表candk中的最大相关距离,则轨迹t被修剪;若轨迹t与查询q之间的相关距离cdt,q小于等于当前访问节点的查询排序列candk中的最大相关距离,则根据所述相关距离cdt,q更新查询排序列表candk的最大相关距离,并将轨迹t与更新后的查询排序列表candk加入队列集set中当前访问节点所在队列中。
步骤205、若当前访问节点为一条具体的轨迹t,则以最小最佳原则访问wibr树,更新所述查询结果rnnk(q)。
步骤206、按照最小相关距离的升序依次将imc树节点集合et中的其他队头作为当前访问节点进行访问;每个队列的队头访问结束后将排在队列第二位的访问节点填充入队头,以此类推,直至将队列集set中的各访问节点访问完毕。
一个实施例中,步骤204中,所述确定当前访问节点中的每个轨迹t与查询q之间的相关距离cdt,q,可以包括以下步骤:
步骤301、为每一个轨迹t创建相应的关键字-位置倒排文件;其中,所述关键字-位置倒排文件中的每个元素均包含一个关键字和一个已排序的位置列表,所述位置列表包括轨迹上包含该关键字的位置。
步骤302、通过与查询q关键字相等数量的指针记录当前检查的位置。各指针分别指向的位置中,最小位置为查询q的第一相关子轨迹的开始位置,最大位置为查询q的第一相关子轨迹的结束位置,确定所述第一相关子轨迹与查询q之间的第一相关距离作为所述相关距离cdt,q。
步骤303、指向最小位置的指针移动到下一个不小于当前最大位置的位置,则当前各指针分别指向的位置中,最小位置为查询q的第二相关子轨迹的开始位置,最大位置为查询q的第二相关子轨迹的结束位置,计算所述第二相关子轨迹与查询q之间的第二相关距离,将所述第二相关距离与所述相关距离cdt,q进行比较,若所述第二相关距离小于所述相关距离cdt,q,则将所述第二相关距离作为所述相关距离cdt,q,以此类推,直至各指针中任一指针指向位置列表的末尾。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参考图5,图5为本发明一个实施例提供的数据中心能耗设备调度装置的示意图。本实施例中的数据中心能耗设备调度装置,可以包括:
轨迹索引建立模块401,用于根据轨迹数据集建立轨迹索引imc树,其中,所述imc树包括倒排列表与多个mc树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个mc树与所述关键字词汇表中的每个关键字一一对应建立,所述mc树包括用于存储轨迹局部位置的轨迹摘要;
查询索引建立模块402,用于根据查询数据集建立查询索引wibr树;
处理模块403,用于通过对imc树与wibr树进行交替访问,并且在访问过程中根据imc树中的节点与wibr树中的节点之间的距离边界,对imc树中的节点与wibr树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述imc树中将查询q作为最近邻查询的最小相关子轨迹。
参考图6,图6为本发明一个实施例提供的终端设备的示意图。如图6所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52。所述处理器50执行所述计算机程序52时实现上述以终端设备为执行主体的实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器50执行所述计算机程序52时实现上述实施例中各模块/单元的功能,例如图5所示模块401至403的功能。
示例性的,所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在终端设备5中的执行过程。例如,所述计算机程序52可以被分割成轨迹索引建立模块、查询索引建立模块与处理模块,各模块具体功能如下:
轨迹索引建立模块,用于根据轨迹数据集建立轨迹索引imc树,其中,所述imc树包括倒排列表与多个mc树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个mc树与所述关键字词汇表中的每个关键字一一对应建立,所述mc树包括用于存储轨迹局部位置的轨迹摘要;
查询索引建立模块,用于根据查询数据集建立查询索引wibr树;
处理模块,用于通过对imc树与wibr树进行交替访问,并且在访问过程中根据imc树中的节点与wibr树中的节点之间的距离边界,对imc树中的节点与wibr树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述imc树中将查询q作为最近邻查询的最小相关子轨迹。
所述终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图6仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端设备5所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。