一种基于扁平化的网络连通路径快速搜索方法与流程

文档序号:11623625阅读:168来源:国知局
一种基于扁平化的网络连通路径快速搜索方法与流程
本发明涉及图论中的路径搜索方法,具体涉及一种基于扁平化的网络连通路径快速搜索方法。
背景技术
:网络中顶点间连通距离路径是图论中的一个基本概念,也是广泛应用于人工智能和网络社区的一个基本概念。因为顶点之间的距离表示顶点间的相关性,它可以表示为匹配用户社交搜索意图最佳的其他用户或内容。在上下文感知搜索中,它可以用于分配更高的排序权重给予与当前访问的网页关系更密切的网页。因此网络中最短路径的分析与计算对分析网络顶点关联关系具有重要作用。而随着硬件、软件技术飞速发展,数据的规模在飞速增长;智能手机、gps终端和基于位置服务的普及与发展,地理信息数据呈爆炸式增长;微博、微信等网络社交平台迅速崛起,带来了海量的社交数据。另外,数据的拓扑结构变得更加复杂;传统的静态图只能粗糙地描述实际应用中的问题模型。随着科技的发展和社会的进步,这种粗粒度的建模逐渐无法满足应用的需求。同时,实时性的需求也是不可或缺;数据规模的增长和拓扑结构的变化导致计算路径时需要执行更多的运算,为了满足实时性要求,算法必须更有效率。基于扁平化的连通路径计算,通过启发式的剪枝广度优先搜索算法寻找路径,并结合子网络扁平化构建顶点路径索引。利用构建的路径索引可以实现在秒级时间响应获得准确的查询目标对象之间的关联关系。技术实现要素:针对上述现有技术的不足,本发明的目的在于提供一种基于扁平化的网络连通路径快速搜索方法。该方法具体涉及集合运算、图搜索及搜索剪枝等策略,利用构建的路径索引可以实现在秒级时间响应获得准确的查询目标对象之间的关联关系。根据本发明的实施方案,提供一种基于扁平化的网络连通路径快速搜索方法:一种基于扁平化的网络连通路径快速搜索方法,该方法包括以下步骤:1)(以剪枝方式)构建网络中每个顶点vi的子网络gi;2)将步骤1)中得到的子网络gi扁平化,获得扁平化子网络;和3)利用扁平化子网络求解网络任意两点之间的近似最短路径。在本发明中,所述步骤1)中子网络的构建方法具体为:1.1)遍历顶点vi的所有邻接顶点,若邻接顶点vk(其中vk∈vi,集合vi为顶点vi的邻接顶点集合)与顶点vi之间的边eik的权值wik大于阈值α,则加入集合vi1,否则加入集合v′i1;其中,边权值大于阈值α的邻接顶点集合vi1作为顶点vi子网络gi的第一层,并记集合vi1的顶点vj(vj∈vi1)关于顶点vi的路径为pij=(i∶j),而集合v′i1的顶点剪枝掉,即不进行接下来的步骤;1.2)对顶点集合vi1中的任意顶点vk,遍历vk所有邻接顶点,若邻接顶点vm(其中vm∈vk,集合vk为顶点vk的邻接顶点集合)与顶点vk之间的边ekm的权值wkm大于阈值α且顶点vm不存在于子网络gi中(即),则加入集合vi2,否则加入集合v′i2;其中,邻接顶点集合vi2作为顶点vi子网络gi的第二层,并记集合vi2的顶点vl(vl∈vi2)关于初始顶点vi的路径为pil=pik+(k:l)=(i:k:l),而集合v′i2的顶点剪枝掉,即不进行后续的操作步骤;1.3)重复步骤1.2)中的扩展方式,将顶点vi的子网络gi扩展到最大层数。在本发明中,所述步骤2)中将子网络扁平化的方法具体为:2.1)排序网络中全部顶点,得到顶点序列s;2.2)将步骤1)中得到的顶点vi的子网络gi的各层顶点集合vi1,vi2,vi3,...,vin分别转换成向量表示形式,集合至向量转换过程如下:设顶点集合vi中的顶点为(v1,v2,v3...,vs),并查询集合vi中顶点在序列s中的序号为(i1,i2,i3...,is);设维度为||s||(||s||为序列长度,即所有顶点数目)的向量分别将向量第i维(i∈{i1,i2,i3...,is})的数值设为1,其他维度数值设置为0,如此得到的向量为集合vi的向量表示;同理转换子网络的所有集合,经过转换后,子网络gi可由一组向量表示为2.3)对各层顶点集合vi1,vi2,vi3,...,vin求并集,以实现子网络gi的扁平化,即将步骤2.2)中所得向量的各维按位求或运算,得到扁平化后的子网络在本发明中,所述步骤3)中求解网络任意两点之间的近似最短路径的方法具体为:3.1)假设两个顶点分别为vi、vj,它们的扁平化子网络分别为两点之间的所有连通点为两个子网络顶点的交集,即将扁平化子网络向量的各维按位与运算,得3.2)从顶点之间的连通点求得顶点之间的路径:顶点vi的子网络的各层顶点集合分别与步骤3.1)中得到的连通顶点集合做交集运算,子网络各层顶点向量与连通顶点向量的各维按位求与运算,得若向量各维不全为零,则在顶点vi子网络的第k层存在连接顶点vi与vj的连通点,若向量的第m维不为零,则顶点vm是顶点vi与vj的一个连通点;由步骤1)可得顶点vi到该顶点vm的路径为pim,顶点vj到该顶点vm的路径为pjm,从而顶点vi至顶点vj的一条路径为pij=pim+pjm。优选的是,所述步骤1.3)中顶点vi的子网络gi的最大扩展层数为2-8层,优选为3-6层。优选的是,所述边权值为顶点之间的共现频率,表示顶点之间的相关程度。优选的是,所述阈值α为最大边权值的80%。优选的是,所述步骤2.2)中向量第i维数值为“1”表示顶点集合vi中第i个顶点在该层顶点集合中存在,数值为“0”表示不存在。优选的是,所述排序为根据顶点值将网络中全部顶点按字典序升序排列。优选的是,所述转换为集合至向量的转化;集合v中的顶点在序列s中的序号为i,则向量的第i维为1,其他维度为0。优选的是,在进行步骤1)构建网络中每个顶点的子网络之前,对网络进行预处理。优选的是,所述预处理的方法是剪枝扩展方法和扩展路径存储方法。在本发明中,所述网络是指由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。例如将本发明用于文本搜索,则所述网络是指以词为顶点,共现频率为边的权值所构建的无向加权图。所述边权值大于阈值α是进行剪枝处理的一个过滤条件,阈值α的取值或者具体的过滤条件视具体情况而定。在本发明中,阈值α为最大边权值的80%。所述剪枝处理即将不满足前述过滤条件的不必要的搜索路径提前舍弃,以简化计算,降低计算复杂度。在本发明中,所述预处理的方法是指步骤1)中构建网络中每个顶点的子网络时使用的剪枝处理方法及扩展路径存储方法。在本发明中,顶点vi的子网络的各层顶点集合分别与步骤3.1)中得到的连通顶点集合做交集运算,可快速求得连通点关于顶点vi子网络的所属层次,并集合步骤1)存储的路径可快速得到连通点至顶点vi的连通路径。由于在步骤1)中进行子网络扩展时已经存储了顶点至各层次扩展顶点的路径信息,因此路径计算仅需查询即可,而距离由层次信息可得。与现有技术相比,本发明具有的有益效果为:1、本发明采用启发式剪枝广度优先搜索算法,可以有效减少路径索引量;2、本发明将多层次的网络结构转换成扁平化的单层次结构,简化计算,提高计算效率;3、本发明将路径搜索过程转换成集合操作,降低计算复杂度;4、本发明将子网络扁平化与路径计算转换成集合运算相结合,提高查询计算速率,能够实现秒级响应。附图说明图1为本发明实施例1中无向加权图的示意图;图2为本发明实施例1中构建的子网络第一层示意图;图3为本发明实施例1中构建的子网络第二层示意图;图4为本发明实施例1中两点近似最短路径示意图。具体实施方式根据本发明的实施方案,提供一种基于扁平化的网络连通路径快速搜索方法:一种基于扁平化的网络连通路径快速搜索方法,该方法包括以下步骤:1)以剪枝方式构建网络中每个顶点vi的子网络gi;2)将步骤1)中得到的子网络gi扁平化,获得扁平化子网络;和3)利用扁平化子网络求解网络任意两点之间的近似最短路径。在本发明中,所述步骤1)中子网络的构建方法具体为:1.1)遍历顶点vi的所有邻接顶点,若邻接顶点vk(其中vk∈vi,集合vi为顶点vi的邻接顶点集合)与顶点vi之间的边eik的权值wik大于阈值α,则加入集合vi1,否则加入集合v′i1;其中,边权值大于阈值α的邻接顶点集合vi1作为顶点vi子网络gi的第一层,并记集合vi1的顶点vj(vj∈vi1)关于顶点vi的路径为pij=(i:j),而集合v′i1的顶点剪枝掉,即不进行接下来的步骤;1.2)对顶点集合vi1中的任意顶点vk,遍历vk所有邻接顶点,若邻接顶点vm(其中vm∈vk,集合vk为顶点vk的邻接顶点集合)与顶点vk之间的边ekm的权值wkm大于阈值α且顶点vm不存在于子网络gi中(即),则加入集合vi2,否则加入集合v′i2;其中,邻接顶点集合vi2作为顶点vi子网络gi的第二层,并记集合vi2的顶点vl(vl∈vi2)关于初始顶点vi的路径为pil=pik+(k∶l)=(i∶k∶l),而集合v′i2的顶点剪枝掉,即不进行后续的操作步骤;1.3)重复步骤1.2)中的扩展方式,将顶点vi的子网络gi扩展到最大层数。在本发明中,所述步骤2)中将子网络扁平化的方法具体为:2.1)排序网络中全部顶点,得到顶点序列s;2.2)将步骤1)中得到的顶点vi的子网络gi的各层顶点集合vi1,vi2,vi3,...,vin分别转换成向量表示形式,集合至向量转换过程如下:设顶点集合vi中的顶点为(v1,v2,v3...,vs),并查询集合vi中顶点在序列s中的序号为(i1,i2,i3...,is);设维度为||s||(||s||为序列长度,即所有顶点数目)的向量分别将向量第i维(i∈{i1,i2,i3...,is})的数值设为1,其他维度数值设置为0,如此得到的向量为集合vi的向量表示;同理转换子网络的所有集合,经过转换后,子网络gi可由一组向量表示为2.3)对各层顶点集合vi1,vi2,vi3,...,vin求并集,以实现子网络gi的扁平化,即将步骤2.2)中所得向量的各维按位求或运算,得到扁平化后的子网络在本发明中,所述步骤3)中求解网络任意两点之间的近似最短路径的方法具体为:3.1)假设两个顶点分别为vi、vj,它们的扁平化子网络分别为两点之间的所有连通点为两个子网络顶点的交集,即将扁平化子网络向量的各维按位与运算,得3.2)从顶点之间的连通点求得顶点之间的路径:顶点vi的子网络的各层顶点集合分别与步骤3.1)中得到的连通顶点集合做交集运算,子网络各层顶点向量与连通顶点向量的各维按位求与运算,得若向量各维不全为零,则在顶点vi子网络的第k层存在连接顶点vi与vj的连通点,若向量的第m维不为零,则顶点vm是顶点vi与vj的一个连通点;由步骤1)可得顶点vi到该顶点vm的路径为pim,顶点vj到该顶点vm的路径为pjm,从而顶点vi至顶点vj的一条路径为pij=pim+pjm。优选的是,所述步骤1.3)中顶点vi的子网络gi的最大扩展层数为2-8层,优选为3-6层。优选的是,所述边权值为顶点之间的共现频率,表示顶点之间的相关程度。优选的是,所述阈值α为最大边权值的80%。优选的是,所述步骤2.2)中向量第i维数值为“1”表示顶点集合vi中第i个顶点在该层顶点集合中存在,数值为“0”表示不存在。优选的是,所述排序为根据顶点值将网络中全部顶点按字典序升序排列。优选的是,所述转换为集合至向量的转化;集合v中的顶点在序列s中的序号为i,则向量的第i维为1,其他维度为0。优选的是,在进行步骤1)构建网络中每个顶点的子网络之前,对网络进行预处理。优选的是,所述预处理的方法是剪枝扩展方法和扩展路径存储方法。实施例1以在某医疗关联搜索引擎的使用为例,具体阐述本发明在关联图上进行搜索的应用:系统环境如下表:机器浪潮nf5270m3,10台操作系统ubuntu14.04server数据库mysql5.5开发语言java(oraclejdk8)分布式计算框架hadoop2.6.0对搜索文档集中的文档进行断句,获得句子集合,对句子集合进行分词获取词集合,计算词集合中任意两个词之间的共现频率,存储于mysql中。以词为顶点,共现频率为边的权值,构建无向加权图,如图1所示。一种基于扁平化的网络连通路径快速搜索方法,该方法包括以下步骤:1)以剪枝方式构建网络中每个顶点的子网络,为方便描述,以图1网络中顶点“1”为例描述子网络的构建方法:1.1)遍历顶点“1”的所有邻接顶点,保留邻接顶点中边权值最大的2个邻接顶点加入集合v11(即顶点“2”与顶点“3”,v11={2,3}),集合v11作为顶点“1”子网络g1的第一层,如图2所示,并记第一层顶点关于顶点“1”的路径p1j=(1:j),例如顶点“1”至顶点“2”的路径表示为p12=(1:2),而其他邻接顶点进行剪枝掉,即不进行接下来的步骤,;1.2)对顶点集合v11的任意顶点,遍历其所有邻接顶点,保留邻接顶点中边权值最大的2个邻接顶点且不存在于子网络g1中的邻接顶点集合v12={5,6,7}作为顶点“1”的子网络g1的第二层,如图3所示,并记第二层顶点vl(vl∈v12)关于初始顶点“1”的路径为pil=pik+(k∶l)=(i∶k∶l),其中顶点k为上层顶点,例如顶点“5”关于顶点“1”的路径为p15=p12+(2:5)=(1:2)+(2:5)=(1:2:5),而其他邻接顶点同样剪枝掉,即不进行后续的操作步骤。2)将步骤1)中得到的子网络扁平化,其步骤如下:2.1)排序网络中全部顶点得到有序顶点集合v(1∈v);2.2)将步骤1)中得到的顶点“1”的子网络g1的各层顶点集合分别转换成向量表示形式,即第一层顶点的向量表示为第二层顶点的向量表示为经过转换后,子网络g1可由一组向量表示2.3)对各层顶点集合求并集,以实现子网络的扁平化,扁平化后的子网络即将步骤2.2)中所得向量的各维按位求或运算,得3)利用扁平化子网络求解网络任意两点之间的近似最短路径,其步骤如下:3.1)假设两个顶点分别为“1”和“7”,它们的扁平化子网络向量分别为两点之间的所有连通点为两个子网络顶点的交集,即将扁平化子网络向量的各维按位求与运算,得3.2)从顶点之间的连通点求得顶点之间的路径:顶点“1”的子网络的各层顶点集合分别与步骤3.1)中得到的连通顶点集合做交集运算,子网络g1=((0,1,1,0,0,0,0),(0,0,0,0,1,1,1))的各层顶点向量与连通顶点向量的各维按位求与运算,即若向量各维不全为零,则在顶点“1”子网络的第k层存在连接顶点“1”与“7”的连通点,若向量的第m维不为零,则顶点vm是顶点“1”与“7”的一个连通点,由此结合步骤3.2)的结果显然两点之间的连通点向量与子网络g1的第一层扁平化向量求与运算的结果不为0,其第3维为1,即得顶点“3”是“1”、“7”两顶点连通路径上的顶点,且同时位于顶点“1”和“7”的子网络的第一层;再由步骤1)可得顶点“1”到顶点“3”的路径为p13,顶点“7”到顶点“3”的路径为p73;从而顶点“1”至顶点“7”的近似最短路径为p17=p13+p73=(1∶3∶7),如图4所示。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1