图查询方法、装置、电子设备及计算机可读存储介质与流程

文档序号:21633421发布日期:2020-07-29 02:43阅读:171来源:国知局
图查询方法、装置、电子设备及计算机可读存储介质与流程

本申请涉及图查询技术领域,具体而言,涉及一种图查询方法、装置、电子设备及计算机可读存储介质。



背景技术:

一般地,在很多现实应用例如社会网络、语义网、交易网络等中,图数据库已经被广泛用作建模和查询复杂图数据的重要工具。图是一种数据结构,其中的节点可以具有零个或多个相邻元素。目前很多广泛研究关于图的各种查询,其中子图匹配是一种基本的图查询类型。一种典型的子图匹配查询,给出一个查询图和一个大图,将检索查询图的那些在大图中图拓扑结构准确匹配的子图。

现有技术中,ullmann算法和vf2算法是经典的子图匹配方法。neo4j是常用的图数据库系统,它对于子图匹配没有专门的实现,而是通过进行路径匹配达到子图匹配的效果。ullmann算法、vf2算法和neo4j上使用的图查询方法在实际计算中速度均较慢,当数据量较大时,算法的时间开销很大,不能满足实际应用的需求。而且,这些算法都是精确匹配的算法,无法进行模糊的子图匹配,可能会损失查询结果的泛化能力。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本申请的目的在于提供一种图查询方案,进而至少在一定程度上解决现有技术中存在的图查询方法在实际计算中速度均较慢,算法的时间开销很大,而且,查询结果的泛化能力较低的问题,进而有效提升图查询的效率,并提升查询结果的泛化能力。

根据本申请的一个方面,提供一种图查询方法,其特征在于,所述方法包括:

将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间;

将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目;

对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇;

基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点相似的候选节点集合;

计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图;

从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

在本申请的一种示例性实施方式中,所述基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合,包括:

利用knn算法计算每个所述节点聚类簇在所述第一向量空间中的预定数目个相似节点,得到相似节点集合作为所述候选节点集合,所述节点聚类簇每个所述节点聚类簇与对应的所述预定数目个相似节点的相似度超过第一预定阈值。

在本申请的一种示例性实施方式中,所述基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合,包括:

基于公式mi=ai*li*s/(a1+a2+...+an),li=((a1+a2+...+an)/ai)-1/2计算每个所述节点聚类簇在所述第一向量空间中相似节点的对应数目,其中,所述mi为第i个节点聚类簇在所述第一向量空间中相似节点的对应数目,所述ai为第i个节点聚类簇中节点的个数,(a1+a2+...+an)为所有节点聚类簇中节点的总个数,li为放大系数,s为第一向量空间的节点的总个数;

每个所述节点聚类簇在所述第一向量空间中相似节点的对应数目,利用knn算法计算每个所述节点聚类簇在所述第一向量空间中的相似节点,得到相似节点集合作为所述候选节点集合,每个所述节点聚类簇与对应的所述预定数目个相似节点的相似度超过第一预定阈值。

在本申请的一种示例性实施方式中,所述从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果,包括:

计算每个所述连通子图中节点的数目与所述第二图中节点的数目的差值;

将所述差值大于第二预定阈值的连通子图剔除,得到剩余的连通子图集合,以从所述剩余的连通子图集合中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

在本申请的一种示例性实施方式中,所述从所述剩余的连通子图集合中获取所述第二图在所述第一图中拓扑结构相似的图,包括:

通过图同构算法计算所述剩余的连通子图集合中每个连通子图与所述第二图的相似度;

将高于预定相似度阈值的所述相似度对应的连通子图,作为所述第二图在所述第一图中拓扑结构相似的图。

在本申请的一种示例性实施方式中,所述对所述第二向量空间计算聚类,包括:

通过kmeans算法,dbscan算法及clustering算法中任一种,对所述第二向量空间计算聚类。

在本申请的一种示例性实施方式中,所述将第一图进行图嵌入映射至向量空间,包括:

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种,将所述第一图进行图嵌入映射至向量空间。

所述将第二图进行图嵌入映射至向量空间,包括:

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种,将所述第二图进行图嵌入映射至向量空间。

根据本申请的一个方面,提供一种图查询装置,其特征在于,所述装置包括:

第一映射模块,用于将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间;

第二映射模块,用于将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目;

聚类模块,用于对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇;

候选模块,用于基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点相似的候选节点集合;

计算模块,用于计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图;

匹配模块,用于从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

根据本申请的一个方面,提供一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述任一项所述的方法。

根据本申请的一个方面,提供一种电子设备,包括:

处理器;以及

存储器,用于存储所述处理器的计算机可读指令;其中,所述处理器配置为经由执行所述计算机可读指令来执行上述任一项所述的方法。

本申请一种图查询方法及装置,首先,将第一图进行图嵌入映射至向量空间,得到第一图的第一向量空间;通过图嵌入方法将第一图的拓扑结构信息映射至向量空间,可以由第一向量空间来表征第一图的拓扑结构信息。将第二图进行图嵌入映射至向量空间,得到第二图的第二向量空间,第二图中的节点数目小于等于第一图中的节点数目;通过图嵌入方法将第二图的拓扑结构信息映射至向量空间,可以由第二向量空间来表征第二图的拓扑结构信息,可以实现后续步骤中基于图嵌入的图拓扑结构相似性计算,提升计算效率。然后,对第二向量空间计算聚类,得到第二图的节点聚类簇;可以使得每个节点聚类簇中的第二图的节点在向量空间表征上是相似的。进而,基于第一向量空间及节点聚类簇,计算第一图的节点中与第二图的节点的相似的候选节点集合;通过向量空间表征上是相似的节点聚类簇与第一向量空间计算相似的候选节点集合,可以不通过全部节点进行相似度计算,而基于数目更少的聚类簇进行图拓扑结构相似性计算,进一步提升计算效率。然后,计算候选节点集合中每个节点的最大连通子图,得到多个连通子图;可以得到包括候选节点集合中与第二图的节点相似节点最多的所有最大连通子图。最后,从多个连通子图中获取第二图在第一图中拓扑结构相似的图,作为第二图在第一图中的查询结果,可以高效的匹配计算得到的具有泛化能力的查询结果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出一种图查询方法的流程图。

图2示意性示出一种图查询方法的应用场景示例图。

图3示意性示出又一种图查询方法流程图。

图4示意性示出一种图查询装置的方框图。

图5示意性示出一种用于实现上述图查询方法的电子设备示例框图。

图6示意性示出一种用于实现上述图查询方法的计算机可读存储介质。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本申请的各方面变得模糊。

此外,附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本示例实施方式中首先提供了图查询方法,该图查询方法可以运行于服务器,也可以运行于服务器集群或云服务器等,当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图1所示,该图查询方法可以包括以下步骤:

步骤s110,将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间;

步骤s120,将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目;

步骤s130,对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇;

步骤s140,基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点相似的候选节点集合;

步骤s150,计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图;

步骤s160,从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

上述图查询方法,首先,将第一图进行图嵌入映射至向量空间,得到第一图的第一向量空间;通过图嵌入方法将第一图的拓扑结构信息映射至向量空间,可以由第一向量空间来表征第一图的拓扑结构信息。将第二图进行图嵌入映射至向量空间,得到第二图的第二向量空间,第二图中的节点数目小于等于第一图中的节点数目;通过图嵌入方法将第二图的拓扑结构信息映射至向量空间,可以由第二向量空间来表征第二图的拓扑结构信息,可以实现后续步骤中基于图嵌入的图拓扑结构相似性计算,提升计算效率。然后,对第二向量空间计算聚类,得到第二图的节点聚类簇;可以使得每个节点聚类簇中的第二图的节点在向量空间表征上是相似的。进而,基于第一向量空间及节点聚类簇,计算第一图的节点中与第二图的节点的相似的候选节点集合;通过向量空间表征上是相似的节点聚类簇与第一向量空间计算相似的候选节点集合,可以不通过全部节点进行相似度计算,而基于数目更少的聚类簇进行图拓扑结构相似性计算,进一步提升计算效率。然后,计算候选节点集合中每个节点的最大连通子图,得到多个连通子图;可以得到包括候选节点集合中与第二图的节点相似节点最多的所有最大连通子图。最后,从多个连通子图中获取第二图在第一图中拓扑结构相似的图,作为第二图在第一图中的查询结果,可以高效的匹配计算得到的具有泛化能力的查询结果。

一种实施例中,第一图是由大量用户(第一用户集)作为节点(例如,某平台的用户或者某企业的员工),大量用户之间的联系(行为特征)作为边构建的大图,则第一向量空间对应于大量用户的特征向量空间。第一图是由相对于第二图用户群体少量的用户作为节点(例如,某平台上参与某个平台项目的用户或者某个部门的员工),少量用户(第二用户集)之间的联系(行为特征)作为边构建的大图,则第二向量空间对应于大量用户的特征向量空间。通过构建图可以反映用户之间的各种关联,并通过映射向量空间表征构建的图的拓扑结构信息,可以用于准确从大量用户中查找到与少量用户之间联系及行为特征相似的群体。对第二向量空间计算聚类,得到第二图的节点聚类簇,可以基于少量用户(第二用户集)的行为特征空间进行聚类,基于向量空间获得获得少量用户内相似的团体(聚类簇)。然后,基于聚类簇从大量用户中获得图拓扑结构相似的候选用户(候选节点集合)。最后,通过候选节点集合的最大连通子图,获取少量用户在大量用户中所有的关联用户群体(多个连通子图中获取第二图在所述第一图中拓扑结构相似的图)作为查询结果,可以高效的匹配计算得到的泛化的关联用户群体。

下面,将结合附图对本示例实施方式中上述图查询方法中的各步骤进行详细的解释以及说明。

在步骤s110中,将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间。

在本示例的实施方式中,参考图2所示,提供了一种可以应用本申请图查询方法的实施例的系统架构图,该系统架构包括:服务器201和移动终端202,移动终端202可以接收用户的图匹配命令,并发送给服务器201,该图匹配命令用于指示服务器201从第一图中查询与第二图匹配的连通子图。第一图可以是由所有用户节点组成的社交网络对应的大图,第二图可以目标用户节点及其好友节点组成的子社交网络对应的查询图;通过从第一图中查询与第二图匹配的连通子图,可以查找到与目标用户社交关联或相似特征的用户节点,进行推荐。可以理解,第一图及第二天也可以是网络路由场景下,服务器节点组成的图,或者道路交点的节点组成的图。同时,在后续步骤中,在条件允许的情况下,也可以由移动终端202在本地从第一图中查询与第二图匹配的连通子图。其中,服务器201可以是任何具有处理能力的设备,例如,服务器集群、微处理器等,移动终端202可以是任何具有执行程序功能的设备,例如,手机、平板电脑等在此不做特殊限定。

通过图嵌入方法将第一图的拓扑结构信息映射至向量空间,可以由第一向量空间来表征第一图的拓扑结构信息。

一种实施例中,所述将第一图进行图嵌入映射至向量空间,包括:

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种,将所述第一图进行图嵌入映射至向量空间。

图是由顶点的有穷非空集合和顶点之间边的集合组成,通常可以表示为:第一图g1(v,e),其中,g表示一个图,v是图g中节点的集合,e是图g中边的集合。

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种可以将第一图进行图嵌入映射至向量空间。

以node2vec为例,将图嵌入至向量空间,可以是:

node2vec算法可以综合考虑广度优先搜索邻域(考虑节点的结构相似性)和深度优先搜索邻域(考虑节点之间的内容相似性),以每个节点作为起始节点,对近邻节点进行有偏地随机采样得到多个节点序列,映射成特征向量,反映出关系网络各种社交属性的特征。

其中,有偏的随机采样策略可以根据实际任务,通过训练的node2vec算法函数中的超参数p和q进行控制,p是控制访问走过的节点,即往回走;q是控制访问还没有走过的节点,即向外走。具体地,该函数中随机游走时,从一个节点ci-1到下一个节点ci的概率通过下式确定:

其中,πvx为节点之间为归一化概率,z为所有下一个搜索到的节点的概率的和,wvx为节点v与x之间的边权,当随机游走经过连接边tv,到达节点v,从节点v到下一个节点x的概率:

πvx=αpq(t,x)·wvx,

其中,dtx为节点t与节点x之间的最短路径距离,p作用与dtx=0的情景,也就是节点x就是当前节点v之前访问过的节点,此时,p越高则访问刚刚访问过的节点的概率低,q大于1表示随机游走倾向于访问和t接近的节点,q小于1表示随机游走倾向于访问和t远离的节点。对于不同任务需求,通过半监督学习训练出p,q参数,例如某两个性质的节点偏向于访问刚刚访问过的节点的类型,则训练较小的p参数。

进而利用node2vec算法可以将第一图g1(v,e),映射成多维矩阵(第一向量空间),矩阵的每一维就代表一类特征向量。矩阵的每一行对应于一个节点的第一向量。

在步骤s120中,将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目。

在本示例的实施方式中,通过图嵌入方法将第二图的拓扑结构信息映射至向量空间,可以由第二向量空间来表征第二图的拓扑结构信息,可以实现后续步骤中基于图嵌入的图拓扑结构相似性计算,提升计算效率。

一种实施例中,所述将第二图进行图嵌入映射至向量空间,包括:

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种,将所述第二图进行图嵌入映射至向量空间。

图是由顶点的有穷非空集合和顶点之间边的集合组成,通常可以表示为:第二图g2(v,e),其中,g表示一个图,v是图g中节点的集合,e是图g中边的集合。

通过deepwalk算法,node2vec算法,struct2vec算法,line算法及graphwave算法中任一种可以将第二图进行图嵌入映射至向量空间。

以node2vec为例,将图嵌入至向量空间,可以是:

node2vec算法可以综合考虑广度优先搜索邻域(考虑节点的结构相似性)和深度优先搜索邻域(考虑节点之间的内容相似性),以每个节点作为起始节点,对近邻节点进行有偏地随机采样得到多个节点序列,映射成特征向量,反映出关系网络各种社交属性的特征。

其中,有偏的随机采样策略可以根据实际任务,通过训练的node2vec算法函数中的超参数p和q进行控制,p是控制访问走过的节点,即往回走;q是控制访问还没有走过的节点,即向外走。具体地,该函数中随机游走时,从一个节点ci-1到下一个节点ci的概率通过下式确定:

其中,πvx为节点之间为归一化概率,z为所有下一个搜索到的节点的概率的和,wvx为节点v与x之间的边权,当随机游走经过连接边tv,到达节点v,从节点v到下一个节点x的概率:

πvx=αpq(t,x)·wvx,

其中,dtx为节点t与节点x之间的最短路径距离,p作用与dtx=0的情景,也就是节点x就是当前节点v之前访问过的节点,此时,p越高则访问刚刚访问过的节点的概率低,q大于1表示随机游走倾向于访问和t接近的节点,q小于1表示随机游走倾向于访问和t远离的节点。对于不同任务需求,通过半监督学习训练出p,q参数,例如某两个性质的节点偏向于访问刚刚访问过的节点的类型,则训练较小的p参数。

进而利用node2vec算法可以将第二图g2(v,e),映射成多维矩阵(第二向量空间),矩阵的每一维就代表一类特征向量。矩阵的每一行对应于一个节点的第二向量。

在步骤s130中,对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇。

在本示例的实施方式中,对第二向量空间计算聚类,得到第二图包括的节点的节点聚类簇。可以使得每个节点聚类簇中的第二图的节点在向量空间表征上是相似的。可以将维度较高的第二图的节点维度实现降维,提升后续步骤中的计算效率。

一种实施例中,所述对所述第二向量空间计算聚类,包括:

通过kmeans算法,dbscan算法及clustering算法中任一种,对所述第二向量空间计算聚类。

通过kmeans算法,dbscan算法及clustering算法中任一种,可以对第二向量空间计算聚类,得到第二图的节点聚类簇。

以kmeans聚类为例,对第二向量空间计算聚类,可以是:

首先确定一个k值,即我们希望将第二向量空间中的每个节点对应的第二向量经过聚类得到k个节点簇;

从第二向量空间中随机选择k个节点的第二向量作为质心;

对第二向量空间中每一个节点对应的第二向量,计算其与每一个质心的距离(如欧式距离),节点离哪个质心的距离小于预定阈值,就划分到哪个质心所属的集合;

然后,把所有节点归好集合后,一共有k个集合,并重新计算每个集合的质心;

如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。如果新质心和原质心距离变化很大,迭代上述步骤,直到收敛,完成聚类。得到第二节点的节点聚类簇。

在步骤s140中,基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合。

在本示例的实施方式中,计算相似的候选节点集合的相似度度量方法包括但不限于欧式距离,角度距离。可以选取节点聚类簇中预定数目个节点对应的向量,与第一向量空间中每个节点对应的向量进行相似度计算,得到与节点聚类簇中预定个数个节点都相似的第二图的节点,作为节点聚类簇中每个节点相似的第二图的节点,其中,预定个数可以是至少1个,或者至多3个等。

通过向量空间表征上是相似的节点聚类簇与第一向量空间计算相似的候选节点集合,可以不通过全部节点进行相似度计算,而基于数目更少的聚类簇进行图拓扑结构相似性计算,进一步提升计算效率。

一种实施例中,所述基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合,包括:

利用knn算法计算每个所述节点聚类簇在所述第一向量空间中的预定数目个相似节点,得到相似节点集合作为所述候选节点集合,所述节点聚类簇每个所述节点聚类簇与对应的所述预定数目个相似节点的相似度超过第一预定阈值。

使用knn算法计算第一图的第一向量空间,可以设定预定数目k为传入参数,例如k为默认值100。对第二中的所有节点计算在第一图中和其最相近的k个节点,计算度量方法包括但不限于欧式距离,角度距离。取得和第二图中节点相似的候选节点集合。

其中,knn算法计算计算过程可以是:

1).准备数据(第一向量空间及所述第二图的节点聚类簇数据);

2).设定参数预定数目k(例如,k设定为100);

3).维护一个大小为k的的按距离由大到小的优先级队列,用于存储第一向量空间中的节点的第一向量。随机从第一向量空间中的节点的第一向量中选取k个节点的第一向量作为初始的最近邻元组,分别计算第二图的节点簇到这k个节点的第一向量的距离(可以通过不限于欧式距离、角度距离等),然后将节点的第一向量和距离存入优先级队列;

4).遍历优先级队列,将距离小于第一预定阈值的作为第一图的节点中与第二图的节点的相似的候选节点。

一种实施例中,所述基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合,包括:

基于公式mi=ai*li*s/(a1+a2+...+an),li=((a1+a2+...+an)/ai)-1/2计算每个所述节点聚类簇在所述第一向量空间中相似节点的对应数目,其中,所述mi为第i个节点聚类簇在所述第一向量空间中相似节点的对应数目,所述ai为第i个节点聚类簇中节点的个数,(a1+a2+...+an)为所有节点聚类簇中节点的总个数,li为放大系数,s为第一向量空间的节点的总个数;

每个所述节点聚类簇在所述第一向量空间中相似节点的对应数目,利用knn算法计算每个所述节点聚类簇在所述第一向量空间中的相似节点,得到相似节点集合作为所述候选节点集合,每个所述节点聚类簇与对应的所述预定数目个相似节点的相似度超过第一预定阈值。

基于经验公式mi=ai*li*s/(a1+a2+...+an),可以根据第一向量空间的节点的总个数及每个节点聚类簇中节点的个数,计算得到每个节点聚类簇在所述第一向量空间中相似节点的对应数目,该对应数目与每个节点聚类簇中节点的数目成正比,节点聚类簇中节点越多说明该节点聚类簇在第二图中所有节点中越重要,基于该对应数目可以保证越重要的节点聚类簇获取越多的相似节点,且总的候选节点集合中可以保证有足够多的节点,进行后续步骤的图查询。

在步骤s150中,计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图。

在本示例的实施方式中,候选节点集合中的节点如果组成连通图,计算候选节点集合中每个节点的最大连通子图,则计算得到一个最大连通子图,就是候选节点集合中的节点如果组成的连通图本身;候选节点集合中的节点如果组成非连通图,则可以计算得到多个最大连通子图(非连通图的最大连通子图即连通分量,每个连通分量都是一个连通图)。

通过现有的最大连通子图计算方法可以计算候选节点集合中每个节点的最大连通子图,得到多个连通子图。计算候选节点集合中每个节点的最大连通子图,得到多个连通子图;可以得到包括候选节点集合中与第二图的节点相似节点最多的所有最大连通子图。

在步骤s160中,从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

在本示例的实施方式中,可以通过图中拓扑结构相似度计算,从多个连通子图中获取第二图在第一图中拓扑结构相似的图,作为第二图在第一图中的查询结果,改查询结果可以是至少一个连通子图。

从多个连通子图中获取第二图在第一图中拓扑结构相似的图,作为第二图在第一图中的查询结果,可以高效的匹配计算得到的具有泛化能力的查询结果。

一种实施例中,参考图3所示,所述从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果,包括:

步骤s310,计算每个所述连通子图中节点的数目与所述第二图中节点的数目的差值;

步骤s320,将所述差值大于第二预定阈值的连通子图剔除,得到剩余的连通子图集合,以从所述剩余的连通子图集合中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

根据每个连通子图中节点的数目与第二图中节点的数目的差值,将差值大于预定阈值(例如3个或者1个等)的连通子图剔除,可以过滤掉和第二图中节点数量明显不符的连通子图。例如,可以传入参数max,min。默认为1.1和0.9,即默认过滤掉连通子图中节点数超过第二图节点数1.1倍和小于0.9倍的连通子图,得到过滤后的剩余的连通子图集合。通过节点数目的差别的高效过滤,可以进一步提升查询效率。

一种实施例中,所述从所述剩余的连通子图集合中获取所述第二图在所述第一图中拓扑结构相似的图,包括:

通过图同构算法计算所述剩余的连通子图集合中每个连通子图与所述第二图的相似度;

将高于预定相似度阈值的所述相似度对应的连通子图,作为所述第二图在所述第一图中拓扑结构相似的图。

对剩余的连通子图集合中每个连通子图和第二图使用图同构算法做相似性比较,取得相似性得分。可以传入参数预定相似度阈值sim,默认0.8,将相似性得分低于预定相似度阈值的连通子图再次过滤,然后按得分排序,得到高于预定相似度阈值的相似度对应的连通子图集合,即和第二图拓扑结构相似的图。

对剩余的连通子图集合中每个连通子图和第二图使用图同构算法做相似性比较可以是:例如,连通子图g1和第二图g2。g1,g2顶点和边数量相同,且边(具有方向性,即有向图)的连接性相同,这两个图定义为同构。可以认为,g1的节点是由g2中的节点映射得到。可以对于连通子图g1和第二图g2,可以通过判断下列要素进行两个图的相似性比较:图是否有相同的顶点数;是否有相同的边数;是否有对应顶点的度相同等进行图同构算法做相似性比较。

例如,两个图都为5个顶点;两个图都有6条边;图1有1度顶点e,而图2没有1度顶点等,进行相似度计算,这样可以得到剩余的连通子图集合中每个连通子图与第二图的相似度得分,进而将相似度得分低于阈值的连通子图,按得分排序,得到高于预定相似度阈值的相似度对应的连通子图集合,即和第二图拓扑结构相似的图。

以本申请的实施例,可以实现:图查询方法在计算中速度有效提升,特别地,当数据量较大时,算法的时间开销较小,能够良好地满足实际应用的需求。而且,可以进行模糊的子图匹配,保证图查询结果的泛化能力。

实现基于图嵌入的图拓扑结构相似性检测方法,与传统的图数据库查询技术相比,基于图数据库的查询方法通常是为属性图设计的,需要图节点的属性信息,而本申请只需要图网络拓扑结构的信息。相比于传统的子图匹配算法只能进行精确的匹配,本申请提供了相似性得分,可以容忍拓扑结构上的细微差异并提供包容性的查询结果。当数据量较大时,无论是基于图查询的算法还是传统子图匹配的算法,时间开销都很大,而本发明基于图嵌入的方法可以快速地计算出结果,大大提升了查询效率。

本申请还提供了一种图查询装置。参考图4所示,该图查询装置包括第一映射模块410、第二映射模块420、聚类模块430、候选模块440、计算模块450及匹配模块460。其中:

第一映射模块410可以用于将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间;

第二映射模块420可以用于将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目;

聚类模块430可以用于对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇;

候选模块440可以用于基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点相似的候选节点集合;

计算模块450可以用于计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图;

匹配模块460可以用于从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

上述图查询装置中各模块的具体细节已经在对应的图查询方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施方式的方法。

在本申请的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图5来描述根据本发明的这种实施方式的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元510、上述至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图1中所示的步骤,步骤s110,将第一图进行图嵌入映射至向量空间,得到所述第一图的第一向量空间;步骤s120,将第二图进行图嵌入映射至向量空间,得到所述第二图的第二向量空间,所述第二图中的节点数目小于等于所述第一图中的节点数目;步骤s130,对所述第二向量空间计算聚类,得到所述第二图的节点聚类簇;步骤s140,基于所述第一向量空间及所述节点聚类簇,计算所述第一图的节点中与所述第二图的节点的相似的候选节点集合;步骤s150,计算所述候选节点集合中每个节点的最大连通子图,得到多个连通子图;步骤s160,从所述多个连通子图中获取所述第二图在所述第一图中拓扑结构相似的图,作为所述第二图在所述第一图中的查询结果。

存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(rom)5203。

存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备500也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得客户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口550进行,还可以包括与输入/输出(i/o)接口550连接的显示单元540。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。

在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

参考图6所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品600,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在客户计算设备上执行、部分地在客户设备上执行、作为一个独立的软件包执行、部分在客户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到客户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其他实施例。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1