一种基于强化学习的路网最短路径距离计算方法

文档序号:31413166发布日期:2022-09-03 11:10阅读:892来源:国知局
一种基于强化学习的路网最短路径距离计算方法

1.本发明涉及计算机数据管理技术领域,具体而言,涉及一种基于强化学习的路网最短路径距离计算方法。


背景技术:

2.最短路径距离查询是指给定一个网络上的起点和终点,要求返回这两点间的最短路径距离。其作为一项基本操作,是gps导航、poi推荐和路线规划等基于位置服务的应用中的重要组成模块。目前主流的最短路径查询方法主要分为基于在线搜索的方法和基于索引结构的方法两种。最经典的基于在线搜索的方法是dijkstra算法,dijkstra算法从查询的最短路径起点开始搜索,先求出长度最短的一条路径,再参照该最短路径求出长度次短的一条路径,直到求出从源点到其他各个顶点的最短路径。基于在线搜索的方法随着路网规模的增大,搜索空间随之增大,搜索时间也急剧增加,尤其是当两个查询点距离很远的时候dijkstra可能需要遍历整个路网,无法满足实时性的需求。
3.为了能更有效地处理最短路径查询,研究人员提出了基于索引结构的方法,即在预处理阶段构建辅助的数据结构存储相关信息,来加快在线查询阶段的速度。其中一类基于索引结构的方法被称为基于层级结构的方法,其在预处理阶段构建层级结构,从而减小查询阶段的计算开销。另一种基于索引结构的方法被称为基于2-hop label的方法,该类方法应用最为广泛,成为最短路径距离查询的主流算法。2-hop label最早由edith cohen等人在2002年提出,是一种分布式的数据结构。其主要思想是给路网中每个节点计算一个标签集合,该标签集合中的每个元组由节点和到该节点的最短路径距离组成。在查询阶段,任意两节点之间的最短路径距离只需遍历两个节点的标签索引即可计算得到。为了进一步优化最短路径距离查询的计算速度,d.ouyang等人在2018年提出了h2h(hierarchical 2-hop)方法,该方法综合利用了基于层级结构的方法和基于标签的方法。其首先利用树分解过程将路网转化为树结构,再按照自顶向下的方式建立索引2-hop label标签索引。对于给定的查询,只需要遍历查询起点和查询终点lca(最近公共祖先)的标签索引即可得到查询结果,避免了遍历查询起点和查询终点的所有标签索引,使得查询时间相较于以往的基于标签索引的方法减小了约十倍。
4.然而h2h使用基于启发式的策略来对路网进行树分解,只考虑了节点的度这一特征,导致所构建的树结构不平衡且高度大。从而导致索引开销大,限制了该方法在大规模路网上的应用和拓展性。


技术实现要素:

5.本发明在于提供一种基于强化学习的路网最短路径距离计算方法,其能够缓解上述问题。
6.为了缓解上述的问题,本发明采取的技术方案如下:
7.本发明提供了一种基于强化学习的路网最短路径距离计算方法,包括以下步骤:
8.s1、将构建最短路径距离索引的过程转化成马尔可夫决策过程;
9.s2、基于马尔可夫决策过程,构建并训练基于强化学习的策略模型;
10.s3、利用策略模型构建层级结构的2-hop label索引;
11.s4、对2-hop label索引进行优化;
12.s5、运用优化后的2-hop label索引处理查询,并返回查询结果。
13.在本发明的一较佳实施方式中,所述s1包括以下步骤:
14.s11、定义路网和最短路径查询;
15.s12、定义树分解;
16.s13、基于路网、最短路径查询和树分解,定义马尔可夫决策过程。
17.在本发明的一较佳实施方式中,在树分解的每一步,都需从剩余未移除的节点中筛选出若干候选节点,将所有候选节点的特征拼接后构成马尔可夫决策过程的状态;
18.用vk={u1,

,uk}表示筛选出的k个候选节点,一个马尔可夫决策过程的行为a=j表示从vk中选择节点uj,1≤j≤k;
19.采用同步参考法得到马尔可夫决策过程的奖励,具体为:在树分解的每一步中,从候选节点中选择节点移除的同时,同步使用启发式的方法选择节点进行移除,将该两种操作中得到的结果的差值作为奖励;
20.马尔可夫决策过程的状态转移表示为一个元组(s,a,s

,r),指在当前状态s下选择行为a,进入下一个状态s

并得到奖励r的过程。
21.在本发明的一较佳实施方式中,所述s2包括以下步骤:
22.s21、基于deep q network构建基于强化学习的策略模型;
23.s22、基于马尔可夫决策过程,对策略模型进行训练。
24.在本发明的一较佳实施方式中,所述s22包括以下步骤:
25.s221、使用随机参数初始化行为网络q(s,a;θ),目标网络的参数初始和行为网络保持一致,初始化经验池m的容量为n;
26.s222、判断训练周期是否结束,若结束,则跳转至步骤s229,否则继续执行步骤s223;
27.s223、初始化路网,得到第一个状态;
28.s224、判断是否达到终止状态,若是,则跳转至步骤s222,否则继续执行步骤s225;
29.s225、按照∈-greedy的方式,选择行为a,得到状态s

和奖励r,存储状态转移元组(s,a,s

,r)到经验池m;
30.s226、判断经验池m是否达到容量n,若是,则继续执行步骤s227,否则跳转至步骤s224;
31.s227、从经验池m随机采样一个batch的状态转移元组训练行为网络q(s,a;θ);
32.s228、进入下一个状态,跳转至步骤s224;
33.s229、训练结束,得到训练好的行为网络q(s,a;θ)。
34.在本发明的一较佳实施方式中,所述s3包括以下步骤:
35.s31、基于策略模型将路网转化为树结构;
36.s32、对于树结构中的每一个结点,按照从上到下的方式计算基于层级结构的2-hop label索引。
37.在本发明的一较佳实施方式中,所述s31包括以下步骤:
38.s311、获取路网;
39.s312、根据路网构建倒排表;
40.s313、从倒排表中选出k个候选节点组成集合vk,计算各候选节点的特征值,将各特征值进行拼接组成状态向量;
41.s314、将状态向量输入到策略模型,选择奖励值最大的节点作为移除节点,进行节点移除操作和节点连接操作,将移除节点从未删除节点集合移动到已删除节点集合;
42.s315、判断未删除节点集合是否为空集,若是,则输出各移除节点连接而成的树结构,否则跳转至步骤s312。
43.在本发明的一较佳实施方式中,索引包括位置数组pos(v)和距离数组dis(v),位置数组pos(v)存储的是树结构的结点x(v)中所有节点在树结构中的深度,距离数组dis(v)存储的是结点x(v)到所有祖先节点的最短距离。
44.在本发明的一较佳实施方式中,所述s4包括以下步骤:
45.s41、计算路网的图密度ρ,公式如下:
[0046][0047]
其中,|e|为路网的边总数,|v|为路网的节点总数;
[0048]
s42、选择对路网进行树分解的方法,具体为:设定图密度阈值ρ
θ
,当ρ≤ρ
θ
时,使用最小度的启发式方法对路网进行树分解,当ρ》ρ
θ
时,使用强化学习的方法对路网进行树分解;
[0049]
s43、对路网进行树分解,在该过程中,对于路网中同一条没有分叉的路径line,找到其端点x(u),并将端点x(u)的结点编号u存储在该line的位置数组pos(v)中;
[0050]
s44、对于line生成的单支树,将其中所有祖先结点的高度,依次存放于其位置数组pos(v)中;
[0051]
s45、从树根到叶子,依次计算line中所有结点到单支树中祖先结点的最短路径距离,并存放在距离数组dis(v)中,此时,2-hop label索引的优化过程结束。
[0052]
在本发明的一较佳实施方式中,在步骤s5中,查询过程包括非单支树结点之间的查询、同一单支树结点之间的查询以及不同单支树结点之间的查询。
[0053]
与现有技术相比,本发明的有益效果是:
[0054]
将最短路径索引的构建过程转化成一个马尔可夫决策过程,并采用了基于强化学习的方法进行最短路径距离索引的构建,构建的索引结构更均衡,空间开销少,查询速度更快,具有很强的实用性,在诸如gps导航、自动驾驶、路径规划等应用中可以占用更小的资源,获得更好的性能;
[0055]
采用了基于强化学习的方法进行最短路径距离索引的构建,相比以往算法采用人工启发式策略的索引构建方法,更加智能化,具有很强的创新性;
[0056]
针对模型构建索引时间慢的弱点,利用图密度将索引构建过程分为两个阶段,前一阶段采用启发式的方法进行,后一阶段采用强化学习的方法,该优化方案加快了模型构建索引的速度,提升了模型的泛化性能,节省训练时间,可将训练好的模型直接应用到其他路网,不用重复训练,具有很强的实用性;
[0057]
利用路网中line结构生成的单支树的结构特点,提出了一种新的索引结构,保证查询效率的同时进一步减少了叶子结点的索引占用空间。
[0058]
为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明实施例,并配合所附附图,作详细说明如下。
附图说明
[0059]
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0060]
图1是本发明所述基于强化学习的路网最短路径距离计算方法流程图;
[0061]
图2是本发明中将构建最短路径距离索引的过程转化成马尔可夫决策过程的流程图;
[0062]
图3是本发明训练模型的流程图;
[0063]
图4是本发明利用模型进行树分解得到树结构的流程图;
[0064]
图5是为本发明实例提供的利用树结构构建标签索引的流程图;
[0065]
图6是本发明对索引进行优化的流程图。
具体实施方式
[0066]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和展示的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0067]
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068]
请参照图1~图6,本发明提供了一种基于强化学习的路网最短路径距离计算方法,包括以下步骤:
[0069]
s1、将构建最短路径距离索引的过程转化成马尔可夫决策过程,见图2所示,具体如下:
[0070]
s11、定义路网和最短路径距离查询。
[0071]
路网用g=(v,e,w)表示,其中:
[0072]
v={v1,v2,

,vn}表示节点集合,即路网中道路的交叉点;
[0073]
e={(vi,vj)|vi,vj∈v}表示边的集合,即路网中的道路,对于有向图,(vi,vj)和(vj,vi)指不同的边;
[0074]
w={w(vi,vj)|vi,vj∈v}表示权重的集合,可选择不同的标准作为权重,一般设置为道路的距离或者行驶时间。
[0075]
最短路径距离查询q(s,t)要求返回s和t之间的最短路径的距离。s到t的一条路
径,是一个节点序列《s,

,vi,v
i+1
,

,t》,最短路径距离是这条路径上的边的权值和最小的路径的距离。
[0076]
目前最前沿的最短路径索引方法是h2h,本发明采用强化学习的方法构建一个存储开销小、查询速度快、构建时间短的层级结构2-hop label索引。构建层级结构的2-hop label索引需要经过一个树分解的过程。
[0077]
s12、定义树分解。
[0078]
用t表示路网g=(v,e,w)进行树分解得到的树结构,v
t
表示t中结点的集合,t中的每一个结点x(vi)∈v
t
都是v的一个子集,并且以下三个条件成立:
[0079]
1)∪x(vi)=v;
[0080]
2)对于每一条边(u,u

)∈e,都存在一个结点x(vi)满足u,u

∈x(vi);
[0081]
3)对于每一个点u∈v,{x(vi)|u∈x(vi)}集合构成t的子树。
[0082]
路网g中vi∈v被称为节点,树结构t中x(vi)∈v
t
被称为结点,其中结点x(vi)由一系列节点组成,vi是x(vi)的核心节点。树结构的宽度表示为ω(t)=max|x(vi)|-1,这里|x(vi)|表示结点x(vi)中点的数量。树结构的高度h(t)表示从叶子到树根的最远距离,当上下文明确时,我们分别用ω和h来表示树宽度和树高度。对于任意节点vi∈v,我们用t(vi)表示由x(vi)作为根结点的子树,|t(vi)|表示子树结构中结点的数量。
[0083]
从路网g=(v,e,w)到树结构t,需要按照一定的顺序对路网中的节点进行移除操作。每移除一个节点,需要更新这个节点的邻接点之间的边的权值,以保持距离查询的正确性。具体操作为,对于节点vi任意两个邻居节点对u,u

,如果这两个邻居节点u和u

之间没有边相连,则添加一条连接u和u

的边(u,u

),边的权值为节点vi到这两个邻居节点的边权值之和,即w(u,u

)=w(u,vi)+w(vi,u

);反之如果u和u

之间有边(u,u

)存在,则将该条边的权值w(u,u

)更新为min(w(u,u

),w(u,vi)+w(vi,u

))。树分解移除的节点会连接在一起,一个已经移除节点vi的最先移除的邻居节点vj会成为vi的父节点,移除的节点之间的连接会形成一个森林,直到最后一个节点删除,该节点会成为t的根节点。
[0084]
s13、定义马尔可夫决策过程。
[0085]
对路网进行树分解并构建索引的过程可以看作一个马尔可夫决策过程,按照以下方式定义马尔可夫决策过程的四要素,即状态,行为,奖励,状态转移。
[0086]
状态:树分解的每一步,都需要从剩余未移除的节点中筛选出k个候选节点,将k个候选节点的特征拼接起来构成状态。
[0087]
具体实施方法为,初始化图g

=g,用一个倒排表存储所有的节点。
[0088]
倒排表由一系列的列表组成,每一个列表里存储的节点度相同,列表按照度从小到大排序。用表示度最小的b个列表,d
min
表示当前最小的度,候选节点从l中选出。首先从l中的每个列表中选出前个节点,如果选出来的节点不足k个,就从l中的第一个列表开始补选,每个列表补选一个节点,直到候选节点数达到k个。每个列表中的节点,按照|t(vi)|排序并使用一个优先队列维护,|t(vi)|表示森林中以x(vi)为根节点的树结构t(vi)的节点总数。对于每个候选节点,计算出6个特征其中,前两个特征来自g

,d(vi)表示节点vi在g

中的度,表示vi在g

中邻居节点的平均度。后四个特征来自移除节点vi后,以x(vi)为根
节点的树结构t(vi)。h(vi)表示t(vi)的高度,表示t(vi)中所有节点的平均深度,nc(vi)表示t(vi)中节点vi子树的数量,|t(vi)|表示t(vi)中的节点总数。得到每个候选节点的特征后,将k个候选节点的特征拼接起来,形成一个6
·
k的向量,以构成状态。
[0089]
特别地,每移除一个节点后,其邻居节点的度和|t(vi)|会发生更新,并重新插入到相应列表中。
[0090]
行为:用vk={u1,

,uk}表示筛选出的k个候选节点,一个行为a=j表示从vk中选择节点uj,1≤j≤k。
[0091]
奖励:我们用同步参考法来得到奖励。
[0092]
具体地,在树分解的每一步中,从候选节点中选择节点移除的同时,同步使用启发式的方法选择节点进行移除,两种方法得到的结果的差值作为奖励。首先,采用启发式的方法选择节点,移除这个节点并计算形成的森林的平均高度h1。恢复对该节点的移除操作,以保持状态不变,再采用本发明的方法选择节点移除,计算森林的平均高度h2,两种方法得到的高度差值r=h
1-h2作为奖励。
[0093]
状态转移:状态转移表示为一个元组(s,a,s

,r),包含上述定义的元素,指在当前状态s下选择行为a,进入下一个状态s

并得到奖励r的过程,用于模型的训练。
[0094]
s2、基于马尔可夫决策过程,构建并训练基于强化学习的策略模型,具体如下:
[0095]
s21、构建基于强化学习的策略模型,具体如下:
[0096]
基于强化学习的策略模型采用deep q network实现,该模型由两个神经网络和一个经验池组成。两个神经网络一个是行为网络,一个是目标网络,拥有相同的网络结构,由三层的全连接层组成,神经元个数分别为(6
·
k,128,k)。行为网络训练好后用来最终决策,目标网络为辅助行为网络训练的网络。经验池可以看作一个数组,存储了一系列的状态转移元组(s,a,s

,r),用来训练行为网络的参数。
[0097]
s22、训练基于强化学习的策略模型,见图3所示,具体如下:
[0098]
首先,使用随机参数初始化行为网络q(s,a;θ),目标网络的参数初始和行为网络保持一致,即θ-=θ。初始化经验池m的容量为n。
[0099]
在每一个训练周期里面,初始化路网g


[0100]
在树分解的每一步,算法从剩余的路网中选取k个候选节点。利用候选节点的特征得到状态,采用∈-greedy的方式选择一个行为a,即,以∈的概率随机选择行为,以1-∈的概率选择a
t
=argmaxaq(s,a;θ)。执行行为并进入下一个状态s

,得到奖励r。这样的一个元组(s,a,s

,r)被储存到经验池m中,重复这个过程直至结束状态。
[0101]
在这个过程中,当经验池m达到设定的容量n之后,模型每一步都从经验池中随机采样一系列的经验用来训练网络。
[0102]
具体训练过程为,将状态s和行为a输入行为网络q(s,a;θ)得到预测值y
p
,同时将状态s

输入目标网络得到目标值,该目标值加上奖励r得到y
t
,计算训练误差l(θ)=[y
t-y
p
]2,用此误差对行为网络q(s,a;θ)进行梯度下降以更新参数θ。目标网络的参数θ-会周期性的和行为网络q(s,a;θ)的参数θ保持同步。
[0103]
s3、利用策略模型构建层级结构的2-hop label索引,具体如下:
[0104]
s31、基于策略模型将路网转化为树结构,见图4所示,包括以下步骤:
[0105]
s311、获取路网。
[0106]
s312、根据路网构建倒排表。
[0107]
将路网g=(v,e,w)中节点按照节点度由小到大排序,将节点划分为由多个节点列表组成的倒排表其中ld表示该列表中所有节点的度大小为d,d
min
表示路网中节点的最小度,d
max
表示路网中节点的最大度。
[0108]
对于每个列表ld中的所有节点,采用一个优先队列,按照每个节点vi为根结点形成的树结构的总结点数|t(vi)|维护顺序,将g

={v

,e

,w

}(v

=v2)初始化为g,g

表示每次删除节点后剩下的距离保留图,v1表示已删除节点的集合,v2表示未删除节点的集合,v1初始化为空集,v2初始化为路网中全部节点。
[0109]
s313、从倒排表中选出k个候选节点组成集合vk,计算各候选节点的特征值,将各征值进行拼接组成状态向量,具体如下:
[0110]
从倒排表l中选择前b个列表其中d
min
表示当前剩下的距离保留图g

中的节点最小度。从lb中的每个列表中选出前个节点添加到候选节点集合vk中,如果候选节点数量小于k,再依次从列表lb中每次选出一个具有最小|t(vi)|值的未被选择的节点v添加到vk中,直到vk含有k个节点。
[0111]
根据上述方法选出k个候选节点组成集合vk={u1,

,uk}后,分别计算这k个候选节点的特征值,拼接起来组成状态。
[0112]
具体地,对任意的一个候选节点vi∈vk被选为下一个移除节点时,其需要计算的特征值包括:
[0113]
1)节点vi当前的度d(vi);
[0114]
2)节点vi的邻居节点的平均度
[0115]
3)节点vi和其邻居节点形成的结点x(vi)在树中的高度h(vi);
[0116]
4)以结点x(vi)为根节点的树结构中所有节点的平均深度
[0117]
5)x(vi)的子结点数目nc(vi);
[0118]
6)以x(vi)为根节点的树的结点总数|t(vi)|。
[0119]
对k个候选节点都进行以上计算后,将特征值进行拼接组成大小为6
·
k的状态向量。
[0120]
s314、将状态向量输入到策略模型,选择奖励值最大的节点作为移除节点,进行节点移除操作和节点连接操作,将移除节点从未删除节点集合移动到已删除节点集合,具体如下:
[0121]
将状态向量输入策略模型中,模型输出为对应选择每个候选节点的奖励值大小,选择奖励值最大的节点vi作为真正的移除节点。
[0122]
进行节点移除操作,包括以下步骤:
[0123]
1)对于节点vi任意两个邻居节点对u,u

,如果这两个邻居节点u和u

之间没有边相连,则添加一条连接u和u

的边(u,u

),边权值为节点vi到这两个邻居节点的边权值之和,即w(u,u

)=w(u,vi)+w(vi,u

);反之如果u和u

之间有边(u,u

)存在,则将该条边的权值w(u,u

)更新为min(w(u,u

),w(u,vi)+w(vi,u

));
[0124]
2)将节点vi和其邻居节点组成x(vi),并保存vi到其邻居节点的边及其权值,然后
将该节点vi从剩下的距离保留图g

中移除,并从未删除节点集合v2移动到已删除节点集合v1。
[0125]
在本发明中,策略模型采用具有三层全连接层的深度神经网络,输入层含有60个神经元,隐藏层有128个神经元,输出层有10个神经元。
[0126]
将移除节点vi生成的结点x(vi)连接到已删除节点v1形成的森林中。具体包含以下操作:
[0127]
1)将vi添加到vi所有邻居节点u的可能子结点集合pc(u)中;
[0128]
2)检查vi所有可能的子结点o∈pc(vi),如果x(o)至今没有父节点则将x(vi)设为x(o)的父结点;
[0129]
3)重新计算当前节点的最小度d
min
和最大度d
max
,更新倒排表即对受到影响列表ld中的节点按照节点更新后的树结点数|t(vi)|由小到大进行重新排序。
[0130]
重复进行上述步骤,直到路网图中所有节点被删除,最终将路网g

转化为了树结构t。
[0131]
s32、计算基于层级结构的2-hop label索引,具体包括:
[0132]
对于树结构t中的每一个结点x(v)∈v
t
,按照从上到下的方式进行计算基于层级结构的2-hop标签索引。
[0133]
标签索引由位置数组pos(v)和距离数组dis(v)组成。
[0134]
位置数组pos(v)存储的是x(v)中所有节点形成的结点在树结构中的深度。
[0135]
距离数组dis(v)存储的是结点x(v)到所有祖先结点的最短距离。
[0136]
在本发明中,每个节点的基于层级结构的标签索引计算方法参阅图5所示。
[0137]
s4、对2-hop label索引进行优化,见图6所示,具体如下:
[0138]
s41、计算路网的图密度ρ,
[0139]
图密度反应了树分解过程中图g

的密度大小,其计算公式如下:
[0140][0141]
其中,|e|为路网的边总数,|v|为路网的节点总数,v代表节点的集合;
[0142]
树分解过程中,图密度是单调递增的。初始化时,读取路网的节点总数|v|和边总数|e|,在树分解过程中,每删除一个节点,对节点总数|v|和边的总数|e|进行更新,并利用公式计算当前图密度ρ。
[0143]
s42、选择对路网进行树分解的方法,具体为:
[0144]
设定图密度阈值ρ
θ
,当ρ≤ρ
θ
时,使用最小度的启发式方法对路网进行树分解,当ρ》ρ
θ
时,使用前述强化学习的方法对路网进行树分解。
[0145]
s43、对路网进行树分解,在该过程中,对于路网中同一条没有分叉的路径line,找到其端点x(u),并将端点x(u)的结点编号u存储在该line的位置数组pos(v)中,具体如下:
[0146]
我们用line表示路网中的一条没有分叉的路径,其内部节点的度都为2,对于line的两个顶点u和v,u的度d(u)≥2称作端点,v的度d(v)=1称作叶子结点。在树分解过程中,从叶子结点到端点依次删除line中的点,将生成一棵单支树。对于树分解中的每个叶子结点x(v),从x(v)开始在同一条line上迭代寻找父结点,直到找到端点x(u)为止,将x(u)的结
点编号u存储在line中所有节点的位置数组pos(v)中。
[0147]
s44、对于line生成的单支树,将其中所有祖先结点的高度,依次存放于其位置数组pos(v)中。
[0148]
s45、从树根到叶子,依次计算line中所有结点到单支树中祖先结点的最短路径距离,并存放在距离数组dis(v)中,此时,2-hop label索引的优化过程结束。
[0149]
上述步骤中,步骤s43、s44、s45都是优化叶子结点的索引结构的过程。
[0150]
s5、运用优化后的2-hop label索引处理查询,并返回查询结果,一般情况下,具有以下三种查询。
[0151]
(1)非单支树结点之间的查询
[0152]
当两个结点x(s)和x(t)是单支树的内部结点时,首先找到x(s)和x(t)的最近共同祖先lca(s,t),依次遍历最近共同祖先节点中的位置数组并比较s和t到位置数组对应节点的距离之和,具体计算公式为:
[0153]
dist(s,t)=min
i∈pos(lca(s,t))
{dis(s)[i]+dis(t)[i]}。
[0154]
(2)同一单支树结点之间的查询
[0155]
比较pos(s)和pos(t)中存储的端点编号,当端点编号相同时,x(s)和x(t)在同一棵单支树上。首先找到x(s)和x(t)的最近共同祖先lca(s,t),如果lca(s,t)=x(s),则直接通过dis(t)求得最短路径距离,具体计算公式为:
[0156]
dist(s,t)=dis(t)[pos(s)[1]];
[0157]
如果lca(s,t)=x(t),则直接通过dis(s)求得最短路径距离,具体计算公式为:
[0158]
dist(s,t)=dis(s)[pos(t)[1]]。
[0159]
(3)不同单支树结点之间的查询
[0160]
比较pos(s)和pos(t)中存储的端点编号u和v,当端点编号不同时,x(s)和x(t)在不同单支树上。
[0161]
首先,找到两个端点x(u)和x(v)的最近共同祖先lca(u,v),并利用公式
[0162]
dist(u,v)=min
i∈pos(lca(u,v))
{dis(u)[i]+dis(v)[i]}
[0163]
计算端点之间的最短路径距离。
[0164]
然后,利用dis(s)[1]和dis(t)[1]分别得到s和t到端点u和v的最短路径距离,则
[0165]
dist(s,t)=dis(s)[1]+dist(u,v)+dis(t)[1]。
[0166]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1