CN108509452A - 一种匹配图挖掘方法及设备 - Google Patents
一种匹配图挖掘方法及设备 Download PDFInfo
- Publication number
- CN108509452A CN108509452A CN201710109050.7A CN201710109050A CN108509452A CN 108509452 A CN108509452 A CN 108509452A CN 201710109050 A CN201710109050 A CN 201710109050A CN 108509452 A CN108509452 A CN 108509452A
- Authority
- CN
- China
- Prior art keywords
- segment
- node
- index
- interactive perception
- query graph
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例公开了一种匹配图挖掘方法及设备,该方法包括:根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。采用本发明实施例,建立的交互感知索引能够满足不同匹配范式对应的查询图的挖掘要求。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种匹配图挖掘方法及设备。
背景技术
随着在线系统数据量的激增,越来越多的关联信息呈现出海量图数据形态,例如,软件剽窃检测中的系统调用关系图、数据流图、生物信息图、蛋白质相互作用(英文:Protein-Protein Interaction,简称:PPI)网络、知识网络、人员合作关系网、专利引用网络及社会网络等。如何对图信息进行精准且快速地挖掘成为近年来急需解决关键问题之一。图(模式)匹配是一种图信息查询方法,已经广泛用于各种图数据库的查询中。一般而言,用户首先需要从实际应用中抽象出一组对图数据中节点关系与属性的约束,这种约束通常表达为一个查询图,其中包含带有标签属性的节点及节点之间的关系。然后利用该查询图,对图数据库中的信息进行查询,图数据库是一个由多个独立的连通图组成的集合,获取图数据库中所有能够子图匹配于查询图的匹配图,即每张匹配图中至少存在一个子图完全“满足”查询图中给定的约束。挖掘匹配图时用到的子图匹配范式用于衡量一个图是否“满足”查询图中给定约束。
对于不同的图匹配范式而言,衡量是否“满足”查询图中给定约束的标准也不同。常见的图模式匹配范式有子图同构匹配、相似子图匹配和泛化子图匹配等。子图同构匹配方法要求所匹配得到的匹配图(也称“结果图”)必须严格满足所有给定的约束,即结果图包括查询图的所有的节点与边的映射关系;相似子图匹配通过一个用户给定的参数Φ来控制约束的程度,允许匹配图中有最多Φ个边或节点与查询图不匹配;子图同构匹配与相似图匹配所需的查询图都为无权图而泛化子图匹配的查询图是有权图,该有权图包含权重信息来指示节点间最大的距离约束,刻画了节点间约束最大所允许的最长路径距离。查询图不同会导致挖掘出的匹配图不同,如果建立一个索引使得该索引中的各个节点代表的图能够满足不同查询图的挖掘要求是本领域的技术人员正在研究的问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种匹配图挖掘方法及设备,能够满足不同匹配范式对应的查询图的挖掘要求。
下面首先对本发明涉及到的相关概念进行介绍:
【图】本发明关注的图G=(V,E,L)是无向图,其中V为节点集合,为边集合,L是一个标识函数,映射每个节点u∈V与一个标识集合L(u)∈Σ。标识函数L具体为每个节点赋予了具有实际应用意义的一组标识,例如关键词,博客主题,名称,专业,公司等。标识集合Σ为所有这种属性值的全集。定义G(V,E)为上下文简写。假设给定的数据图G为连通图。
【CAM码】给定一个图G,假设Mn×n为G中包含边的邻接矩阵,那么G的CAM码是通过在从顶部到底部,并从最左边到最右侧数值的顺序串联M(包括在对角线上的数值)的下三角区域形成的序列。
【规范标签】给定两个图G和H,(G,H)的规范标签是一个节点映射函数f:VG→VH,使得如果(u,v)∈G.E,那么(f(u),f(v))∈H.E。
【片段】给定一个图数据库D,其中包含一组无向图,每个无向图都被唯一标识,假设g为数据库中一个图GI的子图,GI∈D(0<i≤|D|),且g至少包含一条边,那么g是D的一个片段,利用片段来代表一个存在于该图数据库的子图。GI为该片段g的片段支持图(英文:fragment support graph,简称:fsg),利用标识Dg来标记片段g的所有片段支持图所组成的集合,利用标识sup(g)来标识片段g支持图的总数量,即|Dg|。定义片段g的所有支持图的唯一标示id的集合为fsGIds(g)。
【频繁片段】给定一个片段g,当满足它的支持图总数量不少于α|D|时,该片段是频繁片段,其中α为预设的最小支持阈限值。也就是说,如果sup(g)≥α|D|,0<α<1,g∈D时,那么g是在图数据库D中的一个频繁片段。利用标识If来表示D中所有的频繁片段集合。
【非频繁片段】给定一个片段g∈D,如果sup(g)<α|D|,那么g是一个非频繁片段。利用标识I来代表图数据库D中所有非频繁片段组成的集合。
【判定非频繁片段】给定一个g∈I,假设sub(g)为g中包含的所有子图,如果或者|g|=1,那么g为D中的一个判别非频繁片段(dif)。利用标识Id代表D中所有dif组成的集合。一个dif是一个非频繁片段中最小的非频繁子图。
【子图同构匹配】给定一个数据图G=(V,E)和一个查询约束图Q=(Vq,Eq),子图同构匹配的要求是找出每个匹配子图,g=(Vg,Eg),Q同构于g,满足存在一个双射函数f:Vq–>Vg,使得(1)和(2)(f(u),f(v))∈Eg。
【最大相同子图】给定两个图(G,Q),最大相同子图是Q中最大的连接子图g,其与图G子图同构,记作mccs(G,Q)。
【子图相似距离】给定两个图(G,Q),子图相似距离dist(G,Q),定义为:
dist(G,Q)=floor((1-|mccs(G,Q)|/|Q|)|Q|),其中floor为向下取整函数。如果dist(G,Q)=0,那么Q与G图同构匹配。
【相似子图匹配】给定一个查询图q,一个图数据库D={g1,g2,…,gn},和一个子图相似距离阈限δ,子结构相似匹配问题的目标为搜索所有满足dist(GI,Q)≤δ的图GI,GI∈D。同时也需要在D中,挖掘与搜索所有子图同构于查询图的匹配图,即δ=0的情况。。
【泛化子图匹配】给定一个查询图q=(Vq,Eq,Lq,tq),其中Vq为查询图中查询节点集合,Eq为边集合,Lq为节点标识映射,tq为查询边到其权重值的映射函数,和一个图数据库D={g1,g2,…,gn},子结构相似匹配问题的目标为搜索所有满足如下条件的图gi,gi∈D,即q泛化同构于gi:存在一个Vq–>Vgi的单射函数f,使得对于每个q中的边(u,v)∈Eq都满足(1)(2)(3)f(u)和f(v)之间的距离不大于u与v边上的权重值。
第一方面,本发明实施例提供了一种匹配图挖掘方法,该方法包括:根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
通过执行上述方法,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
在一种可能的实现方式中,该根据预先获取的离线索引和第一查询图生成交互感知索引,包括:通过在第二查询图上增加边得到第一查询图,增加的边为第一边;确定所有第二片段,若一个片段包含该第一边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第二片段;将该所有第二片段中不存在节点处于该交互感知索引的第二片段的节点添加到该交互感知索引中,不存在节点处于该交互感知索引的第二片段属于该第一片段。也即是说,当通过增加第一边使得第二查询图变为第一查询图时,向交互感知索引中新增代表第二片段的节点以更新该交互感知索引,使得该交互感知索引中的节点代表的图能够满足该第一查询图的匹配图挖掘需求。
在又一种可能的实现方式中,该根据预先获取的离线索引和第一查询图生成交互感知索引之前,还包括:根据图数据库生成离线索引,该离线索引中记录了该图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,该操作关系表明了该任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;另外,该确定所有第二片段,包括:在源片段上添加该第一边,该源片段为交互感知索引中的节点代表的频繁片段;确定在该源片段上添加该第一边时所作的操作满足该离线索引中的一项操作关系;将该源片段上添加该第一边得到的片段确定为第二片段。可以理解的是,根据该离线索引中记录的操作关系可用于对片段进行更精细地查找,本发明实施例中该操作关系有利于提高交互感知索引的构建效率。
在又一种可能的实现方式中,该在源片段上添加该第一边,包括:连接该源片段中已有的两个节点,该两个节点构成的边为该第一边;或者添加一个节点并添加的该节点与该源片段中的一个已有节点进行连接,添加的一个节点与该一个已有节点构成的边为该第一边。
在又一种可能的实现方式中,该根据预先获取的离线索引和第一查询图生成交互感知索引,包括:通过在第三查询图上删除边得到第一查询图,删除的边为第二边;确定所有第三片段,若一个片段包含该第二边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第三片段;从交互感知索引中删除代表该第三片段的节点,该交互感知索引中删除代表该第三片段的节点后剩余的节点所代表的片段属于该第一片段。也即是说,当通过删除第二边使得第三查询图变为第一查询图时,从当前的交互感知索引中删除代表第三片段的节点以更新该交互感知索引,使得更新后的交互感知索引既满足该第一查询图的匹配图挖掘需求,又减少该交互感知索引占用的存储开销。
在又一种可能的实现方式中,该交互感知索引中每个用于代表片段的节点包含边列表集合,该边列表集合中包含多组边集合且每组边集合中包含边序号,该第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成该片段;该确定所有第三片段,包括:确定删除的边的边序号,删除的边的边序号为目标序号;将该交互感知索引中包含的边列表集合中存在该目标序号的节点所代表的片段确定为第三片段,该交互感知索引中的节点所代表的片段均为该离线索引中的节点所代表的频繁片段或者判定非频繁片段。也即是说,每个边都有自己的边序号且可以通过边序号来标记该交互感知索引中每个片段包含哪些边,这样一来,当从该第三查询图中删除第二边时,可以根据该第二边对应的目标序号从已有的交互感知索引中确定第三片段。
在又一种可能的实现方式中,该根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图,包括:选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
第二方面,本发明实施例提供一种匹配图挖掘设备,该设备用于:根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
通过运行该设备,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
第三方面,本发明实施例提供一种匹配图挖掘设备,该设备包括处理器和存储器:该存储器用于存储数据和程序;该处理器调用该存储器中的程序,用于执行如下操作:根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
通过执行上述操作,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
在一种可能的实现方式中,该处理器根据预先获取的离线索引和第一查询图生成交互感知索引,可以包括:通过在第二查询图上增加边得到第一查询图,增加的边为第一边;确定所有第二片段,若一个片段包含该第一边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第二片段;将该所有第二片段中不存在节点处于该交互感知索引的第二片段的节点添加到该交互感知索引中,不存在节点处于该交互感知索引的第二片段属于该第一片段。也即是说,当通过增加第一边使得第二查询图变为第一查询图时,向交互感知索引中新增代表第二片段的节点以更新该交互感知索引,使得该交互感知索引中的节点代表的图能够满足该第一查询图的匹配图挖掘需求。
在又一种可能的实现方式中,该处理器根据预先获取的离线索引和第一查询图生成交互感知索引之前,还用于:根据图数据库生成离线索引,该离线索引中记录了该图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,该操作关系表明了该任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;另外,该处理器确定所有第二片段,具体为:在源片段上添加该第一边,该源片段为交互感知索引中的节点代表的频繁片段;确定在该源片段上添加该第一边时所作的操作满足该离线索引中的一项操作关系;将该源片段上添加该第一边得到的片段确定为第二片段。可以理解的是,根据该离线索引中记录的操作关系可用于对片段进行更精细地查找,本发明实施例中该操作关系有利于提高交互感知索引的构建效率。
在又一种可能的实现方式中,该处理器在源片段上添加该第一边,可以具体为:连接该源片段中已有的两个节点,该两个节点构成的边为该第一边;或者添加一个节点并添加的该节点与该源片段中的一个已有节点进行连接,添加的一个节点与该一个已有节点构成的边为该第一边。
在又一种可能的实现方式中,该处理器根据预先获取的离线索引和第一查询图生成交互感知索引,可以包括:通过在第三查询图上删除边得到第一查询图,删除的边为第二边;确定所有第三片段,若一个片段包含该第二边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第三片段;从交互感知索引中删除代表该第三片段的节点,该交互感知索引中删除代表该第三片段的节点后剩余的节点所代表的片段属于该第一片段。也即是说,当通过删除第二边使得第三查询图变为第一查询图时,从当前的交互感知索引中删除代表第三片段的节点以更新该交互感知索引,使得更新后的交互感知索引既满足该第一查询图的匹配图挖掘需求,又减少该交互感知索引占用的存储开销。
在又一种可能的实现方式中,该交互感知索引中每个用于代表片段的节点包含边列表集合,该边列表集合中包含多组边集合且每组边集合中包含边序号,该第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成该片段;该处理器确定所有第三片段,具体为:确定删除的边的边序号,删除的边的边序号为目标序号;将该交互感知索引中包含的边列表集合中存在该目标序号的节点所代表的片段确定为第三片段,该交互感知索引中的节点所代表的片段均为该离线索引中的节点所代表的频繁片段或者判定非频繁片段。也即是说,每个边都有自己的边序号且可以通过边序号来标记该交互感知索引中每个片段包含哪些边,这样一来,当从该第三查询图中删除第二边时,可以根据该第二边对应的目标序号从已有的交互感知索引中确定第三片段。
在又一种可能的实现方式中,该处理器根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图,具体为:选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
第四方面,本发明实施例提供一种匹配图挖掘设备,该设备包括:交互感知索引构建单元,用于根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;匹配图挖掘单元,用于根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
通过运行上述单元,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
在一种可能的实现方式中,该交互感知索引构建单元用于:通过在第二查询图上增加边得到第一查询图,增加的边为第一边;确定所有第二片段,若一个片段包含该第一边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第二片段;将该所有第二片段中不存在节点处于该交互感知索引的第二片段的节点添加到该交互感知索引中,不存在节点处于该交互感知索引的第二片段属于该第一片段。也即是说,当通过增加第一边使得第二查询图变为第一查询图时,向交互感知索引中新增代表第二片段的节点以更新该交互感知索引,使得该交互感知索引中的节点代表的图能够满足该第一查询图的匹配图挖掘需求。
在又一种可能的实现方式中,该设备还包括离线索引构建单元,该离线索引构建单元用于根据图数据库生成离线索引,该离线索引中记录了该图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,该操作关系表明了该任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;该交互感知索引构建单元确定所有第二片段,具体为:在源片段上添加该第一边,该源片段为交互感知索引中的节点代表的频繁片段;确定在该源片段上添加该第一边时所作的操作满足该离线索引中的一项操作关系;将该源片段上添加该第一边得到的片段确定为第二片段。可以理解的是,根据该离线索引中记录的操作关系可用于对片段进行更精细地查找,本发明实施例中该操作关系有利于提高交互感知索引的构建效率。
在又一种可能的实现方式中,该交互感知索引构建单元在源片段上添加该第一边,具体为:连接该源片段中已有的两个节点,该两个节点构成的边为该第一边;或者添加一个节点并添加的该节点与该源片段中的一个已有节点进行连接,添加的一个节点与该一个已有节点构成的边为该第一边。
在又一种可能的实现方式中,该交互感知索引构建单元用于:通过在第三查询图上删除边得到第一查询图,删除的边为第二边;确定所有第三片段,若一个片段包含该第二边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第三片段;从交互感知索引中删除代表该第三片段的节点,该交互感知索引中删除代表该第三片段的节点后剩余的节点所代表的片段属于该第一片段。也即是说,当通过删除第二边使得第三查询图变为第一查询图时,从当前的交互感知索引中删除代表第三片段的节点以更新该交互感知索引,使得更新后的交互感知索引既满足该第一查询图的匹配图挖掘需求,又减少该交互感知索引占用的存储开销。
在又一种可能的实现方式中,该交互感知索引中每个用于代表片段的节点包含边列表集合,该边列表集合中包含多组边集合且每组边集合中包含边序号,该第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成该片段;该交互感知索引确定所有第三片段,具体为:确定删除的边的边序号,删除的边的边序号为目标序号;将该交互感知索引中包含的边列表集合中存在该目标序号的节点所代表的片段确定为第三片段,该交互感知索引中的节点所代表的片段均为该离线索引中的节点所代表的频繁片段或者判定非频繁片段。也即是说,每个边都有自己的边序号且可以通过边序号来标记该交互感知索引中每个片段包含哪些边,这样一来,当从该第三查询图中删除第二边时,可以根据该第二边对应的目标序号从已有的交互感知索引中确定第三片段。
在又一种可能的实现方式中,该匹配图挖掘单元具体用于:选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
第五方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使计算机执行上述第一方面所描述的方法或者第一方面的任一可能实现方式所描述的方法。
通过实施本发明实施例,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1A是本发明实施例提供的一种匹配图挖掘设备的结构示意图;
图1B是本发明实施例提供的一种匹配图挖掘的场景示意图;
图2是本发明实施例提供的一种匹配图挖掘方法的流程示意图;
图3是本发明实施例提供的一种离线索引的结构示意图;
图4是本发明实施例提供的一种构建交互感知索引的流程示意图;
图5是本发明实施例提供的一种更新交互感知索引的场景示意图;
图6是本发明实施例提供的一种匹配图的结构示意图;
图7是本发明实施例提供的又一种匹配图的结构示意图;
图8是本发明实施例提供的又一种匹配图的结构示意图;
图9是本发明实施例提供的又一种匹配图挖掘设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
请参见图1A,图1A是本发明实施例提供的一种匹配图挖掘设备10的结构示意图,该匹配图挖掘设备10包括离线索引构建器(或称“离线索引构建单元”)101、交互感知索引构建器(或称“交互感知索引构建单元”)102和匹配图挖掘器(或称“匹配图挖掘单元”)103,其中,离线索引构建器101、交互感知索引构建器102和匹配图挖掘器103可以为实体的硬件模块也可以是虚拟的功能模块,当离线索引构建器101、交互感知索引构建器102和匹配图挖掘器103为虚拟的功能模块时,某些场景下可以将这些模块中的多个模块集成为一个模块,某些场景下可以将这些模块中的一个模块进一步细分为多个功能模块。
请参见图1B,图1B是本发明实施例提供的设备10在实际应用中的一种场景示意图;该场景示意图示意了匹配图挖掘过程中的三个阶段。第一个阶段为离线索引构建过程,在该过程中,离线索引构建器101将会分析输入的图数据库中包含的频繁片段、判定非频繁片段和这些片段之间的操作关系,根据分析的结果构建并输出离线索引(Info index),然后将该离线索引存储于介质中供后续使用。第二个阶段为交互感知索引(后续可以简称为JIVQ或者J)构建过程,该设备10中预先配置的交互式系统将会以交互的方式(通常表现为图形化接口形式,例如,GUI)动态捕捉用户构建查询图的操作序列,并显示更新后的查询图q,查询图初始为空,即不包含任何节点与边。交互感知索引构建器102将根据用户的操作与操作前查询图的状态,动态地查询离线索引来构建交互感知索引(JIVQ),交互感知索引中索引了可能满足于更新后查询图的所有候选图集合。查询图的构建与交互感知索引的构建过程是同步进行的,如果查询图发生了改变则会伴随着交互感知索引的改变。第三个阶段是匹配图的挖掘过程,当用户完成所有的查询图建模操作后,即点击预设的“挖掘”按钮后即可触发查询图的建模过程与交互感知索引的构建过程结束,从而进入匹配图挖掘过程,即匹配过程。在匹配过程中,匹配图挖掘器103将会根据离线索引(Info index)、交互感知索引(JIVQ)和查询图,按照子图同构匹配、或者相似子图匹配、或者泛化子图匹配三种不同图匹配范式的要求,对候选图进行挖掘,最终输出对应相应范式的匹配图集合。
请参见图2,图2是本发明实施例提供的一种匹配图挖掘方法的流程示意图,该方法用于对图1B所示的场景中的各个阶段作更细致的描述,该方法包括但不限于如下步骤:
步骤S201:设备根据图数据库生成离线索引。
具体地,该图数据库D中通常包含频繁片段、非频繁片段和判定非频繁片段(也称“判别非频繁片段”),该设备分析其中的各个频繁片段和各个判定非频繁片段之间的关系,并根据该关系构建并输出离线索引(Info index)。离线索引是一个有向图GI(VI,EI),图数据库D中的频繁片段的集合可以表示为频繁片段集合If,图数据库D中的判定非频繁片段的集合可以表示为判定非频繁片段集合DIF,Info index中标记的每个节点v∈VI均代表了一个频繁片段或者一个判定非频繁片段,即v.g∈If或v.g∈Id(v.g是指节点v代表的片段g)。每个节点v∈VI可以由一个4元组v=(id,label,cam(g),LdelIds(g))来表示,其中,v.id是该节点的ID(每个节点对应有自身的ID),v.label为该节点v带有的标识信息(用于描述该节点的特点),v.cam(g)是该节点代表的片段(频繁片段或者判定非频繁片段)g的(canonical adjacency matrix,CAM)码,v.LdelIds(g)为D中与该节点代表的片段g子图同构匹配的图的Id(每个图对应有自身的id)的集合,例如,若则g同构于g‘。Info index中节点之间的边集合EI刻画了各个节点所代表各个片段之间的操作关系,每条边e(v1,v2)∈EI都关联一个二元组(operator,canon),可以通过边的Lo来表示该二元组,即e.Lo={(operator_1,canon_1),(operator_2,canon_2),…,(operator_m,canon_m)}标记了节点v1到节点v2的所有可能的转换操作,(operator_1,canon_1)、(operator_2,canon_2)、(operator_m,canon_m)等各表示一种可能的操作关系,operator(例如,operator_1、operator_2、operator_m等)表示操作类型,可选的操作类型有“增加新节点与已有节点连接”和“增加一条边连接两个已存在节点”, lo.operator={TryAddNewNode|TryAddNewEdgeNonNode},其中,TryAddNewNode表示操作类型为“增加新节点与已有节点连接”,TryAddNewEdgeNonNode表示操作类型为“增加一条边连接两个已存在节点”。Canon表示从源节点v1到目标节点v2的规范标签,后续查询或者遍历片段时基于该规范标签来进行可以提高效率,本发明实施例要求|v2.g|-|v1.g|=1且
以上讲述了该离线索引的特点,下面提供一种可选的构建该离线索引的方式:
步骤a1、获取图数据库D中所有的频繁片段以组成集合F,其中每个频繁片段都关联有Id集合S(fsGIds(f)),使得且|S|≥α。
步骤a2、从集合F中获得所有的频繁边,该频繁边是指只拥有一条边的频繁片段。这些频繁边将会被作为种子元素来构建离线索引。使用一个矩阵fe来标记出所有的频繁边,矩阵fe的两个维度分别为D中节点的标识(label)全集,代表边两端节点的标识(label)信息。矩阵中每个元素都是一个布尔变量,表明该种类型的边是否为频繁片段。
步骤a3、遍历所有的频繁片段f∈F,对于每个频繁片段,若在离线索引GI中不存在代表该频繁片段的节点,则在离线索引GI中构建节点fn,使得fn.g=f且fn.LdelIds(g)=fsGIds(f),其中,fn.g表示节点fn代表的片段g。
步骤a4、对每个频繁片段f分别尝试各种转换操作,如果转换操作为“增加新节点与已有节点连接”,则需要尝试增加新节点与该频繁片段f中已有节点连接,使得该新节点与该已有节点连成的边属于上面获得的频繁边;如果转换操作为“增加一条边连接两个已存在节点”,则需要尝试将该频繁片段f中已有节点连接,使得已有节点连成的边属于上面获得的频繁边,转换操作所得到的片段f’可能为频繁片段也可能为判定非频繁片段;然后判断是否已经在GI中构建了代表f’的节点,如果是,则不需要再在GI中构建代表f’的节点,如果不是,那么增加用于代表f’的节点f’n到GI,使得f’n.g=f’且f’n.LdelIds(g)=fsGIds(f’),如果f’为判定非频繁片段,该fsGIds(f’)等于代表该f’的节点的各个父节点的LdelIds(g)的交集。另外,增加从节点fn到节点f’n的边e(fn,f’n)到该GI中,e(fn,f’n)能体现由fn得到f’n需要进行的转换操作,该转换操作可以保证|f’|-|f|=1。
上述构建离线索引中的操作可以通过如下伪代码来实现:
输入:1、图数据库D,
2、频繁片段的最小支持阈限α。
输出:从D中构建的离线索引GI。
在一种可选的方案中,上述步骤4中“增加新节点与已有节点连接”的转换操作的具体实现可以如下:
步骤b1:遍历频繁片段f中每个节点v∈f,然后执行步骤b2。
步骤a2:遍历所有频繁边e,如果频繁边e中存在一个端点的标识与v一致,那么增加e到节点v上,组成新的频段f’,然后执行步骤a3。
步骤b3:如果f’是一个频繁片段或者为一个判定非频繁片段,那么将增加一个代表f’的节点f’n到GI中,使得f’n.g=f’,n.LdelIds(g)=LdelIds(f’),然后执行步骤b4。
步骤b4:在GI中创建一条从节点fn(要求fn.g=f)到节点f’n的有向边e(fn,f’n),设置f’n.parent=fn(即设置节点f’n的父节点为fn),并标记f到f’所执行的转换操作C(v1,v2),以表明在f中增加一条边连接f中id为v1与f中id为v2的节点可以得到f’。
步骤b1到b4所描述的方案可以通过如下伪代码实现:
输入:1、D中一个频繁片段f,
2、从D中构建的当前离线索引GI,
3、一个布尔矩阵fe。
输出:更新后的GI。
在一种可选的方案中,上述步骤4中“增加一条边连接两个已存在节点”的转换操作的具体实现可以如下:
步骤c1、遍历频繁片段f中的每个节点对(vi,vj),若vi与vj之间不存在边,执行步骤c2。
步骤c2、遍历所有频繁边,对于节点对(vi,vj),如果存在一条频繁边e(vi,vj)可以连接它们,即e的两端节点标识与vi、vj节点的标识一致,增加e到f中,来连接节点对(vi,vj),e增加到f中后组成新的频段f’,再执行步骤c3。
步骤c3、如果f’是一个频繁片段或者为一个判定非频繁片段,那么将增加一个代表f’的节点f’n到GI中,即f’n.g=f’,n.LdelIds(g)=LdelIds(f’),执行步骤c4。
步骤c4、在GI中创建一条从节点fn(要求fn.g=f)到节点f’n的有向边e(fn,f’n),设置f’n.parent=fn(即设置节点f’n的父节点为fn),并标记f到f’所执行的转换操作C(v1,v2),以表明在f中增加一条边连接f中id为v1与f中id为v2的节点可以得到f’。
步骤c1到c4所描述的方案可以通过如下伪代码实现:
输入:1、D中一个频繁片段f,
2、从D中构建的当前离线索引GI,
3、一个布尔矩阵fe。
输出:更新后的GI。
结合上面的描述可以得知,建立的离线索引体现了各个片段(频繁片段和判定非频繁片段)之间的父子关系(也可以描述为代表各个片段的节点之间的父子关系)和转换操作关系,该父子关系和转换操作关系将用于后续建立交互感知索引。
步骤S202:设备根据该离线索引和第一查询图实时建立交互感知索引。
具体地,该交互感知索引的构建过程与查询图的构建过程是同步进行的,用户每次更新该查询图都会导致该交互感知索引的更新。该交互感知索引中索引了满足于更新后的查询图的所有候选图集合,此处称当前的查询图为第一查询图,无论是通过子图同构匹配、相似子图匹配、泛化子图匹配中哪种匹配范式来为该第一查询图选择匹配图,都可以从该候选图集合中选取。假设用户当前建模得到包含条边的第一查询图q,GI为一个根据图数据库D得到的离线索引info index,那么根据该第一查询图q和该离线索引建GI得到的交互感知索引JIVQ可以是一个满足如下要求的有向图
1、图中包含多个节点v,其中每个节点都存在一个从该节点v到查询图中一个片段的单射函数,f(v):v→fg满足且n.g=fg。
2、图中的每条边代表了的两个节点v’与v之间的父子关系,其中v是v‘的孩子节点,v‘是v的父节点,当且仅当,且|f(v)|=|f(v’)|+1。
3、图中每个节点都关联一个二元组v=(id,E(g)),其中,v.id等于GI中一个节点的id,在该GI中该节点v代表的频繁片段为f(v),E(g)是一个边列表集合,E(g)包括了多组边集合且每组边集合中包含边序号,该查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成与f(v)同构片段。
以上讲述了交互感知索引的特点,下面提供一种可选的构建该交互感知索引的方式:
由于查询图会根据因添加边而变化,假设添加某条边之前的查询图为第二查询图,添加该某条边后得到的查询图为第一查询图,那么,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征。在给定一个根据图数据库D得到的离线索引GI和已经建立的第二查询图的情况下,假设用户利用图形接口在该查询图q中新增加某条边seed,那么JIVQ的构建方法可以如下:(由于J的构建过程是随着用户对查询图建模过程的进行逐渐进行的,初始查询图q为J也为
步骤d1、首先通过CAM码来判断新增边seed是否为图数据库D中的频繁边,为了描述方便可以称该新增边为第一边,如果在GI中存在一个仅包含一条边的频繁片段,且该频繁片段的CAM与该新第一边seed的CAM码相同,那么确定该第一边seed为D中的频繁边,否则为非频繁边。
步骤d2、如果seed为频繁边,那么将记录查询图q中节点的id集合为qIds和代表该频繁边seed的节点在GI中的节点id为seed.id。
步骤d3、挖掘所有包含seed且且包含于该第一查询图的频繁片段和判定非频繁片段(是否为频繁片段或者判定非频繁片段可以参照GI),挖掘出的片段可以称为第二片段;然后将该所有第二片段中不存在节点处于该交互感知索引的第二片段的节点添加到(可通过预设的添加函数AddToQueue来实现)该交互感知索引中;可选的,挖掘(也称“确定”)所有第二片段,可以具体为:在源片段上添加该第一边,该源片段为交互感知索引中的节点代表的频繁片段;然后确定在该源片段上添加该第一边时所作的操作满足该离线索引中的一项操作关系;确定存在该操作关系后,将该源片段上添加该第一边得到的片段确定为第二片段。新增加到该交互感知索引中的片段如果与该交互感知索引中的其他片段之间存在父子关系,则需要建立相关信息来表明该父子关系。
挖掘所有包含seed且包含于该第一查询图q的频繁片段和判定非频繁片段的具体实现可以如下:
步骤d31、引入一个搜索队列Queue,Queue初始为空,Queue中每个元素都代表一个包含于第二查询图q的频繁片段,该元素包括三个内容:(1)该频繁片段中的节点Id集合qIds,(2)该频繁片段边集合edgeSet,(3)GI中代表该频繁片段的节点的id。
步骤d32、引入一个存储片段的edgeSet的列表EL,EL初始为空。
步骤d33、增加用于描述第一边seed的上述元素到J和Queue中。
步骤d34、遍历Queue中的元素来执行步骤d35到d39,直到Queue为空。
步骤d35、针对Queue中每个元素代表的片段f,都依次遍历由片段f中的节点ni∈qIds和第二查询图q中的节点nj∈q所组成的节点对(ni,nj)。
步骤d36、如果在第二查询图q中存在一条能够将节点ni、nj连接且不属于片段f的边e,即那么通过该边e连接节点ni和nj以得到片段f’,将边e加入到edgeSet中,edgeSet中添加e后得到edgeSet’,edgeSet’包含了新的查询片段f’中的所有边信息。
步骤d37、如果EL不包含edgeSet’,利用GI中索引的片段间操作关系进行匹配,即可判断片段f’的节点是否包含于离线索引GI中。具体操作:如果f中已经包含边(ni,nj)了(i,j∈qId),那么为它们增加一条不属于f的连接边,就等同于进行TryAddNewEdgeNonNode类操作,即增加一条新边来连接两个未连接的已有节点。如果那么增加一个边连接这两个节点,就等同于进行TryAddNewNode类操作。针对上述两种情况分别构建不同类型的操作关系字符串,然后通过与f的出边上的操作关系字符进行匹配,来获取GI中对应于f’的节点Inode’,其为f节点的孩子节点。
步骤d38、需要通过Inode’.canon映射关系将f‘对应的节点id转换成规范标签。
步骤d39、将Inode’所对应的信息加入到J中(通过AddToQueue函数)。
步骤d31到d39所描述的方案可以通过如下伪代码实现:
输入:1、一个离线索引GI,
2、一个交互感知索引J,
3、第二查询图q,
4、新增的第一边seed。
输出:更新后的交互感知索引J。
AddToQueue函数用于增加频繁片段或者判定非频繁片段到J和Queue中,大致思想如下:
给定一个交互感知索引J、一个队列Queue、一个节点id列表qIds、一个边集合edgeSet和GI中的一个节点的id,处理方式如下:
步骤e1、在J中增加一个节点n,使得n.id=id,n.E(g)=edgeSet。如果在J中已经存在一个节点n’,其id等于该片段在GI中的id,即n’.id=id,那么增加edgeSet到节点n’的边列表集合中,而无需增加节点n。
步骤e2、在J中,把该节点与该节点在GI中的父节点相关联。
步骤e3、如果id所代表的片段为频繁片段,那么增加该片段的qId,edgeSet和id信息到队列Queue中。
步骤e1到e3所描述的方案可以通过如下伪代码实现:
输入:1、一个交互感知索引J,
2、一个队列Queue,
3、一个节点id列表qIds,
4、一个边集合edgeSet,
5、GI中一个节点Id。
输出:更新后的交互感知索引J。
J.addNode(id,edgeSet);
循环遍历vp∈GI.V.get(id).parents:
J.addEdge(vp.id,id);
结束循环
如果GI.V.get(id)为频繁片段,那么:
Queue.push(qIds,edgeSet,id);
在一种可选的方案中,本发明实施例中构建的交互感知索引还可以支持用户对查询图中已创建边的删除操作,与现有技术相比,本发明实施例的交互感知索引不要求每时每刻查询图都是一张连通图。为了描述方便可以称删除的一条边为第二边,删除第二边之前的查询图为第三查询图,删除第二边之后的查询图为第一查询图,那么,删除该第二边时该JIVQ的更新过程为:通过在第三查询图上删除边得到第一查询图,删除的边为第二边;然后确定所有第三片段,若一个片段包含该第二边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第三片段;再从交互感知该中删除该第三片段。可选的,该交互感知索引中每个用于代表片段的节点包含边列表集合,该边列表集合中包含多组边集合且每组边集合中包含边序号,该第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成该片段。该确定所有第三片段,可以具体为:确定删除的边的边序号,删除的边的边序号为目标序号;然后将该交互感知索引中包含的边列表集合中存在该目标序号的节点所代表的片段确定为第三片段,该交互感知索引中的节点所代表的片段均为该离线索引中的节点所代表的频繁片段或者判定非频繁片段。有上述描述可知,本发明实施例中的交互感知索引的内容随着查询图的变化而变化,生成交互感知索引的过程其实就是对对查询图进行粗略匹配的一个过程,也即是说,本发明实施例不是在查询图完全建立成功之后再开始为该查询图挖掘匹配图,而是在建立查询图的过程中就开始了为查询图粗略地挖掘匹配图,使得查询图建立完成之后就可以很快地挖掘出匹配图。另外,在本发明实施例中,该交互感知索引会根据查询图的变化而变化并且始终为一个索引图,后续基于该交互感知索引挖掘时计算的复杂度较低,能够节省计算开销。
简单来说,用户删除第三查询图中的第二边edge的方式(对应的函数可以表RemoveEdge())可以描述如下:
步骤f1、遍历当前交互感知索引J中所有节点的边列表集合E(g),执行操作f2;
步骤f2、如果待删除第二边edge包含于当前遍历节点的E(g)中的一个边集合时,那么删除该节点的E(g)。然后,删除的节点。
步骤f1到f2所描述的方案可以通过如下伪代码实现:
输入:1、当前的已创建的交互感知索引J,
2、待删除第二边edge。
输出:更新后的交互感知索引J。
需要说明的是,本发明实施例中的查询图可以通过每次增加一条边的方式构建得到,也可以通过每次增加一个模式图(一个模式图包含多条边)的方式构建,还可以通过增加边和增加模式图混合的方式(有时候增加一条边,有时候增加一个模式图)。当增加的是模式图时,系统可以将该模式图按照一定的规则将该模式图视为由多个边按照先后顺序拼接得到,这样一来,不管以哪种方式构建,都可以看作是以每次增加一条边的方式构建得到查询图。另外,离线索引中缩影的代表某个片段的节点与交互感知索引中索引的代表该片段的节点不同,例如,离线索引中代表该片段的节点不存在边列表集合,而交互感知索引中代表该片段的节点存在边列表集合;但是离线索引中代表该片段的节点的标识与交互感知索引中代表该片段的节点的标识可以相同。
步骤S203:设备根据预设的多个匹配范式中的一种匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
具体地,挖掘匹配图所采用的范式此处不做限定,例如,该设备采用的范式可以为子图同构匹配(英文:Subgraph Isomorphism Pattern Matching,简称:SIPM)、相似子图匹配(英文:Similarity Subgraph Pattern Matching,简称:SSPM)、泛化子图匹配(英文:Generalized Subgraph Pattern Matching,简称:GSPM)等;可选的,该设备可以根据需要来选择子图同构匹配、相似子图匹配和泛化子图匹配中的一种范式进行挖掘。以下分别对子图同构匹配、相似子图匹配和泛化子图匹配的挖掘原理进行介绍。
本发明实施例提供的子图同构匹配ExactCandidates()的挖掘原理如下:
步骤h1、判断第一查询图q本身是否为一个频繁片段或者判定非频繁片段,即在所构建的JIVQ中是否存在一个节点v,该节点v的边列表集合中有一个边集合包含q的所有边。
步骤h2、如果存在这样的节点v,则将节点v在GI中对应的节点的支持图集合LdelIds(g)作为第一查询图q的匹配图集合Rfree;
步骤h3、如果不存在这样的节点v,则根据JIVQ中所有的叶子节点,构建候选匹配图集合Rver=∪s.LdelIds(g),s∈S,S为叶子节点在GI中对应的节点集合。
步骤h4、对于Rver中的每个候选图,通过预先配置的子图匹配算法(即作函数subgraphIsomorphism),验证该候选图是否与q子图同构,现有技术中的子图匹配算法较多,此处不一一举例。
步骤h5、获取与q子图同构匹配的所有匹配图id并组合集合Rq。
步骤h1到h5所描述的方案可以通过如下伪代码实现:
输入:1、一个交互感知索引J,
2、一个第一查询图q,
3、从目标图数据库D中构建的离线索引GI。
输出:1、无需验证的与q子图同构匹配的所有匹配图id所组成的集合Rfree,
2、需要验证的与q子图同构匹配的所有匹配图id所组成的集合Rver。
设置v=argmax(|f(v)|),v∈J.V;
如果|f(v)|=|q|,那么:
设置Rfree=GI.V.get(v.id).LdelIds(g);
否则:
设置ids=J中所有叶子节点的id集合;
设置Rver=∪GI.V.get(id).LdelIds(g),id∈ids;
返回(Rfree,Rver)。
对于Rver的验证操作如下:
循环遍历每个候选图g,g.id∈Rver:
如果subgraphIsomorphism(g,q),那么:
设置Rq=Rq∪g.id;
结束循环
返回Rq=Rq∪Rfree
本发明实施例提供的相似子图匹配的挖掘原理如下:
步骤k1、将第一查询图q与JIVQ加入到一个集合X中。
步骤k2、从i=1到i=δ依次进行遍历,执行步骤k3到k7。
步骤k3、对于X中每个第一查询图,都尝试删除图中i条边。
步骤k4、对于每一种删除方法,如果形成的结果图p为连通图,那么利用交互感知索引构建时描述的删除边的方法RemoveEdge()来更新交互感知索引JIVQ。
步骤k5、利用子图同构匹配图ExactCandidates()的方式挖掘与第一查询图p子图同构的候选匹配图集合(包含两个集合Rfree和Rver)。
步骤k6、把p与更新后的JIVQ增加到集合X中。
步骤k7、通过预设的算法采用与子图同构匹配图挖掘方法类似的Rver的验证操作,来验证Rver集合中所有候选匹配图,并返回所有的相似匹配图集合。
步骤k1到k7所描述的方案可以通过如下伪代码实现:
输入:1、一个交互感知索引J,
2、一个第一查询图q,
3、从目标图数据库D中构建的离线索引GI,
4、相似距离阈限δ。
输出:1、无需验证的与q子图同构匹配的所有匹配图id所组成的集合Rfree,
2、需要验证的与q子图同构匹配的所有匹配图id所组成的集合Rver。
本发明实施例提供的泛化子图匹配的挖掘原理如下:
步骤m1、利用交互感知索引构建器所涉及的JIVQ在线更新方法RemoveEdge()算法,计算删除q中所有泛化边后,生成新的交互感知索引J。
步骤m2、查询GI以获取与J中所有节点对应的频繁片段的支持图集合的交集,构成待验证的候选图集合。
步骤m3、利用SubgrapIsomorphism+算法对每个候选图泛化边的匹配关系进行验证,返回与第一查询图子图泛化匹配的匹配图集合。其中SubgrapIsomorphism+算法为对现存的图同构匹配算法进行的扩展算法,用以支持对泛化匹配关系的匹配。例如,Ullmann算法迭代地对第一查询图中每个候选匹配节点,按照第一查询图中其邻近关系,依次验证邻近关系是否在数据图中被满足,如果不满足,则从该节点的候选集合中删除,直到对第一查询图中所有关系都按照查询节点序列进行验证后,即可得到与第一查询图匹配的数据图的子图。为了解决泛化匹配问题,只需要在上述迭代中,对泛化边(权重大于1)的邻近关系的匹配,转换成距离匹配,嵌入最短路径算法,来验证邻近关系是否在数据图中被满足即可。需要说明的是,对于相同的第一查询图而言,第一查询图的建模顺序不会影响子图同构匹配图挖掘方法、相似子图匹配图挖掘方法和泛化子图匹配挖掘方法的最终结果。SubgrapIsomorphism算法可以采用任何子图同构算法,本发明并不做限制。
步骤m1到m3所描述的方案可以通过如下伪代码实现:
输入:1、一个交互感知索引J,
2、一个第一查询图q,
3、从目标图数据库D中构建的离线索引GI。
输出:泛化匹配的匹配图集合Rg。
初始化
循环遍历e∈q.E且e.weight>1:
J=RemoveEdge(J,e);
结束循环
循环遍历n∈J.V:
Rg=Rg∩GI.V.get(n.id).LdelIds(g);
结束循环
Rg=SubgrapIsomorphism+(Rg,q);
返回Rg;
下面讲述步骤S201~S203的方法在一种具体场景中的应用。
该场景是针对实际蛋白质中化学元素关系所组成的网络数据集实际查询需求的处理。Antiviral数据集包含了化合物中化学元素之间的拓扑结构。在该数据集中,数以千计的化合物已被检查了抗HIV活性的证据。一共包含40K(K=1000)张图数据。该数据集中,所包含数据图的平均节点数为25,平均边数为27,最大节点数222,最大边数251。
将上述数据集合D(相当于前面讲述的“图数据库D”)导入到依据本发明中所涉及方法构建的系统中,首先进入离线过程,利用离线索引构建器,创建离线索引GI。该过程中,首先获取所有的频繁片段,组成集合F,针对给定的不同的频繁片段最小支持阈限α参数,所获取到的频繁片段数量是不同的,例如,当α=0.1时,可以获取共有2834个频繁片段,当α=0.2时,可以获取共有462个频繁片段,当α=0.3时,可以获取共有165个频繁片段。下面将以两个频繁片段f1和f2为例介绍本实施例中离线索引的构建过程,其中,f1的结构为C-CI,f2的结构为C-C,f2中的存在两个节点C,一个节点的编号为0另一个节点的编号为2,因此可以称其中一个节点C为节点1,称另一个节点C为节点2;首先,对于f2中的每个节点,将按照离线索引构建方法,尝试通过一个频繁边给它连接一个新的节点。于是,当尝试给f2中的节点0通过频繁边C-C连接一个新节点时,可以获得一个新的片段f3。因为f3是频繁片段,所以把f3加入到索引GI中,作为一个新节点,并增加与f3的父节点f2的边,标识其转换操作方法与规范标签。以相同的方式,当尝试增加另一条频繁边f1(C-CI)时,可以获得f5。相似地,在连接边C-C到f2的节点1之后,可得到一个与f3同构的图,因此,只需要增加转换操作信息到该边的Lo中。接下来,可以将f3转换为g8,并增加到GI中,由于g8为一个判定非频繁片段,因此并不需要继续对其变化产生后续节点,g9、g10的构建可以参照g8,此处不再赘述。最终以f2为根的所构建出的离线索引GI如图3所示,图3所示的每个片段中的每个节点对应有自己的节点id,两个具有父子关系的片段之间边能够体现其中的父片段到子片段的操作关系,其中,operator用于体现操作类型(可选的,可以通过不同的符号来表明操作类型为增加节点与已有节点连接还是连接两个已有节点,例如,字符串N1(CI)表明增加新节点CI与已有的id为1的节点连接,字符串C(1,2)表明操作类型为连接已有的两个id分别为1和2的节点),canon用于体现节点间的映射关系。以相同的方式,可以构建整个GI。
在构建完离线索引GI后,启动交互式系统界面,用户即可通过GUI界面,进行查询图的交互构建过程,即进入了查询图交互式构建过程。图4展示了一个针对用户实际查询图建模过程的交互感知索引的构建过程。图4中包括4a、4b、4c、4d、4e、4f、4g、4h、4i和4j部分,4a到4e展示了查询图的构建过程,4f到4j展示了不同查询图的各自对应的交互感知索引JIVQ,其中,当查询图如4a所示时对应的交互感知索引如4f所示,当查询图如4b所示时对应的交互感知索引如4g所示,当查询图如4c所示时对应的交互感知索引如4h所示,当查询图如4d所示时对应的交互感知索引如4i所示,当查询图如4e所示时对应的交互感知索引如4j所示。4f~4j中示意的节点内部的序号为该节点的节点id,节点的边列表集合E(g)展示在方括号中。图3是其对应的离线索引GI。因为用户首先添加边C-C,所以会利用C-C的CAM码在GI中搜索,以判断C-C是否为频繁边。接下来,在GI中成功匹配到代表频繁片段f2的节点后,将利用AddToQueue函数在JIVQ中增加对应于f2的节点,设置该节点的节点id为2(即f2.g在GI中的id),并把f2在查询图中的边集合加入到该节点的E(g)中,即增加edgeSet={1}到E(g)(对应于边C-C)。截止当前,因为当前的查询图中只包含此边,因此针对第一条边的构建已经完成了。接下来,用户增加了第二条边C-CI到查询图q中,需要以相同的方式先利用C-CI的CAM码来搜索GI,并增加代表f1的节点到JIVQ中,设置增加的节点的id=1,E(g)={2},至此当前JIVQ中有两个孤立点。接下来以C-CI为种子,将遍历其他可以连接到该种子的边,并构建操作关系字符串(N1(CI)),从GI中f2节点开始搜索,构建查询图中包含该种子C-CI边的其他频繁片段或判定非频繁片段到JIVQ中。利用上述操作,将可以搜索到频繁片段C-C-CI,并在JIVQ中创建代表C-C-CI的节点(新创建的节点的id=5,其edgeSet={1,2}表明由查询图中边序号为1、2的两条边可以构成频繁片段f5。由于在GI中,代表f2和f1的节点是代表f5的节点的父节点,因此,在JIVQ中,也构建f2与f5之间的父子关系,以及构建f1与f5之间的父子关系,因为查询图不存在另外的边可以与f5片段连接构成新的片段,对第二条边的处理结束。然后,用户增加了新边C-C到查询图中,通过比较CAM码,发现增加的新边C-C即为频繁边f2,与第一次增加的边同构,因此无需增加新节点到JIVQ中,只需要对f2在JIVQ中对应的id=2的节点的E(g)进行更新,增加边集合{3}到E(g)中即可。然后,所有查询图现存的其他节点都将尝试与该种子边C-C进行连接,构成新的片段,并利用操作关系字符串在GI中进行搜索,以判断新构成的片段是否存在于GI中,假设利用操作关系字符串N0(C)搜索到f3,则增加代表f3的节点到JIVQ中,并增加f3拥有的父子关系,最后整个查询图C-C-C-CI在GI中对应的片段f10(图中标号为10的片段)也以同样方法增加到JIVQ中,至此,对新增边的处理结束。最后,用户增加了第四条边来连接节点1和3,以上述相同的操作对其处理后,发现在GI中节点8与10代表的片段都是判定非频繁片段,因此将节点8和10增加到JIVQ后,无需再搜索查询图中包含他们代表的片段的片段,代表判定非频繁片段的节点在图4中用灰色背景节点展示。最后,用户利用模式图面板中的模式图,增加了一个苯环到查询图中,系统将会立刻把所增加的模式图拆分成多个新增边的行为,利用上述方法,对JIVQ迭代地进行创建,最终所创建的JIVQ结构如图4中的4j所示。
请参见图5,图5展示了当用户删除查询图中的一条边时,对当前交互感知索引JIVQ进行更新的实例。图5中的5a、5b和5c展示的是查询图,5d、5f和5e展示的是交互感知索引JIVQ,其中,当查询图为5a时交互感知索引如5d所示,当查询图为5b时交互感知索引如5e所示,当查询图为5c时交互感知索引如5f所示,5d到5f说明了当用户删除边C-CI时,对JIVQ进行更新的过程。首先,算法将搜索所有节点的E(g),删除其中包含边C-CI的边集合,由于边C-CI的边序号有2(一个边的边序号可能有多个),因此如果某个边集合中包含有边序号2,则删除该边集合,删除包含边2的边列表集合之前如5d所示,删除包含边2的边列表集合之后如5e所示。然后所有的节点都将被删除,删除的节点后得到的交互感知索引如5f所示。
在图4所示的查询图建模过程中,如果用户在增加完第三条边后(即得到的查询图如4c所示且得到的交互感知索引如4h所示时),点击“挖掘"按钮来触发利用子图同构匹配图挖掘方法来挖掘与查询图子图同构的匹配图。对于这个查询图q而言,可以在JIVQ中找到一个代表整个q的节点,即节点10,所以仅需要返回节点10在GI中对应节点的支持图集合即可,并不需要后续验证过程。但是如果用户在增加第四条边后(即得到的查询图如4d所示且得到的交互感知索引如4i所示时),才点击“挖掘”按钮来触发利用子图同构匹配图挖掘方法来挖掘与查询图子图同构的匹配图,那么代表整个查询图的节点在JIVQ中并不存在,所以子图同构匹配图挖掘方法将会获取JIVQ中所有的叶子节点,即节点10与节点8,并把节点8和10在GI中对应的节点的支持图的交集作为候选匹配图集合,利用现存的图同构算法(如VF2)来验证,最后返回真正与q子图同构的匹配图集合,其中一个匹配图实例如图6所示。
在图4所示的查询图建模过程中,如果用户在增加查询图的第四条边之后(即得到的查询图如4d所示且得到的交互感知索引如4i所示时),点击“挖掘"按钮来触发利用相似子匹配图挖掘方法挖掘与查询图相似子图匹配的匹配图,并设置σ=1,首先增加整个的查询图q和此时的查询图对应的交互感知索引(即4i所示的交互感知索引)到集合X中,然后,将遍历删除≤1条边(即1条边)后所有可能生成的结果图,并针对每张结果图都调用子图同构匹配图挖掘方法,来进行子图同构匹配图挖掘,在本例中,将尝试删除q中每一条边,得到的结果图集合为{(1,2,3),(2,3,4),(1,3,4),(1,2,4)},然后利用子图同构匹配图挖掘方法,对他们分别进行子图同构匹配图挖掘,返回与他们子图同构的匹配图的并集,即为q的相似匹配图集合,其中一个匹配图实例如图7所示。
在图4所示的查询图建模过程中,如果用户在增加查询图的第四条边之后(即得到的查询图如4d所示且得到的交互感知索引如4i所示时),点击“挖掘"按钮来触发利用泛化子匹配图挖掘方法挖掘与查询图泛化子图匹配的匹配图,假设边2为泛化边,权重为3,首先利用交互感知索引构建器所涉及的JIVQ在线更新方法,计算删除q中边序号为2的泛化边后生成的JIVQ索引,如图5中的5f所示。获取节点8在GI中的对应节点,得到该节点的支持图集合,最后利用SubgraphIsomorphism+算法对每个候选图中泛化关系进行验证,返回与查询图子图泛化匹配的匹配图集合,其中一个匹配图实例如图8所示。
在图2描述的匹配图挖掘方法中,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。
请参见图9,图9描述了本发明实施例提供的一种匹配图挖掘设备90的结构,该设备90包括:至少一个处理器901,存储器902,至少一个通信接口或用户接口903,至少一个通信总线904。通信总线904用于实现这些组件之间的连接通信。该用户接口903可选地包括显示器(例如,触摸屏、LCD、CRT、全息成像(Holographic)或者投影(Projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等),例如,该设备90包括用户接口903且该用户接口903包括显示器和触摸屏,该显示器用于显示用户配置的与图匹配相关的参数,该触摸屏用于获取用户构建查询图的操作,从而确定用户需要构建什么样的查询图。
存储器902可以包括只读存储器和随机存取存储器,并向处理器901提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器(NVRAM)。
该设备90中的处理器901用于读取该存储器902中存储的程序代码,执行以下操作:根据预先获取的离线索引和第一查询图生成交互感知索引,该交互感知索引包含代表所有第一片段的节点且该交互感知索引为一张索引图;若一个片段包含于该第一查询图且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第一片段;代表每个片段的节点用于描述该片段的特征;根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
通过执行上述操作,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
在一种可选的方案中,该处理器901根据预先获取的离线索引和第一查询图生成交互感知索引,可以包括:通过在第二查询图上增加边得到第一查询图,增加的边为第一边;确定所有第二片段,若一个片段包含该第一边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第二片段;将该所有第二片段中不存在节点处于该交互感知索引的第二片段的节点添加到该交互感知索引中,不存在节点处于该交互感知索引的第二片段属于该第一片段。也即是说,当通过增加第一边使得第二查询图变为第一查询图时,向交互感知索引中新增代表第二片段的节点以更新该交互感知索引,使得该交互感知索引中的节点代表的图能够满足该第一查询图的匹配图挖掘需求。
在又一种可选的方案中,该处理器901根据预先获取的离线索引和第一查询图生成交互感知索引之前,还用于:根据图数据库生成离线索引,该离线索引中记录了该图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,该操作关系表明了该任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;另外,该处理器901确定所有第二片段,具体为:在源片段上添加该第一边,该源片段为交互感知索引中的节点代表的频繁片段;确定在该源片段上添加该第一边时所作的操作满足该离线索引中的一项操作关系;将该源片段上添加该第一边得到的片段确定为第二片段。可以理解的是,根据该离线索引中记录的操作关系可用于对片段进行更精细地查找,本发明实施例中该操作关系有利于提高交互感知索引的构建效率。
在又一种可选的方案中,该处理器901在源片段上添加该第一边,可以具体为:连接该源片段中已有的两个节点,该两个节点构成的边为该第一边;或者添加一个节点并添加的该节点与该源片段中的一个已有节点进行连接,添加的一个节点与该一个已有节点构成的边为该第一边。
在又一种可选的方案中,该处理器901根据预先获取的离线索引和第一查询图生成交互感知索引,可以包括:通过在第三查询图上删除边得到第一查询图,删除的边为第二边;确定所有第三片段,若一个片段包含该第二边且该片段为该离线索引中的节点所代表的频繁片段或者判定非频繁片段,则该片段为该第三片段;从交互感知索引中删除代表该第三片段的节点,该交互感知索引中删除代表该第三片段的节点后剩余的节点所代表的片段属于该第一片段。当通过删除第二边使得第三查询图变为第一查询图时,从当前的交互感知索引中删除代表第三片段的节点以更新该交互感知索引,使得更新后的交互感知索引既满足该第一查询图的匹配图挖掘需求,又减少该交互感知索引占用的存储开销。
在又一种可选的方案中,该交互感知索引中每个用于代表片段的节点包含边列表集合,该边列表集合中包含多组边集合且每组边集合中包含边序号,该第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成该片段;该处理器901确定所有第三片段,具体为:确定删除的边的边序号,删除的边的边序号为目标序号;将该交互感知索引中包含的边列表集合中存在该目标序号的节点所代表的片段确定为第三片段,该交互感知索引中的节点所代表的片段均为该离线索引中的节点所代表的频繁片段或者判定非频繁片段。也即是说,每个边都有自己的边序号且可以通过边序号来标记该交互感知索引中每个片段包含哪些边,这样一来,当从该第三查询图中删除第二边时,可以根据该第二边对应的目标序号从已有的交互感知索引中确定第三片段。
在又一种可选的方案中,该处理器901根据预设的多个匹配范式中的一个匹配范式从该交互感知索引中挖掘该第一查询图的匹配图,具体为:选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从该交互感知索引中挖掘该第一查询图的匹配图。
需要说明的是,各个操作的实现还可以对应参照图2所示的方法实施例的相应描述。
在图9所描述的设备90中,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
综上所述,通过实施本发明实施例,交互感知索引包含代表所有第一片段的节点,因此无论该查询图为子图同构对应的查询图,还是相似子图匹配对应的查询图,还是泛化子图匹配对应的查询图,该交互感知索引中的节点所代表的片段的集合均为该查询图的匹配图的超集,因此,该交互感知索引中的节点代表的图能够满足不同查询图的挖掘要求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (21)
1.一种匹配图挖掘方法,其特征在于,包括:
根据预先获取的离线索引和第一查询图生成交互感知索引,所述交互感知索引包含代表所有第一片段的节点且所述交互感知索引为一张索引图;若一个片段包含于所述第一查询图且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第一片段;代表每个片段的节点用于描述所述片段的特征;
根据预设的多个匹配范式中的一个匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
2.根据权利要求1所述的方法,其特征在于,所述根据预先获取的离线索引和第一查询图生成交互感知索引,包括:
通过在第二查询图上增加边得到第一查询图,增加的边为第一边;
确定所有第二片段,若一个片段包含所述第一边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第二片段;
将所述所有第二片段中不存在节点处于所述交互感知索引的第二片段的节点添加到所述交互感知索引中,不存在节点处于所述交互感知索引的第二片段属于所述第一片段。
3.根据权利要求2所述的方法,其特征在于,所述根据预先获取的离线索引和第一查询图生成交互感知索引之前,还包括:
根据图数据库生成离线索引,所述离线索引中记录了所述图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,所述操作关系表明了所述任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;
所述确定所有第二片段,包括:
在源片段上添加所述第一边,所述源片段为交互感知索引中的节点代表的频繁片段;
确定在所述源片段上添加所述第一边时所作的操作满足所述离线索引中的一项操作关系;
将所述源片段上添加所述第一边得到的片段确定为第二片段。
4.根据权利要求3所述的方法,其特征在于,所述在源片段上添加所述第一边包括:
连接所述源片段中已有的两个节点,所述两个节点构成的边为所述第一边;
或者添加一个节点并添加的所述节点与所述源片段中的一个已有节点进行连接,添加的一个节点与所述一个已有节点构成的边为所述第一边。
5.根据权利要求1所述的方法,其特征在于,所述根据预先获取的离线索引和第一查询图生成交互感知索引,包括:
通过在第三查询图上删除边得到第一查询图,删除的边为第二边;
确定所有第三片段,若一个片段包含所述第二边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第三片段;
从交互感知索引中删除代表所述第三片段的节点,所述交互感知索引中删除代表所述第三片段的节点后剩余的节点所代表的片段属于所述第一片段。
6.根据权利要求5所述的方法,其特征在于,所述交互感知索引中每个用于代表片段的节点包含边列表集合,所述边列表集合中包含多组边集合且每组边集合中包含边序号,所述第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成所述片段;所述确定所有第三片段,包括:
确定删除的边的边序号,删除的边的边序号为目标序号;
将所述交互感知索引中包含的边列表集合中存在所述目标序号的节点所代表的片段确定为第三片段,所述交互感知索引中的节点所代表的片段均为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述根据预设的多个匹配范式中的一个匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图,包括:
选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
8.一种匹配图挖掘设备,其特征在于,所述设备包括处理器和存储器:
所述存储器用于存储数据和程序;
所述处理器调用所述存储器中的程序,用于执行如下操作:
根据预先获取的离线索引和第一查询图生成交互感知索引,所述交互感知索引包含代表所有第一片段的节点且所述交互感知索引为一张索引图;若一个片段包含于所述第一查询图且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第一片段;代表每个片段的节点用于描述所述片段的特征;
根据预设的多个匹配范式中的一个匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
9.根据权利要求8所述的设备,其特征在于,所述处理器根据预先获取的离线索引和第一查询图生成交互感知索引,具体为:
通过在第二查询图上增加边得到第一查询图,增加的边为第一边;
确定所有第二片段,若一个片段包含所述第一边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第二片段;
将所述所有第二片段中不存在节点处于所述交互感知索引的第二片段的节点添加到所述交互感知索引中,不存在节点处于所述交互感知索引的第二片段属于所述第一片段。
10.根据权利要求9所述的设备,其特征在于,所述处理器根据预先获取的离线索引和第一查询图生成交互感知索引之前,还用于:
根据图数据库生成离线索引,所述离线索引中记录了所述图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,所述操作关系表明了所述任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;
所述处理器确定所有第二片段,具体为:
在源片段上添加所述第一边,所述源片段为交互感知索引中的节点代表的频繁片段;
确定在所述源片段上添加所述第一边时所作的操作满足所述离线索引中的一项操作关系;
将所述源片段上添加所述第一边得到的片段确定为第二片段。
11.根据权利要求10所述的设备,其特征在于,所述处理器在源片段上添加所述第一边,具体为:
连接所述源片段中已有的两个节点,所述两个节点构成的边为所述第一边;
或者添加一个节点并添加的所述节点与所述源片段中的一个已有节点进行连接,添加的一个节点与所述一个已有节点构成的边为所述第一边。
12.根据权利要求8所述的设备,其特征在于,所述处理器根据预先获取的离线索引和第一查询图生成交互感知索引,具体为:
通过在第三查询图上删除边得到第一查询图,删除的边为第二边;
确定所有第三片段,若一个片段包含所述第二边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第三片段;
从交互感知索引中删除代表所述第三片段的节点,所述交互感知索引中删除代表所述第三片段的节点后剩余的节点所代表的片段属于所述第一片段。
13.根据权利要求12所述的设备,其特征在于,所述交互感知索引中每个用于代表片段的节点包含边列表集合,所述边列表集合中包含多组边集合且每组边集合中包含边序号,所述第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成所述片段;所述处理器确定所有第三片段,具体为:
确定删除的边的边序号,删除的边的边序号为目标序号;
将所述交互感知索引中包含的边列表集合中存在所述目标序号的节点所代表的片段确定为第三片段,所述交互感知索引中的节点所代表的片段均为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段。
14.根据权利要求8~13任一项所述的设备,其特征在于,所述处理器根据预设的多个匹配范式中的一个匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图,具体为:
选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
15.一种匹配图挖掘设备,其特征在于,所述设备包括:
交互感知索引构建单元,用于根据预先获取的离线索引和第一查询图生成交互感知索引,所述交互感知索引包含代表所有第一片段的节点且所述交互感知索引为一张索引图;若一个片段包含于所述第一查询图且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第一片段;代表每个片段的节点用于描述所述片段的特征;
匹配图挖掘单元,用于根据预设的多个匹配范式中的一个匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
16.根据权利要求15所述的设备,其特征在于,所述交互感知索引构建单元具体用于:
通过在第二查询图上增加边得到第一查询图,增加的边为第一边;
确定所有第二片段,若一个片段包含所述第一边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第二片段;
将所述所有第二片段中不存在节点处于所述交互感知索引的第二片段的节点添加到所述交互感知索引中,不存在节点处于所述交互感知索引的第二片段属于所述第一片段。
17.根据权利要求16所述的设备,其特征在于,所述设备还包括:
离线索引构建单元,用于根据图数据库生成离线索引,所述离线索引中记录了所述图数据库中的频繁片段和判定非频繁片段中任意两个具有父子关系的片段之间的操作关系,所述操作关系表明了所述任意两个具有父子关系的片段中的父片段变换到子片段需要做的操作;
所述交互感知索引构建单元确定所有第二片段,具体为:
在源片段上添加所述第一边,所述源片段为交互感知索引中的节点代表的频繁片段;
确定在所述源片段上添加所述第一边时所作的操作满足所述离线索引中的一项操作关系;
将所述源片段上添加所述第一边得到的片段确定为第二片段。
18.根据权利要求17所述的设备,其特征在于,所述交互感知索引构建单元在源片段上添加所述第一边,具体为:
连接所述源片段中已有的两个节点,所述两个节点构成的边为所述第一边;
或者添加一个节点并添加的所述节点与所述源片段中的一个已有节点进行连接,添加的一个节点与所述一个已有节点构成的边为所述第一边。
19.根据权利要求15所述的设备,其特征在于,所述交互感知索引构建单元具体用于:
通过在第三查询图上删除边得到第一查询图,删除的边为第二边;
确定所有第三片段,若一个片段包含所述第二边且所述片段为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段,则所述片段为所述第三片段;
从交互感知索引中删除代表所述第三片段的节点,所述交互感知索引中删除代表所述第三片段的节点后剩余的节点所代表的片段属于所述第一片段。
20.根据权利要求19所述的设备,其特征在于,所述交互感知索引中每个用于代表片段的节点包含边列表集合,所述边列表集合中包含多组边集合且每组边集合中包含边序号,所述第三查询图中每条边对应有自身的边序号;每个边集合中的边序号对应的边能够组成所述片段;所述交互感知索引确定所有第三片段,具体为:
确定删除的边的边序号,删除的边的边序号为目标序号;
将所述交互感知索引中包含的边列表集合中存在所述目标序号的节点所代表的片段确定为第三片段,所述交互感知索引中的节点所代表的片段均为所述离线索引中的节点所代表的频繁片段或者判定非频繁片段。
21.根据权利要求15~20任一项所述的设备,其特征在于,所述匹配图挖掘单元具体用于:选择子图同构匹配范式、相似子图匹配范式和泛化子图匹配范式中的一种匹配范式从所述交互感知索引中挖掘所述第一查询图的匹配图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710109050.7A CN108509452B (zh) | 2017-02-27 | 2017-02-27 | 一种匹配图挖掘方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710109050.7A CN108509452B (zh) | 2017-02-27 | 2017-02-27 | 一种匹配图挖掘方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509452A true CN108509452A (zh) | 2018-09-07 |
CN108509452B CN108509452B (zh) | 2022-04-12 |
Family
ID=63374024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710109050.7A Active CN108509452B (zh) | 2017-02-27 | 2017-02-27 | 一种匹配图挖掘方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509452B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831216A (zh) * | 2012-08-17 | 2012-12-19 | 广东工业大学 | 一种保持物体几何形状信息的图像检索系统及方法 |
CN104850646A (zh) * | 2015-05-28 | 2015-08-19 | 中国人民解放军国防科学技术大学 | 一种针对单个不确定图的频繁子图挖掘方法 |
-
2017
- 2017-02-27 CN CN201710109050.7A patent/CN108509452B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831216A (zh) * | 2012-08-17 | 2012-12-19 | 广东工业大学 | 一种保持物体几何形状信息的图像检索系统及方法 |
CN104850646A (zh) * | 2015-05-28 | 2015-08-19 | 中国人民解放军国防科学技术大学 | 一种针对单个不确定图的频繁子图挖掘方法 |
Non-Patent Citations (2)
Title |
---|
MIAO XIE: "PANDA: toward partial topology-based search on large networks in a single machine", 《SPRINGER》 * |
近似图包含搜索和索引技术的研究: "吕金涛 等", 《计算机应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108509452B (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230274045A1 (en) | Building information modeling (bim)-based intelligent drafting method for prefabricated buildings | |
Duong et al. | An efficient algorithm for mining the top-k high utility itemsets, using novel threshold raising and pruning strategies | |
US10970292B1 (en) | Graph based resolution of matching items in data sources | |
CN113434623B (zh) | 一种基于多源异构空间规划数据的融合方法 | |
US8600706B2 (en) | Systems and methods for identifying crash sources in a CAD environment | |
CN106462620A (zh) | 巨型网络上的距离查询 | |
Shi et al. | IFCdiff: A content-based automatic comparison approach for IFC files | |
CN102426582B (zh) | 数据操作管理装置和数据操作管理方法 | |
CN107766428A (zh) | 一种自动实现数据可视化的方法和系统 | |
Zhang et al. | Protein complex prediction in large ontology attributed protein-protein interaction networks | |
CN109255586A (zh) | 一种面向电子政务办事的在线个性化推荐方法 | |
JP2008084114A (ja) | オントロジー統合支援装置、オントロジー統合支援方法及びオントロジー統合支援プログラム | |
JP5544571B2 (ja) | 階層構造管理装置、その方法、及びプログラム | |
US10296626B2 (en) | Graph | |
WO2023241519A1 (zh) | Bim构件创建方法、数字设计资源库应用方法和装置 | |
CN106951365B (zh) | 一种基于面向对象软件代码的软件复杂网络模型构建方法 | |
JP2002091991A (ja) | 遺伝子ネットワーク研究支援システム及び方法 | |
Lipp et al. | Local editing of procedural models | |
EP3721354A1 (en) | Systems and methods for querying databases using interactive search paths | |
CN106844736B (zh) | 基于时空网络的时空同现模式挖掘方法 | |
Nguyen et al. | Modelling changes, stakeholders and their relations in semantic 3d city models | |
Song et al. | Interactive visual pattern search on graph data via graph representation learning | |
CN109284440A (zh) | 一种建材信息检索系统以及检索方法 | |
CN107657269A (zh) | 一种用于训练图片提纯模型的方法和装置 | |
WO2010102064A2 (en) | Systems and methods for processing multiple drawings in a cad environment |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |