CN112579835A - 一种子图匹配方法及系统、电子设备、存储介质 - Google Patents
一种子图匹配方法及系统、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112579835A CN112579835A CN202110207693.1A CN202110207693A CN112579835A CN 112579835 A CN112579835 A CN 112579835A CN 202110207693 A CN202110207693 A CN 202110207693A CN 112579835 A CN112579835 A CN 112579835A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- ind
- msq
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9038—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种子图匹配方法及系统、电子设备、存储介质,其中,该子图匹配方法包括步骤:将子图中的所有节点进行排序;将排序后的所有节点进行数据化表示;以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。本发明将传统子图匹配操作中的join操作替换为节点搜索操作,进行子图匹配时,可以以全图中的任意节点为起点,也可以任意设置搜索结束条件,且搜索过程中不会产生中间结果,因此可以极大地提高子图匹配效率,降低内存消耗。
Description
技术领域
本发明涉及知识图谱技术领域,特别涉及一种子图匹配方法及系统、电子设备、存储介质。
背景技术
图数据在许多应用中都是重要的数据结构,包括社交网络、web和生物信息学领域等。随着数据储存能力的提升,处理大规模图结构数据的能力对于越来越多的应用场景至关重要。现有很多研究致力于提升在图数据结构上的操作效率,如子图匹配、正则表达式匹配等。子图匹配是指子图同构,即给定查询图和数据图,找出数据图中与查询图有相同结构的子图。
“Efficient Subgraph Matching on Billion Node Graphs”. Proceedings ofthe VLDB Endowment, Vol. 5, No. 9. Zhao Sun, Hongzhi Wang等,提出了一种可以在十亿级节点数的web网络上进行快速子图匹配的算法,文献中作者实验认为该算法可在Facebook网络(数十亿节点)上实现20s内的快速子图匹配(其他算法基本耗时几个小时以上)。然而该方法依赖于join操作,join操作就是sql语言(可以用其他语言实现)的两个表内连接操作的实现,例如图8a-d所示,图8a分解为三个基本单元q1, q2, q3,分别如图8b、图8c、图8d所示,假设子图匹配算法在全图G上匹配q1的所有同构子图集合作为表S1,q2的同构子图集合表S2,q3的同构子图集合表S3,join操作就是S1与S2进行内连接,S1有列名[d,b,c,e,f],S2有列名[c,a,f],S1与S2按列[c,f]进行内连接得到表S12,S12有列名[d,b,c,e,f,a],然后再S12与表S3按列[b,a,f]进行内连接。join操作会产生大量的通信开销(相当于单机的时候多个表格联合查询)以及中间结果,导致算法的时间开销以及内存开销都很大。另外,由于有中间结果,所以在中间结果庞大的时候难以对最终的子图匹配结果进行筛选。
发明内容
本发明的目的在于改善现有技术中所存在的时间开销和内存开销大的问题,提供一种新的子图匹配方法及系统,可以降低内存消耗,以及提高匹配效率。
为了实现上述发明目的,本发明实施例提供了以下技术方案:
一方面,本发明实施例提供了一种图匹配方法,包括以下步骤:
将子图中的所有节点进行排序;
将排序后的所有节点进行数据化表示;
以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
上述方案中,将传统子图匹配操作中的join操作替换为节点搜索操作,且通过对子图中的节点进行排序,基于排序后的节点进行搜索,可以以全图中的任意节点为起点,也可以任意设置搜索结束条件,且搜索过程中不会产生中间结果(要么为空,要么搜索到结果),因此可以极大地提高子图匹配效率,降低内存消耗。
所述基于排序后所有节点的数据化表示进行节点搜索的步骤中,以排序后的序列中排在某节点之前并且与该节点相邻的节点在序列中的坐标的集合为搜索范围,以序列中以该节点为起点的边的数量为匹配验证的限制条件进行搜索。
上述方案中,以排序后的序列中排在某节点之前并且与该节点相邻的节点在序列中的坐标的集合为搜索范围,以序列中以该节点为起点的边的数量为匹配验证的限制条件,进一步降低了搜索量,减少内存消耗,且进一步加快了搜索速度,提高搜索效率。
所述将子图中的所有节点进行排序的步骤,包括:
S101,遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集;
S102,将在V中且不在S中的节点,按照(d1, d2)进行字典排序;
S103,选取排序中(d1, d2)最大的节点v加入S;
S104,重复S101-S103,直到V的中所有节点都加入S;
S105,按照加入S的先后顺序输出有序集合S。
上述方案中,按照(d1, d2)进行字典排序,即d1的优先级高于d2的优先级,这样做的好处是,在全图按排序的数据化表示进行节点搜索的时候,d1可以降低下一步搜索的节点范围,减少搜索次数,继而进一步提高匹配效率。对于下一步需要搜索的节点v,d1越大,v需要与已经搜索到的节点集合S中越多的节点相连。实际上d1等于下文中提到的ind_v中的元素个数,ind_v元素个数越多,v要满足验证一就越困难,这样就可以减少搜索次数。另外,(d1, d2)越大的节点,对全图进行节点搜索的时候越难以满足条件,因此S103中选取排序中(d1, d2)最大的节点v加入S,可以实现搜索次数的最小化,进一步提高匹配效率。
所述S103中,如果排序中(d1, d2)最大的节点不止一个,则随机选取其中一个节点加入S。
所述将排序后的所有节点进行数据化表示的步骤,包括:
S201,对排序后S中的所有节点v,记录S中排在v之前并且与v相邻的节点在S中的坐标的集合,记为ind_v;
S202,对S的所有节点v,计算以v为起点的边的数量d3,用d3减去ind_v中的元素个数,得到的整数记为out_v;
S203,将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序输出该节点特征。
定义排序后节点的数字化表示为DS = [[ind_v0, out_v0], [ind_v1, out_v1],……[ind_vn, out_vn]],n为子图中节点的个数减1,DS[j][0]=ind_vj,DS[j][1]=out_vj,0≤j≤n;所述以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件的步骤,包括:
S301,记USM = {},令msq = [0, …, 0]为一个长度等于子图的节点数的全0序列,并计算全图G中以任意节点u为起点的边的数量u_d,如果u_d小于DS[0][1] ,则结束整个搜索流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0] = u,并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环F1,且循环F1中的元素v1∈u_nbr,并执行步骤S302;
S302,记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中还未验证过的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,执行步骤S303;
S303,令msq[k] = vk,并重新取ind_adj = DS[k+1][0],out_count = DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj;
S304,循环执行上述步骤S302-S303,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn则停止建立下一个循环,令ind_adj = DS[n][0],out_count = DS[n][1],对于循环Fn中还未验证过的元素vn,如果vn同时满足验证一与验证二,那么令msq[n]= vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM;
S305,判断是否满足搜索结束条件,如果是,则停止搜索,并输出USM。
上述方案中,将[ind_v, out_v]作为v的节点特征对排序后的节点进行数据化表示,再基于该数据化表示进行搜索,并以ind_v和out_v作为搜索限制条件,可以减低搜索量,提高搜索效率。具体分析,ind_v就是标记v与排列在v之前的节点之间的关系,因为排在v之前的节点先被找到,然后利用ind_v才能确定v的查找范围,S302也是通过ind_v来确定下一步的搜索范围(即for循环的范围)。Out_v是一个限制条件,限制了v满足验证二的可能性,out_v越大v满足验证二的可能性越低。ind_v的元素个数等于d1,out_v等于d2-d1,ind_v决定了v满足验证一的难度,out_v决定了v满足验证二的难度,这两个验证保证了搜索高效率,因为这两个验证筛除了大部分不满足条件的点,这样就能高效找出满足子图匹配条件的点。
所述步骤S302中,如果vk不满足验证一与验证二中的任一项或多项,则选取u_nbr或min_adj中的另一个节点作为vk,循环执行步骤S302,直至找到满足验证一与验证二的vk。
所述步骤S305中,判断是否满足搜索结束条件的步骤,包括:如果USM元素个数大于等于N,或者验证一与验证二进行了M次以上,或者完成所有情形的搜索,则判断为满足搜索结束条件,M和N均为正整数。
另一方面,本发明实施例提供了一种子图匹配系统,包括:
排序模块,被配置为将子图中的所有节点进行排序;
数据化模块,被配置为将排序后的所有节点进行数据化表示;
搜索模块,被配置为以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
所述搜索模块在执行搜索操作时,以排序后的序列中排在某节点之前并且与该节点相邻的节点在序列中的坐标的集合为搜索范围,以序列中以该节点为起点的边的数量为匹配验证的限制条件进行搜索。
所述排序模块包括:边计算子模块,被配置为遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集;排序子模块,被配置为将在V中且不在S中的节点,按照(d1, d2)进行字典排序;入选子模块,被配置为选取排序中(d1, d2)最大的节点v加入S,直到V中所有节点都按照先后顺序加入S。
所述入选子模块中,如果排序中(d1, d2)最大的节点不止一个,则随机选取其中一个节点加入S。
所述数据化模块包括:集合构造子模块,被配置为对排序后S中的所有节点v,记录S中排在v之前并且与v相邻的节点在S中的坐标的集合,记为ind_v;特征构造子模块,被配置为对S的所有节点v,计算以v为起点的边的数量d3,用d3减去ind_v中的元素个数,得到的整数记为out_v;数据化表示子模块,被配置为将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序输出该节点特征。
定义排序后节点的数字化表示为DS = [[ind_v0, out_v0], [ind_v1, out_v1],……[ind_vn, out_vn]],n为子图中节点的个数减1,DS[j][0]=ind_vj,DS[j][1]=out_vj,0≤j≤n;所述搜索模块包括:
首循环构造子模块,被配置为记USM = {},令msq = [0, …, 0]为一个长度等于子图的节点数的全0序列,并计算全图G中以任意节点u为起点的边的数量u_d,如果u_d小于DS[0][1] ,则结束整个搜索流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0] = u,并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环F1,且循环F1中的元素v1∈u_nbr;次循环构造子模块,被配置为构造次循环,所述构造次循环包括:记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,那么令msq[k] = vk,以及重新取ind_adj= DS[k+1][0],out_count = DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj;且次循环构造子模块还被配置为循环执行所述构造次循环的操作,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn则停止建立下一个循环;搜索子模块,被配置为当次循环构造子模块构造到for循环Fn时,令ind_adj = DS[n][0],out_count = DS[n][1],对于循环Fn中的元素vn,如果vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …,vn],将序列msq加入到USM;搜索结束判断子模块,被配置为判断是否满足搜索结束条件,如果是,则停止搜索,并输出USM。
所述次循环构造子模块中,如果vk不满足验证一与验证二中的任一项或多项,则选取u_nbr或min_adj中的另一个节点作为vk,并验证新的vk是否满足验证一和验证二,直至找到满足验证一与验证二的vk,并令msq[k] = vk。
所述搜索结束判断子模块,如果USM元素个数大于等于N,或者验证一与验证二进行了M次以上,或者完成所有情形的搜索,则判断为满足搜索结束条件,M和N均为正整数。
第三方面,本发明实施例提供了一种电子设备,包括:存储器,存储程序指令;处理器,与所述存储器相连接,执行存储器中的程序指令,实现本发明实施例中任一实施方式所述的子图匹配方法中的步骤。
第四方面,本发明实施例提供了一种存储介质,存储有可运行程序,其特征在于,所述可运行程序被处理器运行时,实现本发明实施例中任一实施方式所述的子图匹配方法中的步骤。
与现有技术相比,本发明方法及系统具有以下技术优势:
(1)实现了一种不需要join的子图匹配计算方法。本方法明显的改进就是不需要产生中间结果以及join操作,通过对子图节点排序以及排序数据化表示,算法产生了一个11层(仅以实施例中所述应用举例)嵌套的循环F1>F2>…F11,该循环每一次结果v1>v2>…有可能因为中间的某一个vk (k<=11)不满足验证一或者验证二,导致搜索失败没有输出,也有可能v1>v2>…>v11中每个点都满足验证一与验证二,这样就产生了一个正确的子图匹配结果并输出。即本方法是没有中间结果输出的,输出的每一个结果都是子图匹配的正确结果,而且不需要join操作,这样算法在输出部分子图匹配结果上具有领先的效率优势。
(2)方便对子图匹配的结果进行筛选。对起点u附近的子图匹配结果输出可以通过限制搜索到的结果数量N以及搜索次数M进行筛选,这样可以避免在某一个起点u附近进行大量的无效搜索或者搜索结果过多,这样就可以平衡在每一个节点附近的子图匹配结果数量。
(3)方便并行。本方法可以方便控制搜索起点,起点附近的搜索只需要起点附近的图信息,因此可以将全图的节点分为多份,每一份节点只需要附近的图信息进行子图匹配,这样就可以方便的进行并行,继而提高处理效率。
本发明所具有的其他优势将会在具体实施例中进行相应说明。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为实施例中子图匹配方法的流程图;
图2为步骤S10的流程图;
图3为步骤S20的流程图;
图4为步骤S30的流程图;
图5a为举例的一个子图的结构图;图5b、图5c、图5d、图5e分别为图5a的匹配结果示意图。
图6为实施例中子图匹配系统的组成框图;
图7为实施例中所述的电子设备的组成框图。
图8a为实施例中列举的一个全图,图8b、图8c、图8d分别为该全图的基本单元。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本实施例中提供的子图匹配方法的流程图。如图1所示,本方法包括步骤:
S10,将子图中的所有节点进行排序;
S20,将排序后的所有节点进行数据化表示;
S30,以全图中的任意节点为起点,在全图的每个节点局部,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
通过本方法可以降低内存消耗,提高匹配效率,在于1):本算法通过子图节点排序,按排序逐个搜索匹配条件,真正变join操作为搜索操作,本算法是一个基于搜索的子图匹配算法;2)在搜索过程中可以灵活调整搜索的起点和同一起点的搜索次数,这样可以极大减少搜索的时间开销和内存开销;3)因为每一次搜索的结果输出都是匹配到的子图或者没有输出,所以不会有庞大的中间结果产生,而且可以优先输出已经产生的子图匹配结果;4)因为算法搜索起点可以任意设置,所以可以并行,按照起点不同设置不同的并行任务。
更具体地,请参阅图2,本实施例中,作为举例,将子图中的节点进行排序的步骤包括:
S101,遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集。
S102,将在V中且不在S中的节点,按照(d1,d2)进行字典排序,即d1的优先级高于d2的优先级,先按照d1排序,如果多个节点的d1取值相等,再按照d2进行排序。注意,如果d1是按照由大(小)到小(大)排序,那么d2也是按照由大(小)到小(大)排序。
此处的排序可以是由大到小排序,也可以是由小到大排序。另外,本举例中,是直接按照d1和d2的个数进行排除,也可以采用其他方式,例如按照4^d1 * 2^d2计算结果来排序,但是要保障d1的优先级高于d2的优先级。
S103,选取以上排序中(d1, d2)最大的节点v加入S(即v的d1最大,同时在d1等于最大值的节点中v的d2最大),如果最大节点不止一个那么随机选取其中一个节点加入S。
S104,重复S101-S103,直到S等于V,也就是将集合V中的节点全部排序后放入集合S中。
S105,按照加入S的先后顺序输出有序集合S。
需要说明的是,本文中的字符例如S/V/E/v/q/u_nbr等,都是为了便于区别及描述而随意选用的,容易理解的,可以有不同的表达方式,字符不用于对本方法的任何限定。
以图5a所示的子图为例,该子图中节点集合为{0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11},边集合为{(0, 1), (1, 2), (2, 3), (3, 0), (0, 4), (1, 5), (2, 6), (3,7),(4, 5), (5, 6), (6, 7), (7, 4), (4, 8), (5, 9), (6, 10), (7, 11), (8, 9),(9, 10), (10, 11), (11, 8)}。
第一步计算在V中且不在S中的节点的(d1, d2)数值并按照字典排序,得到排序(d1, d2)最大的节点集合为{4, 5, 6, 7},这四个节点的(d1, d2)取值均为(0,4),其他节点均为(0,3),因此从{4, 5, 6, 7}这四个节点中随机选取4加入S,此时S = {4}。继续计算在V中且不在S中的节点的(d1, d2)并排序,此时得到的最大节点集合为{5,7},其(d1, d2)取值均为(1, 4),随机选取{5,7}这两个节点中的一个例如7加入S,此时S = {4, 7}。如此重复操作,直到对V中的所有节点都进行排序,得到S的最终集合为S = {4, 7, 5, 6, 0,3, 1, 2, 8, 11, 9, 10}。
数据化表示的含义就是如何通过子图的节点排序来重建子图。如图3所示,本实施例中,将排序后的节点进行数据化表示的步骤,包括:
S201,对排序后S中的所有节点v,记录S中排在v之前并且与v相邻(与v直接相连)的节点在S中的坐标集合,记为ind_v;
此处的坐标即是指节点在S中的位置顺序,本举例中坐标从0开始(仅是基于坐标使用习惯而言,当然也可以不从0开始),因此例如当v为节点7时,S中排在v之前并且与v相邻的节点在S中的节点为节点4,节点4在S中的第一个位置,故ind_v=0。
S202,对S的所有节点v,计算v在子图中的度数d3,此处的度数指子图中以v为起点的边的数量,用d3减去ind_v的元素个数,得到的整数记为out_v;
S203,将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序(即位置)输出该节点特征,即用节点特征代替该节点在S中的原有表示。
例如上述举例,子图的节点排序{4, 7, 5, 6, 0, 3, 1, 2, 8, 11, 9, 10},按照这个顺序,首先是节点4,ind_v = [], out_v = 4,然后是节点7,ind_v = [0],out_v =3。这样依次计算下去得到如下表所示的子图的节点排序的数据化表示(此处是以表的方式展示):
[[], 4] |
[[0], 3] |
[[0], 3] |
[[1, 2], 2] |
[[0], 2] |
[[1, 4], 1] |
[[2, 4], 1] |
[[3, 5, 6], 0] |
[[0], 2] |
[[1, 8], 1] |
[[2, 8], 1] |
[[3, 9, 10], 0] |
得到子图中节点排序后的数据化表示后,即可复原出子图。例如,第0行[[], 4]可以复原出一个度数为4的节点,该节点为第0个节点(坐标为0),并且度数为4;第1行[[0],3]可以复原出第1个节点(坐标为1),该节点与坐标在[0]中的节点相连,并且从坐标1的点出发至少还有三条边不与已经复原出的节点(即坐标为0的节点)相连;第三行复原出第2个节点(坐标为2),该节点与坐标在[0]中的节点相连,并且从坐标2的点出发至少还有三条边不与已经复原出的节点(即坐标为0、1的节点)相连;如此依次复原。
得到了子图的节点排序后的数据化表示,接下来需要在全图上的指定节点(本方案中的起点可以由用户任意指定)作为起点,并按子图节点排序后的数据化表示匹配出与子图同构的子图。为了便于描述,此处将子图用q表示,全图用G表示,子图节点排序后的数据化表示为DS,DS = [[ind_v0, out_v0], [ind_v1, out_v1], ……[ind_vn, out_vn]],子图中节点的个数为n+1。DS[j]就是DS的第j个位置的值=[ind_vj, out_vj],DS[j][0]就是ind_vj,就是DS的第j个位置的值的第0个位置的值,DS[j][1]就是out_vj,就是DS的第j个位置的值的第一个位置的值,0≤j≤n。
如图4所示,本实施例中,对全图G的任意节点u以及正整数M、N(M、N为搜索结束条件中的参数),u作为起点的子图匹配过程(即搜索过程),包括如下步骤:
S301,记USM = {}(用来收集最终的匹配结果),令msq = [0, …, 0]为一个长度等于q的节点数(n+1)的全0序列,并计算u的度数(指全图G中以u为起点的边的数量)u_d,如果u_d小于DS[0][1] ,则结束整个匹配流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0] = u(也就是将msq中坐标为0的元素替换为u),并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环:(for v1 属于u_nbr),记录该循环为F1,即此时的k=1。
S302,记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中还未验证过的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,执行步骤S303。
如果vk不满足验证一与验证二中的任一项或多项,则选取u_nbr或min_adj中的另一个节点作为vk,循环执行步骤S302,直至找到满足验证一与验证二的vk。
例如,对于for循环F1中的节点v1,记ind_adj = DS[1][0], out_count = DS[1][1],验证v1与msq中坐标属于ind_adj的点都相邻(称为验证一),验证以v1为起点但终点不在msq前1个元素中的边的数量大于等于out_count(称为验证二),如果v1同时满足验证一与验证二,那么执行步骤S303;
如果v1不满足验证一与验证二中的任一项或两项,则选取u_nbr中的另一个节点作为v1,即验证新的v1是否同时满足验证一与验证二,循环执行本步骤S302,直至找到满足验证一与验证二的v1。
如果将u_nbr中的所有节点作为v1也找不到同时满足验证一和验证二的节点,那么输出USM为空集。
另外,在更完善的方案中,如果人为设置了外部搜索结束条件,例如USM元素个数大于等于N,或者上述验证一与验证二进行了M次以上,M和N均为由用户任意设置的正整数,则有可能搜索会因为M和N满足条件而结束搜索。因此在验证vk是否同时满足验证一与验证二之前,先进行搜索结束判断,即判断搜索是否结束,如果结束则输出USM,没有结束才验证vk是否同时满足验证一与验证二,并执行后续操作。
S303,令msq[k] = vk(也就是将msq中坐标为k的元素替换为vk),并重新取ind_adj = DS[k+1][0],out_count = DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj。
例如,令msq[1] = v1,并重新取ind_adj = DS[2][0],out_count = DS[2][1],取出msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前2个的节点,然后建立for循环F2(for v2 属于min_adj)。
S304,循环执行上述步骤S302-S303,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn(即k+1=n)则停止建立下一个循环,令ind_adj = DS[n][0],out_count =DS[n][1],对于循环Fn中还未验证过的元素vn,如果vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM,然后进入步骤S305。
例如,对于F2循环中的v2,类似步骤S302(此时的ind_adj = DS[2][0], out_count = DS[2][1]),如果v2同时满足验证一与验证二(注意此时的验证对象是v2),那么令msq[2] = v2,并重新取ind_adj = DS[3][0], out_count = DS[3][1],取出msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前3个的节点,然后建立for循环F3(for v3 属于min_adj)。
类似地建立循环,当建立到for循环Fn则停止建立下一个循环,其中n等于子图q的节点数减去1,令ind_adj = DS[n][0],out_count = DS[n][1](DS[n]此时即为DS的最后一行),对于Fn中的点vn,进行验证一与验证二,如果验证一与验证二都成立,即vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM。
此处需要注意的是,msq是一个序列,作为一个整体加入USM中,那么USM中的元素即为{msq1, msq2, msq3, …}的形式,其中每一个msq1、msq2…都是一个长度为n+1的序列,即msq1 = [u, v1, v2, …, vn],msq2等其他USM的元素也是长度这样的为n+1的序列。将msq加入USM中不是将msq的元素分别加入USM中,而是msq作为一个整体序列加入USM中。算法过程中可以有很多个msq加入到USM中,msq一直是在动态变化的。
S305,判断是否达到搜索结束条件,如果是就结束搜索,输出USM,否则返回步骤S302中,继续搜索,直至搜索结束。
例如,如果USM元素个数大于等于N,或者上述验证一与验证二进行了M次以上,M和N均为由用户任意设置的正整数,则可以停止本匹配过程并输出USM。
当然地,M和N为人为设定的外部搜索结束条件,以此来减少搜索量。如果还没有达到外部搜索结束条件(即USM元素个数小于N,或者上述验证一与验证二进行了不到M次)就已经搜索完了所有的情形,那么也会停止搜索,输出USM。
仍然以图5a中所示子图(此处命名为q1)为例。假设全图G也是该子图q1,并取u =5,计算5这个节点附近的子图匹配结果,其计算过程为:
1)首先计算出5的度数等于4,大于等于DS[0][1](DS[0][1] = 4),所以令msq =[5],并选取u = 5的邻居中不属于msq的节点构成集合u_nbr,u_nbr = {4, 6, 1, 9},建立for循环F1(for v1 属于u_nbr);
2)对于F1中的点v1,ind_adj = DS[1][0] = [0], out_count = DS[1][1] = 3,验证一即为验证v1是否与msq中坐标属于[0]的点(即msq[0] = 5)相邻,验证二即为验证从v1出发不与msq中前1个元素的点相邻的边的数量大于等于3,对于v1如果验证一与验证二都成立(例如v1 = 4),那么将v1加入msq;
3)如果v1满足验证一与验证二,取ind_adj = DS[2][0] = [0], out_count = DS[2][1] = 3,选取msq中坐标在ind_adj的元素组成集合ind_nbr = [5],然后选取ind_nbr中度数最小的点(即5)的邻居并删除其中属于msq前2个的点,作为集合min_adj(例如v1 =4时,得到的min_adj = {6, 1, 9},因为此时4已经加入msq中),然后建立循环F2(for v2属于min_adj);
4)对F2中的点v2进行验证一与验证二,如果验证一与验证二都成立,将v2加入msq;
5)不断建立下一个循环,直到建立到循环F11。
整体来看,基于示例q1与u = 5的算法流程如下所示:
msq = [5,0, …, 0](长度等于12的序列); F1 = u_nbr(u的邻居中不在msq中的点的集合);
for v1 in u_F1:
验证一(v1, DS[1][0]); 验证二(v1, DS[1][1]);
If (验证一成立) and (验证二成立):
重新赋予msq[1] = v1;
计算F2 = min_adj(DS[2][0]);
Else: continue;
For v2 in F2:
验证一(v2, DS[2][0]); 验证二(v2, DS[2][1]);
If (验证一成立) and (验证二成立):
重新赋予msq[2] = v2;
计算F3 = min_adj(DS[3][0])
Else: continue
……
For v11 in F11:
验证一(v11, DS[11][0]); 验证二(v11, DS[11][1]);
If (验证一成立) and (验证二成立):
重新赋予msq[11] = v11;
将msq加入到USM中;
Else: continue
也就是说,事实上形成了一个11层嵌套的循环F1 > F2 > … >F11,图5b、5c、5d、5e分别为匹配结果的图形表示,图5b代表循环u>v1>v2>…>v11 = 5>4>6>…>11的匹配结果,图5c代表循环u>v1>v2>…>v11 = 5>4>6>…>3的匹配结果,图5d代表循环u>v1>v2>…>v11 = 5>6>4>…>11的匹配结果,图5e代表循环u>v1>v2>…>v11 = 5>6>4>…>3的匹配结果。
如图6所示,本实施例中同时提供了子图匹配系统,包括排序模块61、数据化模块62和搜索模块63,其中,排序模块61被配置为将子图中的所有节点进行排序;数据化模块62被配置为将排序后的所有节点进行数据化表示;搜索模块63被配置为以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
更具体地,排序模块61包括边计算子模块、排序子模块和入选子模块,其中,边计算子模块被配置为遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集;排序子模块被配置为将在V中且不在S中的节点,按照(d1, d2)进行字典排序;入选子模块被配置为选取排序中(d1, d2)最大的节点v加入S,直到V中所有节点都按照先后顺序加入S,且如果排序中(d1, d2)最大的节点不止一个,则随机选取其中一个节点加入S。
数据化模块62包括集合构造子模块、特征构造子模块和数据化表示子模块,其中,集合构造子模块被配置为对排序后S中的所有节点v,记录S中排在v之前并且与v相邻的节点在S中的坐标的集合,记为ind_v;特征构造子模块被配置为对S的所有节点v,计算以v为起点的边的数量d3,用d3减去ind_v中的元素个数,得到的整数记为out_v;数据化表示子模块被配置为将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序输出该节点特征。
为了便于描述,定义排序后节点的数字化表示为DS = [[ind_v0, out_v0],[ind_v1, out_v1], ……[ind_vn, out_vn]],n为子图中节点的个数减1,DS[j][0]=ind_vj,DS[j][1]=out_vj,0≤j≤n。此时,搜索模块63包括首循环构造子模块、次循环构造子模块、搜索子模块和搜索结束判断子模块。
首循环构造子模块被配置为记USM = {},令msq = [0, …, 0]为一个长度等于子图的节点数的全0序列,并计算全图G中以任意节点u为起点的边的数量u_d,如果u_d小于DS[0][1] ,则结束整个搜索流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0]= u,并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环F1,且循环F1中的元素v1∈u_nbr。
次循环构造子模块被配置为构造次循环,所述构造次循环包括:记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,那么令msq[k] = vk,以及重新取ind_adj = DS[k+1][0],out_count =DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj;且次循环构造子模块还被配置为循环执行所述构造次循环的操作,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn则停止建立下一个循环。
如果vk不满足验证一与验证二中的任一项或多项,则选取u_nbr或min_adj中的另一个节点作为vk,并验证新的vk是否满足验证一和验证二,直至找到满足验证一与验证二的vk,并令msq[k] = vk。
搜索子模块被配置为当次循环构造子模块构造到for循环Fn时,令ind_adj = DS[n][0],out_count = DS[n][1],对于循环Fn中的元素vn,如果vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM。
搜索结束判断子模块被配置为判断是否满足搜索结束条件,如果是,则停止搜索,并输出USM。例如,如果USM元素个数大于等于N,或者验证一与验证二进行了M次以上,或者完成所有情形的搜索,则判断为满足搜索结束条件,M和N均为正整数。
本系统是与前述方法相对应的方案,此处未涉及之处可以参见前述方法实施例的相关描述。
如图7所示,本实施例同时提供了一种电子设备,该电子设备可以包括处理器71和存储器72,其中存储器72耦合至处理器71。值得注意的是,该图是示例性的,还可以使用其他类型的结构来补充或替代该结构。
如图7所示,该电子设备还可以包括:输入单元73、显示单元74和电源75。值得注意的是,该电子设备也并不是必须要包括图7中显示的所有部件。此外,电子设备还可以包括图7中没有示出的部件,可以参考现有技术。
处理器71有时也称控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器71接收输入并控制电子设备的各个部件的操作。
其中,存储器72例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其他合适装置中的一种或多种,可存储上述处理器71的配置信息、处理器71执行的指令、记录的表格数据等信息。处理器71可以执行存储器72存储的程序,以实现信息存储或处理等。在一个实施例中,存储器72中还包括缓冲存储器,即缓冲器,以存储中间信息。
输入单元73例如用于向处理器71提供实体主体的数据或者数据持有方所拥有的数据。显示单元74用于显示处理过程中的各种结果,例如页面中展示的本体模型、文本框、节点表的字段等等,该显示单元例如可以为LCD显示器,但本发明并不限于此。电源75用于为电子设备提供电力。
本发明实施例还提供一种计算机可读指令,其中当在电子设备中执行所述指令时,所述程序使得电子设备执行本发明方法所包含的操作步骤。
本发明实施例还提供一种存储有计算机可读指令的存储介质,其中所述计算机可读指令使得电子设备执行本发明方法所包含的操作步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成模块及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (16)
1.一种子图匹配方法,其特征在于,包括以下步骤:
将子图中的所有节点进行排序;
将排序后的所有节点进行数据化表示;
以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
2.根据权利要求1所述的子图匹配方法,其特征在于,所述基于排序后所有节点的数据化表示进行节点搜索的步骤中,以排序后的序列中排在某节点之前并且与该节点相邻的节点在序列中的坐标的集合为搜索范围,以序列中以该节点为起点的边的数量为匹配验证的限制条件进行搜索。
3.根据权利要求2所述的子图匹配方法,其特征在于,所述将子图中的所有节点进行排序的步骤,包括:
S101,遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集;
S102,将在V中且不在S中的节点,按照(d1, d2)进行字典排序;
S103,选取排序中(d1, d2)最大的节点v加入S;
S104,重复S101-S103,直到V的中所有节点都加入S;
S105,按照加入S的先后顺序输出有序集合S。
4.根据权利要求3所述的子图匹配方法,其特征在于,所述S103中,如果排序中(d1,d2)最大的节点不止一个,则随机选取其中一个节点加入S。
5.根据权利要求3所述的子图匹配方法,其特征在于,所述将排序后的所有节点进行数据化表示的步骤,包括:
S201,对排序后S中的所有节点v,记录S中排在v之前并且与v相邻的节点在S中的坐标的集合,记为ind_v;
S202,对S的所有节点v,计算以v为起点的边的数量d3,用d3减去ind_v中的元素个数,得到的整数记为out_v;
S203,将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序输出该节点特征。
6.根据权利要求5所述的子图匹配方法,其特征在于,定义排序后节点的数字化表示为DS = [[ind_v0, out_v0], [ind_v1, out_v1], ……[ind_vn, out_vn]],n为子图中节点的个数减1,DS[j][0]=ind_vj,DS[j][1]=out_vj,0≤j≤n;所述以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件的步骤,包括:
S301,记USM = {},令msq = [0, …, 0]为一个长度等于子图的节点数的全0序列,并计算全图G中以任意节点u为起点的边的数量u_d,如果u_d小于DS[0][1] ,则结束整个搜索流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0] = u,并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环F1,且循环F1中的元素v1∈u_nbr,并执行步骤S302;
S302,记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中还未验证过的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,执行步骤S303;
S303,令msq[k] = vk,并重新取ind_adj = DS[k+1][0],out_count = DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj;
S304,循环执行上述步骤S302-S303,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn则停止建立下一个循环,令ind_adj = DS[n][0],out_count = DS[n][1],对于循环Fn中还未验证过的元素vn,如果vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM;
S305,判断是否满足搜索结束条件,如果是,则停止搜索,并输出USM。
7.根据权利要求6所述的子图匹配方法,其特征在于,所述步骤S302中,如果vk不满足验证一与验证二中的任一项或多项,则选取u_nbr或min_adj中的另一个节点作为vk,循环执行步骤S302,直至找到满足验证一与验证二的vk。
8.根据权利要求6所述的子图匹配方法,其特征在于,所述步骤S305中,判断是否满足搜索结束条件的步骤,包括:如果USM元素个数大于等于N,或者验证一与验证二进行了M次以上,或者完成所有情形的搜索,则判断为满足搜索结束条件,M和N均为正整数。
9.一种子图匹配系统,其特征在于,包括:
排序模块,被配置为将子图中的所有节点进行排序;
数据化模块,被配置为将排序后的所有节点进行数据化表示;
搜索模块,被配置为以全图中的任意节点为起点,基于排序后所有节点的数据化表示进行节点搜索,直至满足预设的搜索结束条件,并将搜索结果作为匹配结果输出。
10.根据权利要求9所述的子图匹配系统,其特征在于,所述搜索模块在执行搜索操作时,以排序后的序列中排在某节点之前并且与该节点相邻的节点在序列中的坐标的集合为搜索范围,以序列中以该节点为起点的边的数量为匹配验证的限制条件进行搜索。
11.根据权利要求10所述的子图匹配系统,其特征在于,所述排序模块包括:
边计算子模块,被配置为遍历在V中且不在S中的节点v,计算节点v与S中节点相连的边数d1、v在E中的总边数d2;其中,V为子图的节点集合,E为子图的边集合,S为预先设定的一个空集;
排序子模块,被配置为将在V中且不在S中的节点,按照(d1, d2)进行字典排序;
入选子模块,被配置为选取排序中(d1, d2)最大的节点v加入S,直到V中所有节点都按照先后顺序加入S。
12.根据权利要求10所述的子图匹配系统,其特征在于,所述数据化模块包括:
集合构造子模块,被配置为对排序后S中的所有节点v,记录S中排在v之前并且与v相邻的节点在S中的坐标的集合,记为ind_v;
特征构造子模块,被配置为对S的所有节点v,计算以v为起点的边的数量d3,用d3减去ind_v中的元素个数,得到的整数记为out_v;
数据化表示子模块,被配置为将[ind_v, out_v]作为v的节点特征,并按照v在S中的顺序输出该节点特征。
13.根据权利要求12所述的子图匹配系统,其特征在于,定义排序后节点的数字化表示为DS = [[ind_v0, out_v0], [ind_v1, out_v1], ……[ind_vn, out_vn]],n为子图中节点的个数减1,DS[j][0]=ind_vj,DS[j][1]=out_vj,0≤j≤n;所述搜索模块包括:
首循环构造子模块,被配置为记USM = {},令msq = [0, …, 0]为一个长度等于子图的节点数的全0序列,并计算全图G中以任意节点u为起点的边的数量u_d,如果u_d小于DS[0][1] ,则结束整个搜索流程,并输出USM为空集;如果u_d大于等于DS[0][1],则令msq[0]= u,并从全图G中取出u的邻居中不属于msq的节点组成集合u_nbr,然后创建一个for循环F1,且循环F1中的元素v1∈u_nbr;
次循环构造子模块,被配置为构造次循环,所述构造次循环包括:记ind_adj = DS[k][0], out_count = DS[k][1],对于for循环Fk中还未验证过的元素vk,验证vk是否同时满足验证一和验证二,所述验证一为验证vk与msq中坐标属于ind_adj的点都相邻,所述验证二为验证以vk为起点但终点不在msq前k个元素中的边的数量大于等于out_count,如果vk同时满足验证一与验证二,那么令msq[k] = vk,以及重新取ind_adj = DS[k+1][0],out_count = DS[k+1][1],选取msq中坐标在ind_adj的元素组成集合ind_nbr,选取ind_nbr中度数最小的节点的邻居min_adj,然后删除min_adj中属于msq前k+1个的节点,并建立for循环F(k+1),且循环F(k+1)中的元素v(k+1)∈min_adj;且次循环构造子模块还被配置为循环执行所述构造次循环的操作,且每循环一次k的取值加1,k=1,2,3…n,直到建立到for循环Fn则停止建立下一个循环;
搜索子模块,被配置为当次循环构造子模块构造到for循环Fn时,令ind_adj = DS[n][0],out_count = DS[n][1],对于循环Fn中还未验证过的元素vn,如果vn同时满足验证一与验证二,那么令msq[n] = vn,此时msq = [u, v1, v2, …, vn],将序列msq加入到USM;
搜索结束判断子模块,被配置为判断是否满足搜索结束条件,如果是,则停止搜索,并输出USM。
14.根据权利要求13所述的子图匹配系统,其特征在于,所述搜索结束判断子模块,如果USM元素个数大于等于N,或者验证一与验证二进行了M次以上,或者完成所有情形的搜索,则判断为满足搜索结束条件,M和N均为正整数。
15.一种电子设备,其特征在于,包括:
存储器,存储程序指令;
处理器,与所述存储器相连接,执行存储器中的程序指令,实现权利要求1-8任一所述方法中的步骤。
16.一种存储介质,存储有可运行程序,其特征在于,所述可运行程序被处理器运行时,实现权利要求1-8中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110207693.1A CN112579835A (zh) | 2021-02-25 | 2021-02-25 | 一种子图匹配方法及系统、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110207693.1A CN112579835A (zh) | 2021-02-25 | 2021-02-25 | 一种子图匹配方法及系统、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112579835A true CN112579835A (zh) | 2021-03-30 |
Family
ID=75113972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110207693.1A Pending CN112579835A (zh) | 2021-02-25 | 2021-02-25 | 一种子图匹配方法及系统、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579835A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114440855A (zh) * | 2022-01-19 | 2022-05-06 | 深圳市神州云海智能科技有限公司 | 一种动态场景下定位和地图更新的方法及系统 |
-
2021
- 2021-02-25 CN CN202110207693.1A patent/CN112579835A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114440855A (zh) * | 2022-01-19 | 2022-05-06 | 深圳市神州云海智能科技有限公司 | 一种动态场景下定位和地图更新的方法及系统 |
CN114440855B (zh) * | 2022-01-19 | 2022-08-23 | 深圳市神州云海智能科技有限公司 | 一种动态场景下定位和地图更新的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tian | A branch-and-bound algorithm for MDL learning Bayesian networks | |
CN104462260B (zh) | 一种基于k-核的社交网络中的社区搜索方法 | |
CN109656798B (zh) | 基于顶点重排序的超级计算机大数据处理能力测试方法 | |
Semertzidis et al. | Top-$ k $ Durable Graph Pattern Queries on Temporal Graphs | |
CN110719106B (zh) | 一种基于节点分类排序的社交网络图压缩方法及系统 | |
Liu et al. | Efficient mining of large maximal bicliques | |
WO2013138441A1 (en) | Systems, methods, and software for computing reachability in large graphs | |
CN110852046B (zh) | 一种文本后缀索引的分块归纳排序方法及系统 | |
CN112667860A (zh) | 一种子图匹配方法、装置、设备及存储介质 | |
CN109213445A (zh) | 一种存储系统元数据的管理方法、管理系统及相关装置 | |
CN106156773A (zh) | 一种文本图像的分割方法及装置 | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
Dereniowski | Connected searching of weighted trees | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN105069290A (zh) | 一种面向寄递数据的并行化关键节点发现方法 | |
CN112579835A (zh) | 一种子图匹配方法及系统、电子设备、存储介质 | |
CN112948591B (zh) | 适用于有向图的子图匹配方法及系统、电子设备 | |
US20200104425A1 (en) | Techniques for lossless and lossy large-scale graph summarization | |
CN109684185B (zh) | 基于启发式遍历的超级计算机大数据处理能力测试方法 | |
CN103761298A (zh) | 一种基于分布式架构的实体匹配方法 | |
CN106991195B (zh) | 一种分布式的子图枚举方法 | |
CN111581946B (zh) | 一种语言序列模型解码方法 | |
CN108959584A (zh) | 一种基于社区结构的处理图数据的方法及装置 | |
Bose et al. | The power and limitations of static binary search trees with lazy finger | |
CN102750263B (zh) | 互联网超链接网络图数据的简化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210330 |
|
RJ01 | Rejection of invention patent application after publication |