一种带权大图上的k步可达性查询算法制造技术

技术编号:28504768 阅读:28 留言:0更新日期:2021-05-19 22:56
本文提出了一种针对带权有向图的k步可达性查询算法,能在常数时间内完成大部分k步可达性查询,具体来说,提出的带权有向图上的k步可达性查询算法,以双向最短路径索引和K

【技术实现步骤摘要】
一种带权大图上的k步可达性查询算法


[0001]本专利技术涉及计算机处理
,尤其涉及带权有向有环图上的k步可达性查询算法。

技术介绍

[0002]可达性查询研究的是图中两个顶点之间是否存在可达路径,作为图数据管理中使用最频繁的操作,可达性查询在子图匹配查询、生物信息学、社交网络等领域中应用广泛。
[0003]但是对于一些现实中的问题,仅仅进行可达查询并不能满足用户的需求,如在无线传感器网络、互联网、电信网以及社交网络中,顶点u对顶点v的影响力受制于从u到v的路径长度(例如无线传感器网络的广播消息可能在传输过程中的任何一步丢失,其他顶点接收到的概率会随着路径长度的增加以指数级速度衰减)。
[0004]k步可达性查询是在可达性查询的基础上,对两顶点间的路径长度限制至k,即回到两点间是否存在一条长度不超过k的路径。k步可达性查询相比可达性查询,不仅能反映顶点间是否存在影响,还能反映顶点间的影响程度,可以提供更多有用信息,在无线传感器网络、互联网、电信网以及社交网络等实际应用中应用广泛,具有较高的实用价值。
[0005]随着研究的深入,已有多个k步可达性查询算法先后被提出,但是这些算法的研究对象均为无权图,而在一些现实问题中,我们要处理的往往是带权重的图数据,如前文提到的传感器网络、社交网络、交通网络等,在这些网络中,权重可以表示传感器间的距离、功率损耗,社交网络中人与人之间的亲密程度,交通网络中两城市间的距离、油耗等。
[0006]有些算法的研究对象限定为有向无环图,如果图数据中存在环,则通过压缩强连通分量构造为有向无环图,这在k步可达性查询中并不合理。
[0007]有些算法在构建索引时需提前指定查询步数k,且针对每个k构建的索引只适合k步以内的查询,在查询时不能灵活的更改查询步数k。
[0008]
技术实现思路

[0009]针对以上问题,本文提出了一种针对带权有向图的k步可达性查询算法,能在常数时间内完成大部分k步可达性查询,具体方法如下:第一、采用贪心算法来求解近似最小顶点覆盖集,首先计算图中各顶点的度,选出度最大的顶点,然后将该顶点加入到顶点覆盖集中,并将该顶点覆盖到的边从边集中全部删除,在删除过程中,对相关顶点的度进行调整,重复上述过程,直到边集为空。
[0010]第二、基于第一求得的近似最小顶点覆盖集 S,构建S 内索引,构建S内索引实际上就是S内各顶点间的最短路径,该部分是整个索引的核心部分,在构建过程中,对S内每一个顶点u,在原图中执行广度优先遍历,对遍历到的每一个顶点v,如果v属于S,则将加入到索引中,其中w表示从u到v的路径长度,这样就得到由带权边构成索引。
[0011]第三、构建S 外索引具体构建过程如下,对S外的每一个顶点u,依次访问OUT(u)或
IN(u)内顶点v,因为u不属于S ,所以v一定属于S,将(v,w)加入到S外索引的OUTI(node,weight)或INI(node,weight)中。最终构建的S外索引如表2所示。S外是该索引的重要组成部分,借助该部分,本算法可以实现在不访问原图的情况下,完成k步可达查询操作。
[0012]在查询时,对于给定的两顶点u、v和路径长度k,根据u和v是否属于近似最小顶点覆盖集S,将查询分为四种情况:第一、若u和v均属于S,则直接查询S内索引得到,若wpath(u,v)≤k,则uk步可达v,否则uk步不可达v。
[0013]第二、若u属于近似最小顶点覆盖集S,而v不属于S,则首先判断S外索引中的v的入边顶点集INI (v)是否为空,若INI (v)为空,则uk步不可达v,否则依次遍历顶点v的入边顶点集INI (v)中的点t,判断是否存在t使得wpath(u,t)+get(t)≤k,若存在这样的点t,则uk步可达v,否则uk步不可达v。
[0014]第三、若u不属于近似最小顶点覆盖集S,而v属于S,同样首先判断S外索引中的u的出边顶点集OUTI(u)是否为空,若OUTI(u)为空,则uk步不可达v,否则依次遍历顶点u的出边顶点集OUTI(u)中的点s,判断是否存在s使得wpath(u,s)+get(s)≤k,若存在这样的点s,则uk步可达v,否则uk步不可达v。
[0015]第四、若u和v均不属于顶点覆盖集S,则首先判断S外索引中的u的出边顶点集OUTI(u)或v的入边顶点集INI (v)是否为空,若二者任意一个为空,则uk步不可达v,否则依次遍历顶点u的出边顶点集OUTI(u)中的点s和顶点v的入边顶点集INI (v)中的点t,判断是否存在点s和点t使得get(u)+wpath(s,t)+get(v)≤k,若存在这样的点s和t,则uk步可达v,否则uk步不可达v。
[0016]下面参照附图对本放作进一步说明。
[0017]图1是本专利技术使用的一张示例带权有向有环图,其中灰色顶点构成近似最小顶点覆盖集。
[0018]图2是基于示例带权有向有环图生成的近似最小顶点覆盖集S外索引。
[0019]图3是基于示例带权有向有环图生成的近似最小顶点覆盖集S内索引。
[0020]例如要查询图1中的顶点2和5是否3步内可达,因为顶点3不在顶点覆盖集中,而顶点5在,所以首先判断顶点3的出边顶点集是否为空,发现顶点3的出边顶点集不为空且由顶点4构成,所以根据S外索引得到get(4)=1,根据S内索引得到wpath(4,5)=2,两者求和得到的路径长度为3,与给定的步长相等,所以顶点2 3步可达顶点5。
[0021]近似最小顶点覆盖集的求解算法如下:输入:带权有向图G=(V,E)输出:近似最小顶点覆盖集S1./*初始化各顶点的度*/2.foreach node u in V do3.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
Array[u]ꢀ←
getdegree(u)4./*求近似最小顶点覆盖集*/5. WhileE is not empty do6.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
find v which has biggest degree7.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
add v into S
8.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
for each node s in out(v) or in (v) do9.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
delete(<v,s>or<s,v>)10.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
Array[s]—

基于近似最小顶点覆盖集的索引构建算法如下:输入:带权有向图G=(V,E)输出: Index=(S,E
S
,)1./*求近似最小顶点覆盖集*/2.Compute the approximate min vertex cover S3.*求S内顶点间的最短路径*/4.foreach node u in S do5.
ꢀꢀꢀꢀ...

【技术保护点】

【技术特征摘要】
1.在一种针对带权有向有环大图的k步可达性查询算法,其特征在于,处理对象不仅为无权图,也不仅为无环图,而是可以为带权有向有环大图。2.该专利要求的带权有向有环图大图上的k步可达性查询算法,其特征在于,索引构建过程首先利用贪心算法求解近似最小最小顶点覆盖集。3.该专利要求的带权有向有环图大图上的k步...

【专利技术属性】
技术研发人员:李文华李盛恩
申请(专利权)人:山东建筑大学
类型:发明
国别省市:

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

1