CN112395462A - 在图数据流中查找匹配子图方法及装置、设备、存储介质 - Google Patents
在图数据流中查找匹配子图方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN112395462A CN112395462A CN201910740418.9A CN201910740418A CN112395462A CN 112395462 A CN112395462 A CN 112395462A CN 201910740418 A CN201910740418 A CN 201910740418A CN 112395462 A CN112395462 A CN 112395462A
- Authority
- CN
- China
- Prior art keywords
- graph
- partition
- edge
- data stream
- vertex
- 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/9027—Trees
-
- 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/90335—Query processing
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种在图数据流中查找匹配子图方法及装置、设备、存储介质,该方法包括:获取当前时刻的图数据流,所述图数据流中包括子图;根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。采用本申请实施例的方案,通过树与图的匹配,能够快速准确地获得图数据流的最大相似性匹配结果。
Description
技术领域
本申请实施例涉及大数据领域,涉及但不限于一种在图数据流中查找匹配子图方法及装置、设备、存储介质。
背景技术
伴随大数据产业的蓬勃发展,图数据处理已普遍应用于各种大数据解决方案中。其中,子图全匹配任务要求确定一个小的查询图是否为一个大的数据图的子图,还进一步要求确定该数据图中包含多少这样的小的查询图、并且确定这些满足要求的子图在数据图中的位置。子图全匹配作为图数据重要的研究方向之一,受到了广泛关注,并将其应用于模式匹配和信息检索。而在目前常用的大数据处理的场景需求下,图数据不再只是传统的静态形式,而是以一种流的形式不断更新变化,形成了一种新的数据结构——图数据流。图数据流除了拥有静态图固有的属性外,还增加了自己特有的属性,其中最为关键的就是它是不断动态更新的,为了适应图数据流的特性,就需要为其设计特有的方法来实现相关操作。
发明内容
有鉴于此,本申请实施例为解决现有技术中存在的至少一个问题而提供一种在图数据流中查找匹配子图方法及装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种在图数据流中查找匹配子图的方法,该方法包括:
获取当前时刻的图数据流,所述图数据流中包括子图;
根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
本申请实施例还提供一种在图数据流中查找匹配子图的装置,该装置包括:
第一确定单元,配置为确定当前时刻的图数据流,所述图数据流中包括子图;
查找单元,配置为根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
本申请实施例还提供一种计算机设备,至少包括处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:所述处理器用于运行所述可执行指令时,所述可执行指令执行上述任一项在图数据流中查找匹配子图的方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述任一项所述的在图数据流中查找匹配子图的方法中的步骤。
通过本申请实施例中的技术方案,确定查询图的最小生成树集合,采用最小生成树集合中的每一生成树来查找图数据流中匹配的子图。如此,通过树与图的匹配,实现了快速准确的最大化相似性匹配,提升了处理速率和匹配精确度。
附图说明
图1为本申请实施例中的一种图数据流处理系统的网络架构的组成结构示意图;
图2为本申请实施例中的一种在图数据流中查找匹配子图的方法的实现流程示意图;
图3为本申请实施例中的子图与查询图相匹配的原理示意图;
图4为本申请实施例中对顶点标签说明的示意图;
图5为本申请实施例中对索引集说明的示意图
图6为本申请实施例中采用生成树进行子图匹配的原理示意图;
图7为本申请实施例中对生成树与生成边的关系说明的示意图;
图8为本申请实施例中的一种在图数据流中查找匹配子图的装置的组成结构示意图;
图9为本申请实施例中的计算机设备的一种硬件实体示意图。
具体实施方式
相关技术中的图数据拓扑结构的数据流匹配方法,主要通过在大的数据图里寻找与查询图相同的子图,目前分为基于快照和基于增量技术的子图匹配。相较于基于快照的子图匹配算法,增量技术更加适合实时更新的图数据。但基于增量技术的子图匹配仅仅能查询到相同的子图,并不能确认数据图中包含了多少个与查询图相匹配的子图,且无法确认位置,即目前的技术并未真正实现图数据流子图全匹配。同时,由于图数据流具有不断更新的特性,因此,传统的静态图子图全匹配无法满足实时更新进行子图全匹配的需求。也就是说,传统的匹配方法无法在每一时刻的图数据流中尽可能地查找到与查询图相匹配的全部子图。
本申请实施例针对图数据流上的增量子图相似性全匹配技术进行研究设计,弥补在图数据流上进行全匹配的空白。在图数据流相似性全匹配中提出了最近邻分区的方法,即在图数据流上进行分区,从而实现图数据流上对分区和结果的增量维护;在增加匹配速度方面,这里为查询图创建生成树集合,并通过为生成树集合中的每一颗生成树在图数据流中寻找符合条件的匹配的子图,从而引入最大相似性匹配的方式进行全匹配,将图与图之间的匹配操作转化为树与图之间的匹配操作,大大增加了图数据流匹配速度。
下面结合附图和实施例对本申请的技术方案进一步详细阐述。
本实施例先提供一种图数据流处理系统的网络架构,图1为本申请实施例网络架构的组成结构示意图,如图1所示,该网络架构包括至少一个计算机设备11至1N,还可以包括服务器31,其中计算机设备11至1N与服务器31之间可以通过网络21进行交互。一般来说,计算机设备在实施的过程中可以为各种类型的具有信息处理能力的设备,例如所述计算机设备可以包括手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等。
本实施例提出一种信息处理方法,该方法应用于计算机设备,该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
本申请实施例提供一种在图数据流中查找匹配子图的方法,如图2所示,该方法包括:
S101、获取当前时刻的图数据流,所述图数据流中包括子图;
S102、根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
其中,生成树集合包含查询图的至少一棵生成树。
这里的查询图是指用于匹配的标准图,本实施例中所要实现的匹配,即在图数据流中查找能够与查询图相匹配的子图。查询图由顶点和边组成,并且查询图是连通的,查询图的每一顶点都可以通过边到达另一顶点。也就是说,查询图属于连通图。因此,可以确定查询图的至少一棵生成树。生成树是指连通图中的一棵包含该连通图中所有顶点的树,生成树也是连通图,但是生成树的各边不能形成回路。也就是说,查询图的生成树是该查询图的一个连通子图。
图数据流是在不断更新变化的图数据,在当前时刻,图数据流可以看作是一个固定的图,其包含的边和顶点都是确定的。此时的图数据流可以看作是由无数个子图所构成的,子图可以是该图数据流中的任一部分边和顶点。
在本实施例中,在图数据流中查找与查询图相匹配的子图需要满足以下三点条件:
第一、作为结果的匹配的子图必须是连通的;
第二、作为结果的匹配的子图的顶点需要与查询图中的顶点相匹配;
第三、作为结果的匹配的子图边的个数不多于查询图中边的个数。
对于上述第一点,由于本实施例中采用查询图的生成树来进行匹配,而生成树一定是连通的,因此,与每一生成树相匹配的子图也会是连通的。
对于上述第二点,在实际应用中可以根据顶点的标签和数量来确定是否匹配。也就是可以拆分为:匹配的子图的顶点个数必须等于查询图中顶点的个数,并且,匹配的子图的顶点标签集合必须等于查询图的顶点标签集合。例如,对于属性相同的顶点,其顶点标签是相同的,即,可以认为他们是相同的顶点,而与查询图中的每一顶点相同的顶点,其数量也应当是相同的。如图3所示,子图a与查询图q中都包括:A、B、C和D共4个顶点,且顶点标签分别为A、B、C和D各1个,则顶点标签集合也是相同的,因此,可以认为子图a与查询图q是匹配的。
对于上述第三点,在本实施例中,实际上是查找与查询图相似的子图,其边的数量不需要完全一致,但不能多于查询图中边的数量。当查询图只包含一个生成树时,则表明查询图中不包含回路,减少任一条边都会导致该查询图不连通,因此,与该查询图匹配的子图也只有一种情况,就是与该查询图完全相同的子图。这种情况下,匹配的子图中边的数量与查询图中边的数量相等。而当查询图包含至少两个不同的生成树时,每棵生成树对应匹配的子图中边的数量均少于查询图的数量。
通过上述方法,实现了“树”与“图”的匹配,可以最大化地查找到与查询图相似的子图。并且,树形结构简单,易于查找,便于提升匹配的速率。
本申请实施例提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S201、获取当前时刻的图数据流,所述图数据流中包括子图;
S202、将所述图数据流划分为至少一个分区;每一所述分区中包括子图;
S203、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S204、根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图。
这里,对当前时刻的图数据流进行分区,可以根据数据图中的顶点进行分区:将包含查询图中相同顶点标签的顶点划分在需要进行匹配的分区中,将不包含查询图中相同顶点标签的顶点划分在不需要进行匹配的分区中;也可以根据图数据流的连通性进行分区,将每一最大的连通子图划分为一个分区;还可以通过其他方式,例如,位置或编号等将图数据流划分为不同的区域。
将图数据流划分至少一个区域后,得到分区图。然后可以只在需要的区域内执行匹配动作,也可以在整个分区图中进行匹配。此外,由于图数据流在每一间隔的T时刻到来时都可能发生改变,当图数据流发生改变时,可以更便于确定发生改变的子图所在的区域。
在其他实施例中,上述S202包括:按照设定规则将所述图数据流划分为至少一个分区;所述设定规则为所述图数据流中的任一连通的子图只属于一个分区。上述S204包括:根据所述生成树集合,在每一连通的子图中,查找与所述各生成树匹配的子图。
也就是说,图数据流中任一连通的子图都不能跨越两个分区,也可以认为,图数据流中的任一条边都只属于一个分区。这样,就保证了单独在一个分区中进行查找时,不会遗漏匹配的子图。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S301、获取当前时刻的图数据流,所述图数据流中包括子图;
S302、将所述图数据流划分为至少一个分区;每一所述分区中包括子图;
S303、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S304、根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图;
S305、获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
S306、确定所述当前时刻的所述分区图中的至少一个待修改分区;
S307、根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区;
S308、在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
上述S305至S308提供了当图数据流发生改变时的处理方法,也就是增量匹配的方法。由于已经对图数据流进行了分区,可以根据图数据流的改变,确定发生变化的分区,该分区中需要插入或删除顶点和边,也就是对该分区进行修改。这里,将修改后的分区称为修改分区,由于步骤304中已经对在整个分区图中进行了匹配,因此,此时只需要在修改分区继续进行匹配即可。
在变化后的这一时刻,修改分区中查找到的子图与非修改区域中已经进行过匹配的子图,都是当前匹配的子图。这样,每次图数据流发生变化时,都进行增量的匹配,就可以保证覆盖到了全部的数据,并且大大提升的匹配的效率。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S401、获取当前时刻的图数据流,所述图数据流中包括子图;
S402、确定所述图数据流中的不匹配顶点和不匹配边;
其中,所述不匹配顶点不与所述查询图中的任一查询顶点相匹配;不匹配边不与所述查询图中的任一边相匹配;所述查询顶点为所述查询图中的任一顶点;
S403、将所述不匹配顶点和所述不匹配边从所述图数据流中删除,得到删除后的图数据流;
S404、将所述删除后的图数据流划分为至少一个分区;每一所述分区中包括子图;
S405、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S406、根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图;
S407、获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
S408、确定所述当前时刻的所述分区图中的至少一个待修改分区;
S409、根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区;
S410、在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
上述步骤402至步骤404提供一种对图数据流进行划分的处理方式,称之为结构剪枝,也就是将不可能与查询图相匹配的顶点和边先删除掉,只保存可能与查询图相匹配的顶点和边。由于匹配时是通过查询图中的顶点标签来确定图数据流中是否存在相同的顶点,因此,只要是查询图中不存在的顶点标签对应的顶点,以及与这些顶点相连接的边,都是不可能与查询图匹配的。将这些顶点和边提前删除,则可以大大减少数据量的处理,提升处理效率。
在其他实施例中,上述S404包括:
S11、确定所述删除后的图数据流中每一匹配顶点的相邻顶点;其中,所述相邻顶点为所述第一图数据中,与所述匹配顶点的距离小于设定阈值的其他匹配顶点;所述匹配顶点为所述第一图数据中的任一顶点;
S12、确定每一所述匹配顶点与对应的所述相邻顶点形成的边为相邻边;
S13、根据所述每一匹配顶点、每一所述相邻顶点和所述相邻边,确定待分区图;
S14、将所述待分区图中的每一连通的子图确定为一个分区。
这里是步骤404中对图数据流分区的一种实施方式,实际上是对结构剪枝后的图数据流加入了一些原本没有的边。例如,将预设阈值设置为3,则距离为1或者2的顶点之间都用边连接起来,这些边中,距离为1的一般是图数据流中原有的边,而距离为2的在图数据流中可能并不存在,这里可以称之为“虚边”。用这些匹配顶点,也就是结构剪枝后的图数据流中的全部顶点,和加入的所有的边构成了一个图,将这个图作为进行分区的待分区图。
在待分区图中,根据连通性来进行分区,将不连通的区域划分开。由于待分区图中存在虚边,它的连通性与结构剪枝后的图并不相同,其包含的每一连通子图的范围都大于或等于结构剪枝后的图中相应的连通子图。这样做的目的是,对图数据流分区,但分区的范围又不过小,将距离较近的顶点都划分在一个区域内。因为在图数据流发生变化时,距离近的顶点之间形成新的边的可能性更大。当两个顶点之间形成新的边时,这两个顶点如果已经在一个分区内,则直接插入新的边,并对这一已有的分区进行匹配即可;而当这两个顶点在两个不同的分区时,则需要对这两个分区进行合并后才能够继续进行匹配。
因此,插入“虚边”后,能够尽可能地减少对分区的处理,而提升整体的匹配效率。
在其他实施例中,上述步骤12包括:将距离大于等于2的所述相邻边,确定为虚边。上述步骤406包括:在所述分区图中将所述虚边删除;确定删除虚边后的分区图中包含的每一连通图;在所述每一连通图中查找与每一所述生成树匹配的子图。
在本实施例中,由于查询图的任一条边的距离都为1,因此,将距离大于等于2的相邻边都确定为虚边。当分区完成后,删除多余的虚边,剩下的图数据就是可以用来进行匹配的图数据。又因为查询图是连通图,与其匹配的子图也是连通的子图,因此,确定删除虚边后的分区图中包含的每一连通图;然后分别查找每一连通图中与查询图的每一生成树匹配的子图。
通过本实施例中的方案,能够在不影响匹配准确度的前提下,最大程度地排除不必要的运算,提升了匹配的效率。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S501、获取当前时刻的图数据流,所述图数据流中包括子图;
S502、将所述图数据流划分为至少一个分区;每一所述分区中包括子图;
S503、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S504、根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图;
S505、获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
S506、确定所述当前时刻的所述分区图中的至少一个待修改分区;
S507、根据所述下一时刻的图数据流,确定所述图数据流中新增的新边;
S508、确定所述新边的两个新边顶点在所述查询图中均存在匹配的查询顶点;
S509、将所述新边插入到所述分区图中,得到至少一个修改分区。
S510、在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
上述步骤507至步骤509给出了步骤307在图数据流中有新增边情况下的一种实现方式,当图数据流发生改变时,确定其中有新增的边,为了表述清楚,这里将新增的边称为“新边”。由于图数据中每条边都有两个顶点,而新边的两个顶点的顶点标签在查询图中可能并不存在,当这两个顶点中任一顶点不存在时,这条新边都必然不能与查询图中的边相匹配。因此,这种情况下则不需要将这条边插入到分区图中并进行后续的增量的匹配,也就是这种情况下图数据流的变化并不能影响匹配结果,因而不需要进行匹配。
这里,确定新边的两个顶点都在查询图中有对应的顶点标签时,才将这一新边插入到分区图中,并将插入后该新边所在的区域确定为修改分区,此后,仅在该修改分区进行匹配即可。
在其他实施例中,上述步骤509包括:当所述分区图中不包含所述新边的至少一个新边顶点时,将不包含的所述新边顶点和所述新边插入到所述分区图中,得到至少一个修改分区。
这里考虑到实际上图数据流中是进行了边的新增,原有的分区图中可能已经包含了这条新边的两个顶点,此时,只需要将新边加入到分区图就可以了。而原有的分区图中也可能并不包含这两个顶点,或只包含其中的任一顶点而不包含另一个顶点,在这种情况下,不仅要将新边加入到分区图中,还需要将顶点一起加入到分区图中,因为每条边都必然带有两个顶点。
在其他实施例中,上述步骤509还包括:
S21、当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点在相同分区中;
S22、将所述新边插入到所述相同分区中;
S23、将所述相同分区确定为修改分区。
将新边插入到分区图中还包括两种情况,这里是第一种情况。在已有的分区图中,插入新边后,新边的两个顶点都在相同的分区中,则整个分区图中只有插入新边的分区发生了改变,因此,将这一分区确定为修改分区。在后续进行匹配时,直接对这一分区中的连通图进行匹配即可。
在其他实施例中,上述步骤509还包括:
S31、当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点包含于至少两个分区;
S32、将所述新边插入到所述分区图中;
S33、将所述至少两个分区合并为一个修改分区。
这里是将新边插入到分区图中的另一种情况,在已有的分区图中,插入新边后,新边的两个顶点在不同的分区中,那么新边将会跨越至少两个分区。这样就破坏了不同分区的连通性的隔离,导致会有一个连通图跨越不同的分区。因此,需要将这至少两个分区进行合并,并将合并后得到的分区作为后续进行增量匹配的分区。
在其他实施例中,上述方法还包括:
S41、将所述分区图的每一分区中连通的子图确定为连通图;
S42、当所述两个顶点分别包含于不同的连通图时,将两个顶点所在的两个连通图合并为一个新连通图。
这里,首先找出分区图中每一分区中的连通图,也因为匹配的子图是连通图,因此,可以仅对分区图中的每一连通图进行匹配而不考虑不连通的部分。当插入新边时,两个顶点可能会属于原有的不同的连通图,此时,将这两个连通图合并为一个连通图,然后匹配时可以针对这一连通图的整体进行查找。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S601、获取当前时刻的图数据流,所述图数据流中包括子图;
S602、确定所述图数据流中的不匹配顶点和不匹配边;
其中,所述不匹配顶点不与所述查询图中的任一查询顶点相匹配;不匹配边不与所述查询图中的任一边相匹配;所述查询顶点为所述查询图中的任一顶点;
S603、将所述不匹配顶点和所述不匹配边从所述图数据流中删除,得到删除后的图数据流;
S604、确定所述删除后的图数据流中每一匹配顶点的相邻顶点;其中,所述相邻顶点为所述第一图数据中,与所述匹配顶点的距离小于设定阈值的其他匹配顶点;所述匹配顶点为所述第一图数据中的任一顶点;
S605、确定每一所述匹配顶点与对应的所述相邻顶点形成的边为相邻边,将距离大于等于2的所述相邻边,确定为虚边;
S606、根据所述每一匹配顶点、每一所述相邻顶点和所述相邻边,确定待分区图;
S607、将所述待分区图中的每一连通的子图确定为一个分区。
S608、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S609、在所述分区图中将所述虚边删除;确定删除虚边后的分区图中包含的每一连通图;在所述每一连通图中查找与每一所述生成树匹配的子图;
S610、获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
S611、确定所述当前时刻的所述分区图中的至少一个待修改分区;
S612、根据所述下一时刻的图数据流,确定所述图数据流中减少的删除边;
S613、确定所述删除边的两个顶点和所述删除边均存在于所述删除虚边后的分区图中;
S614、将所述删除边从所述分区图中删除;
S615、将所述删除边所在的分区确定为所述修改分区;
S616、在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
这里,由于分区图是对图数据流经过结构剪枝得到的,其中已经删除了不匹配顶点和不匹配边。因此,当图数据流中的某些边被删除时,这些删除的边可能已经在结构剪枝时被剔除,而分区图中并不包含这些要求被删除边。这里,将图数据流中这些被删除的边称为“删除边”。首先确定删除边存在于分区图中,然后才需要将其从分区图中删除,然后得到新的分区图。将删除边所在的分区确定为修改分区,实际上,新的分区图中只有修改分区发生了变化。
得到新的分区图后,再对其中的修改分区进行匹配的操作即可。
在其他实施例中,上述步骤614包括:
S51、当所述删除边的顶点在所述分区图中没有与其他顶点形成边时,将所述顶点确定为孤立顶点;
S52、将所述删除边和所述孤立顶点从所述分区图中删除。
这里,当删除边存在于分区图时,删除边的两个顶点也存在于分区图。将删除边从分区图中删除后,这两个顶点可能还与其他的顶点相连接,也可能不与其他的顶点相连接而成为孤立的顶点。当删除边的顶点成为孤立顶点时,则不能与其他顶点构成连通图,因而不可能包含于任一匹配的子图中。因此,可以将这种孤立顶点直接删除,而将非孤立的顶点保留下来。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S701、获取待匹配的查询图;
S702、根据所述查询图,确定所述生成树集合;
S703、获取当前时刻的图数据流,所述图数据流中包括子图;
S704、根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
上述步骤701和步骤702提供了一种获取生成树集合的实现方式,根据获取到的待匹配的查询图,来确定对应的生成树集合。例如,依次确定查询图中每一生成树,将全部的生成树加入一个集合中,形成生成树集合。
在其他实施例中,上述步骤702包括:
S61、确定包含所述查询图的全部边的边集合;
S62、根据所述边集合中每一条边的设定编码,对所述每一条边进行排序;
S63、根据所述每一条边的排序,依次确定所述查询图的各生成树;
S64、将所述各生成树组成的集合,确定为所述查询图的生成树集合。
上述步骤61至步骤64提供了一种确定生成树集合的实现方式。由于查询图的任意一棵生成树的任一边都是查询图中的边,因此,可以根据查询图的全部边,确定一个边集合。每一条边都具有预设编码,该预设编码可以根据边的权重等来确定。再根据每一条边的预设编码,对这些边进行排序。然后,可以根据实际需求依次确定查询图的生成树。例如,首先确定查询图的最小生成树,然后去除该最小生成树中的一条边并重新排序,继续得到新的最小生成树,直到没有新的生成树能够生成。这样,就通过每次替换一条边的方式,按照每一条边的编码顺序依次得到了查询图的每一棵生成树。
在其他实施例中,上述步骤63包括:
S71、根据所述每一条边的排序,确定所述查询图的第一生成树;其中,所述第一生成树的边包括所述设定编码最小的将所述查询图的每一顶点连通的边;
S72、确定所述第一生成树中能够被替换的第一替换边;
S73、确定所述边集合中的其他边中能够替换所述第一替换边的第二替换边;其中,所述其他边包括设定编码不同于所述第一生成树的边的任一条边;所述第二替换边在所述其他边中编码最小;
S74、将所述第一生成树中的第一替换边修改为第二替换边,形成第二生成树,直到没有其他边可以替换所述第二生成树中的任一条边;
S75、将所述每一第二生成树和所述第一生成树,分别确定为所述查询图的生成树。
这里,第一生成树实际上就是第一次对边集合中的边进行排序后而得到的最小生成树。当边集合中不包含于第一生成树的边中,存在能够替换第一生成树中的某一条边时,将第一生成树中可以被替换掉的这一条边确定为第一替换边,然后将能够用来替换该第一替换边的边集合中预设编号最小的一条边确定为第二替换边;用第二替换边替换掉第一替换边后,就得到了一棵新的生成树。
采用这种方式不断地生成新的生成树,直到没有新的生成树能够生成时,就可以确定查询图的全部生成树,并据此确定出查询图的生成树集合。
本申请实施例还提供另一种在图数据流中查找匹配子图的方法,该方法包括:
S801、获取当前时刻的图数据流,所述图数据流中包括子图;
S802、将所述图数据流划分为至少一个分区;每一所述分区中包括子图;
S803、将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
S804、根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图;
S805、获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
S806、确定所述当前时刻的所述分区图中的至少一个待修改分区;
S807、根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区;
S808、在每一所述连通的子图中,确定顶点匹配子图,其中,所述顶点匹配子图的每一顶点与所述生成树的顶点的标签相同;
当所述顶点匹配子图的边与所述查询图的边的数量差满足设定阈值时,将所述顶点匹配子图确定为匹配的子图。
这里提供了一种相似性匹配的方法,由于作为结果的匹配子图中,顶点需要与查询图相同,而边可以少于查询图的边,因此,这里可以设置一个预设阈值,来限定边的数量差距小于该预设阈值时,才将该子图作为匹配子图。这里的预设阈值可以是编辑距离阈值,即匹配子图与查询图之间存在差异时,需要编辑距离阈值所定义的次数的处理才能将匹配子图变成与查询图相同的图。
通过该方法,可以根据实际需求来设定匹配的相似性程度,从而将满足条件的匹配子图都查找出来,实现了最大化的相似性匹配。
本申请实施例的主要内容是图数据流上增量子图全匹配问题,即在图数据流不断更新变化的过程中,自动地每隔一段时间t返回在不同时间上图数据流所对应的静态图与已有查询图相匹配的满足编辑距离阈值的每一个子图。首先按照最近邻分区的方式为图数据流进行分区,当t时刻图数据流上的改变操作流到达时,也就是当t时刻图数据流发生改变时,按增量对分区进行维护,并统计图数据流的改变操作流中的各改变操作分别所属的分区,然后对于没有发生改变的区不需要进行处理,只对存在更新的区重新进行匹配,从而得到最终匹配结果。如此,使得每次更新后不需要重新进行一次完整的全匹配操作,而是可以在原有的结果基础上进行一种增量的维护,尽可能减少每次更新后的各种维护代价,从而大大提高匹配的速度。
本申请实施例中的图数据流和查询图都是已知的。从t1时刻开始图数据流开始更新,并持续对查询图进行全匹配。每个时间顶点t中返回匹配结果。对匹配结果分析,需要满足以下条件:(1)作为匹配结果的子图必须是连通的,(2)作为匹配结果的子图g的顶点个数必须等于查询图q中顶点的个数,(3)作为匹配结果的子图g的顶点标签集合必须等于查询图q的顶点标签集合,即∑Vg=∑Vq,(4)作为匹配结果的子图的边的个数不多于查询图q中边的个数。
这里的顶点标签可以是顶点的属性,如图4所示,图中的每一顶点都采用vi来表示,即v0至v8,且每一顶点都具有自身的顶点标签,用大写英文字母来表示,包括A、B、C、D和E共5类。例如图4中的顶点v0和v1的顶点标签都为A。
本申请实施例所提供的方法包括以下几个步骤:
S1、采用最近邻分区的方法在图数据流上进行分区;
S2、当t时刻图数据流上的改变操作流到达时,也就是图数据流发生了改变时,按增量对分区进行维护,并统计图数据流的改变操作流中的所有改变操作分别所属的分区;这里的按增量对分区进行维护,是指仅对发生了变化的分区进行修改和后续的匹配操作。
S3、为查询图创建生成树集合,并通过为生成树集合中的每一颗生成树在图数据流中寻找符合条件的匹配,从而引入最大相似性匹配的方式进行全匹配。
上述S1中的最近邻分区方法包括以下几个步骤:
S1a、结构剪枝:将图数据流中不包含于查询图的顶点标签集合的顶点和与该顶点相连的边删除;剩下的顶点和边组成的图中,包含可能与查询图匹配的全部子图;为了在图数据流发生变化时能够进行增量的维护,即仅对发生变化的区域进行数据的处理,需要将结构剪枝后的图数据流进行分区。
S1b、最近邻判断:根据查询图判断图数据流中各顶点的最近邻,并增加虚边,以尽量减少之后合并两个分区的可能性。结构剪枝后的图数据流中包含的顶点和边能够形成至少一个连通图。然而,在图数据流发生改变时,相邻的不同连通图更容易连通,形成新的连通图。因此,这里通过对各顶点与最近邻之间增加虚边,以扩大每一连通图的范围,将扩大范围后的每一连通图作为一个分区。然后,删除掉增加的虚边,此时,每个分区中都会包含至少一个连通图,而每一连通图都不会跨越两个分区。
S1c、分区:通过连通性来判断分区。也就是将增加虚边后的图数据流中的每一连通图作为一个分区,然后再将增加的虚边删除。这样就对原始的图数据流进行了初步的分区。这里将图数据流分区后得到的数据成为分区图,当图数据流发生改变时,只要增加或删除的顶点和边都在同一分区中,就不需要对分区进行修改,并可以直接在对应的分区进行数据的处理。
上述步骤1a实现对初始的图数据流的结构剪枝,剪掉查询图中不存在的顶点和边:
在进行子图全匹配时,图数据流往往是包含大量不同种类顶点标签的大规模图型,而查询图往往是包含标签种类较少的小规模图形。这样通常会导致数据图中包含的一部分顶点标签的种类是查询图中不存在,而这种顶点和与这种顶点相连接的边一定不会成为最后与查询图相匹配的结果中的一部分。因此在进行具体分区之前先对初始的图数据流进行结构剪枝,剪掉符合上述条件的顶点和边,具体的操作过程如下:
首先初始化集合VG′,EG′,∑VG′,LG′,它们分别表示通过结构剪枝后所得图G′的顶点集合、边集合、顶点标签集合以及标签函数,其中LG′=LG,即,将图数据流的标签函数初始化为结构剪枝后的标签函数,初始化顶点集合VG′、边集合EG′和顶点标签集合∑VG′为空集。同时初始化集合V=VG′,即,将集合V初始化为顶点集合VG′,用于记录还未被遍历的顶点。然后,利用广度优先遍历的方法对整个图数据流G进行遍历。初始时,从图数据流的顶点集合中随机选取一个顶点vi作为遍历的初始顶点,判断顶点vi对应的标签是否包含于查询图的顶点标签集合中,即,将顶点vi的标签与顶点标签集合中的每一顶点标签进行对比,如果存在相同的标签,则认为该顶点的顶点标签包含于上述顶点标签集合中。若不包含,则在集合V中删除该顶点,继续随机选择另外一个顶点进行判断;若包含则将vi加入到集合VG′中,并将LG′(vi)加入到集合中,同时在集合V中删除顶点vi,可以表示为:VG′←{vi},V←V-{vi},EG′←{φ}。如果vi的邻居顶点vj能够与查询图中的某个顶点的标签相匹配,即vj的标签LG(vj)包含于查询图q的顶点标签集Lq当中,那么更新集合VG′,EG′,和V,即将vj添加到集合VG′中,将LG(vj)加入到中,并将vj从VG中删除;同时将顶点vi和vj之间的边(vi,vj)加入到集合EG′中,可以表示为:VG′←{vj}∪VG′,EG′←{(vi,vj)},V←V-{vj}。如果vi的邻居顶点vj不能够与查询图中的某个顶点相匹配,即vj的标签LG(vj)不包含于查询图q的顶点标签集Lq当中,那么在集合V中删除顶点vj,然后处理vi的下一个相邻顶点;重复上面操作,直至没有顶点能够加入到集合VG′中。此时,在未匹配的顶点集合V中再随机选择一个顶点作为遍历的初始顶点,重复执行上述操作,直到集合V为空,即图数据流中的所有顶点都被遍历完为止。最后得到一个新的图G′=(VG′,EG′,∑VG′,LG′)。这个新的图中所有顶点的标签一定都包含于查询图q的标签集合当中。
上述步骤1b实现对每个顶点根据查询图的结构进行最近邻判断:
基于随着图数据流的更新,两个距离越远的顶点,之后被连接上的可能性越小,反之两个距离越近的顶点,之后被连接上的可能性越大;而两个距离越近的顶点,之后被断开的可能性越小,反之两个距离越远的顶点,之后被断开的可能性也越大。本申请实施例的主要思想是在确定分区前先对每个顶点根据查询图的结构进行最近邻判断,通过增加一些虚边,使一些以后被连接可能性大的顶点尽量在一个分区当中,从而减少每次更新后对图分区进行维护的代价。这里的最近邻是指与一个顶点距离小于设定值的其他顶点,确定最近邻后,确定每组最近邻之间的边,当图数据流中本来不存在这些边时,则加入虚边。
操作过程如下:
首先通过索引结构得到查询图中每个顶点对应的索引集和查询图中各标签的最近邻集合。索引集的说明参考图5所示,三个顶点v1、v7和v11的顶点标签均为A,而查询图(图5中未示出)的顶点u1的标签也是A,因此,索引集I(u1)={v1,v7,v11}。
初始化集合VG″,EG″,LG″,已访问过的顶点集合V′和虚边集合AE(AuxiliaryEdge Set),其中VG″=VG′,LG″=LG′=LG。然后根据最近邻集合对图数据流进行遍历。从查询图q中选取匹配数量最少的顶点ui作为一个初始顶点,选择I(ui)中的第一个与顶点ui相匹配的顶点vi开始遍历,根据NN(Lq(ui))查找与标签NN(Lq(ui))中标签相匹配且与vi距离最近的顶点vj,将vi加入到集合V′中,若vi与vj距离是1,则将边(vi,vj)插入到边集合EG″中,若距离大于等于2小于等于3则将边(vi,vj)插入到边集合EG″和AE中。接下来依次处理其他顶点,当没有其他满足条件的顶点可以处理时,将查询图中的各顶点对应的索引集中所包含的所有V′中的顶点都删除。若此时查询图各顶点对应的索引集均为空则遍历结束,否则在不为空的集合中随机找到一个初始顶点vk按上述过程继续遍历,直到查询图各顶点对应的索引集均为空时结束。
算法参见表1:
表1
上述步骤1c通过判断此时图数据流中子图的连通性来对图数据流进行分区:
初始的图数据流G去除掉与查询图q不相关的顶点和边后变为图G′,然后再通过最近邻判断增加适当的虚边后成为一个由几个相互独立的部分组成的非连通图G″。在这之后通过判断此时图数据流中子图的连通性来对图数据流进行分区,最后,把每个分区中所包含的第二步插入的虚边删除,将所得结果作为最后的分区结果。为了便于之后的匹配操作,不仅分别保存每个分区的顶点集合和边集合,对于每个分区中的各个连通图的顶点和边也同时要分别进行存储。也就是说,最终分区结果P={Pi,i=1,2,3...},其中Pi={gij,j=1,2,3...},gij表示分区Pi中的第j个连通图。
分区后完成了步骤1进入步骤2,上述步骤2实质上是根据边的插入和删除,对图数据流分区进行动态维护:
图数据流与传统静态图之间最大的区别就在于图数据流不断更新的特性,即边和顶点不断的进入。而图数据流不断进入的边很有可能是一条跨越不同分区的边,这样就使得原有的分区结果发生变化,从而需要重新进行一次分区,这样势必会导致时间复杂度过高,并且无法满足图数据流实时返回匹配结果的要求。本申请实施例中为了解决这个问题,提出了最近邻分区方法,通过最近邻判断将之后很有可能被连接上的顶点放入同一个分区当中,从而减少每次更新时对图数据流分区进行维护的代价。
对于图数据流上的更新主要分为边的插入和删除,注意图中顶点的插入和删除均可以视为边的插入和删除,其中边的插入操作又具体可以分为以下五种形式:
(1)插入边(vi,vj)中有一个顶点的标签不包含于查询图的标签集合∑vq中;
(2)插入边(vi,vj)的两个顶点的标签均包含于查询图的标签集合∑vq中,但vi和vj中只有一个顶点存在;
(3)插入边(vi,vj)的两个顶点的标签均包含于查询图的标签集合∑vq中,且vi和vj两个顶点均已存在,并属于同一分区当中,但属于不同的连通图;
(4)插入边(vi,vj)的两个顶点的标签均包含于查询图的标签集合∑vq中,且vi和vj两个顶点均已存在,并属于同一分区当中,同时两个顶点属于同一个连通图;
(5)插入边(vi,vj)的两个顶点的标签均包含于查询图的标签集合∑vq中,且vi和vj两个顶点均已存在,但属于不同的分区;
情况(1)中对应的边,不需要插入到图数据流中,因为匹配要求顶点标签必须相同,对于查询图的标签集合中没有的标签,其顶点和对应的边(vi,vj)一定不会成为最终的匹配结果;对于情况(2),先找到存在的那个顶点具体所在的位置gmn,然后将边(vi,vj)直接进行插入,同时将顶点插入到对应的顶点集合当中;情况(3)中将两个顶点所属的同一分区的两个不同连通图进行合并,即合并其顶点集合,边集合以及顶点标签集合。然后将边(vi,vj)插入到合并之后的边集合当中;情况(4)的插入更新是一种最简单的情形,直接将边(vi,vj)插入到该边所对应图的边集合中即可;情况(5)是最为复杂的一种情况,这里使用的最近邻分区方法使这种情况的边尽可能达到最少,以减少维护分区的代价,对于这种边按如下方式处理:先将两个分区合并为同一个分区,然后再根据顶点所在位置按上述情形(3)中所述方法进行操作。
为了加快对图数据流上分区的维护,在插入边(vi,vj)之前,本申请实施例采用的方法是,先对边进行过滤,然后再按上述方式执行操作,只考虑比查询图q少边的情况。如果在查询图中,与插入边(vi,vj)的两个顶点所对应的顶点标签LG(vi)和LG(vj)所对应的顶点之间的距离大于1,那么这条边一定不会成为最后的匹配结果中的一部分,因此满足这种条件的边不进行插入操作,而是直接将其过滤掉。
插入边的方法参见表2:
表2
对于图数据流的更新操作,除了边的插入外还包括边的删除,在本申请实施例中与对顶点的删除均视为删除边的删除,即删除与该顶点相连的所有边。同样,对于删除边(vi,vj),存在以下三种情况:
(1)删除边(vi,vj)不存在;
(2)删除边(vi,vj)存在,删除边(vi,vj)后,没有产生孤立顶点;
(3)删除边(vi,vj)存在,且删除边(vi,vj)后产生了孤立顶点;
对于情况(1),删除边(vi,vj)不存在主要是由于之前的结构剪枝或最近邻判断时将想要删除的这条边已经过滤掉,此时不需要执行任何操作;情况(2)中只需直接确定待删除的边(vi,vj)所在具体位置,将边(vi,vj)从对应图的边集合中删除即可;对于情况(3)确定待删除的边(vi,vj)所在具体位置并将边(vi,vj)从对应图的边集合中删除之后,再将该顶点从对应图的顶点集合中删除。
边的删除方法参见表3:
表3
上述步骤3进行基于最小生成树的全匹配方法还包括以下3个步骤:
S3a、为查询图离线创建最小生成树集合(QST),进而得到与查询图满足编辑距离阈值θ的所有最大相似性匹配子图;
为了保证本申请实施例中的匹配方法能够产生不同的相似性最大匹配,这里为QST中的每一颗生成树引入一个边的集合ST.R,使得EST∩ST.R=φ且|ST.R|≤θ,即一棵生成树的边集合与该ST.R的交集为空,ST.R的元素个数小于等于编辑距离阈值θ。并且任何由ST得到的相似性最大匹配一定不包含边集合ST.R中的任一条边,这里的边集合ST.R被称为ST的排除边集(exclusion edge set)。
例如图6所示。图数据G和查询图q分别如图(a)、(b),查询图q的两个生成树如图(c)和(d),通过这两个生成树可以在G中得到同一个满足θ=1的最大相似性匹配,如(e)所示。事实上在这个例子当中,查询图q的所有不包含边(B,C)的生成树都将会得到相同匹配子图g。重复的匹配结果不仅在匹配过程中会增加匹配代价,同时还需要额外的操作将其移除,因此需要一种方法避免重复匹配结果的生成。如果让ST2的排除边集ST2.R={(A,C)},那么通过生成树ST2的一个准确匹配就没有得到满足θ=1的相似性匹配结果。对于查询图q的每个生成树ST,均通过一组边的序列来进行表示,即(ST[1],ST[2],...,ST[n-1]),其中n是查询图q中顶点的个数,ST[h]作为第h条边或第h层。这里使用一种递归的方式以深度优先搜索模式,即从h=1到h=n-1来生成最小生成树集合QST。
为了便于最小生成树集合的生成,这里为查询图的每一条边分配一个唯一的编码。初始时先按照边的编码的大小生成一个初始的生成树。边的排序遵循这样一种规则,规则1:对于1≤i≤n-1,ST[1],ST[2],...,ST[i]是连通的,并且T[i]是ST中连接ST[1],ST[2],...,ST[i-1]中ID号最小的边。
产生生成树集合的具体过程如下:
使用双层递归的方式形成生成树集合,其中第一层递归实现向下遍历的过程,对应深度优先遍历;第二层递归实现交替变换并重新排序,从而产生生成树。首先按照上述规则初始化一个查询图q的生成树ST作为初始的生成树加载到QST中,此时QST={ST}。ST[h]记录当前被访问的边,其中h初始值为1,ST是当前的生成树,ST.R即为生成树ST的边排除集,记录得到ST的过程中被替换的边,θ为编辑距离阈值。然后按照深度优先遍历方式从上到下,即从h=1到h=n-1,依次进行判断。若h不满足条件则跳出第一层递归,执行第二层递归。只要边排除集ST.R中边的个数小于θ,并且在(Eq-EST-ST.R)中至少存在一条边能够替换ST[h]来形成另外一颗生成树,那么就用e来记录这些边中ID号最小的边,用它来替换ST[h],并且通过按照规则1重新排序EST-ST[h]-ST.R,从而产生新的生成树;更新这课新生成树的边排除集合和生成树集合QST。若不满足第二层递归的条件,那么终止第二层递归,执行第一层递归的上一级,以同样的方式继续执行,直到没有符合条件的边存在。
S3b、使用DTT(DFS Traversal Tree,深度优先遍历树)存储查询图的最小生成树集合QST;
当通过在ST中替换ST[h]产生ST′时,这里在DTT中只存储他们的共同前缀ST[1],ST[2],...,ST[h-1]一次,ST和ST′其余的边分别作为两个不同的分枝进行存储。
在一颗DTT中,每一个顶点N代表生成树ST的一条边ST[h],其中根顶点R代表最小生成树集合QST中生成树的头顶点。初始的生成树首先被加载为DTT的最左边的路径。迭代地,如果一条边e代替了ST中的边ST[h]来形成另一颗生成树ST′,那么ST′[h]作为临近ST[h]的右兄弟被加载到DTT中,使得ST和ST′能够共享前缀ST[1],ST[2],...,ST[h-1]。明显地,深度优先遍历树DTT所需空间为O(|QST||Vq|),即QST中的元素个数与查询图的顶点个数之积。|QST|为查询图的最小生成树集合QST中所包含的生成树的个数,|Vq|为查询图中顶点个数。
生成查询图的生成树集合的方法参见表4:
表4
S3c、当图数据流进行更新之后,在原有的结果上直接进行增量的维护;
一个QI-Sequence(序列)表示q的一颗生成树ST,记为SEQST,如图7所示,图7(a)为一个SEQST的示意图,它由一组序列{S[1],S[2],...,S[|Vq|]}表示,其中每一个S[i](1≤i≤|Vq|)被称为SEQST的一个入口,同时对应q的一个顶点,入口S[1]对应于ST的根顶点。ST中所有的边由SEQST中的生成边(spanning edges)表示,每一个入口S[i](2≤i≤|Vq|)有且只有一条生成边(S[i],S[j]),记为S[i].SEdge,其中i>j。此时称S[j]是S[i]在生成树ST中的父亲。q中其他的边均称为SEQST中的非生成边(not spanning edges),与入口S[i]相关的非生成边的集合记为S[i].NSEdge。也就是说,S[i].SEdge中存放的是与入口S[i]相关的生成树ST中的边,S[i].NSEdge中存放的是与入口S[i]相关的Eq-EST中的边。图7(b)为SEQST的各入口与生成边S[i].SEdge和非生成边S[i].NSEdge的关系示意图。
进行子图全匹配的主要思想是以深度优先的方式搜索DDT,为每一个生成树ST∈QST在图数据流中找到满足条件的匹配,从而得到和查询图q满足编辑距离θ的所有最大相似性匹配。为了加快子图全匹配的速度,不需要枚举所有的生成树,而是采用一种边枚举边判断的方式进行匹配。只要判断出DDT中的一个顶点不满足当前映射的扩展,那么就立刻终止扩展到DDT的下一层。
具体过程如下:
具体分为两个递归部分,第一个递归部分是递归匹配部分,第二个递归部分是递归产生每个生成树所对应的QI-Sequence。其中第二部分的过程与算法4相同,不再进行详细阐述。递归匹配时对每个分区中的每个连通图分别进行处理,处理前先通过顶点标签集合进行过滤,当查询图的顶点标签集包含于该连通图的顶点标签集合时才继续向下执行匹配操作,否则将其过滤。因为匹配要求顶点必须匹配,边可以缺失,所以如果该连通图不包含查询图中的所有顶点标签,那么该连通图中的任何子图都一定不会成为最终的匹配结果,因此将其直接过滤掉。
在进行完上述过滤之后,开始执行匹配操作。初始时,当前所在层数h=1,DDT中所存储的QST,只有最左边的路径,即只有按照规则1所生成的初始的生成树ST,同时SEQ中也只包含初始生成树ST所对应的QI-Sequence,SEQST。f为当前的部分映射函数,当前在SEQST[1,..,h-1]上的部分映射是一个向量{f[1],...,f[h-1]},其中f[i](1≤i≤h-1)是从入口S[i]映射到图数据流G中的一个顶点,并且SEQST[1,..,i]表示SEQST从1到入口S[i]的前缀,也就是说SEQST[1,..,i]由入口S[j](1≤j≤i)的所有S[j].SEdge和S[j].NSEdge组成。
如果当前所在的层h=1,那么就可以从查询图的顶点索引集当中随机选取一个顶点作为初始匹配顶点,否则所选则的顶点不仅要在查询图的顶点索引集当中,还要满足存在一条与该顶点相连的边与生成边S[h].SEdge相匹配,也就是说该顶点也必须是它在SEQST中的父亲对应的映射到G中的顶点的邻居。并且记录当前扩展到该顶点时S[h].NSEdge中所缺失的NSEdge的条数。如果当前生成树和查询图的编辑距离与扩展到该顶点时S[h].NSEdge中所缺失的NSEdge的条数之和小于总的编辑距离阈值θ,那么继续向下执行,否则不再继续扩展。继续判断当前进入的匹配是否包含SEQST.R中的边,如果不包含则可以扩展到该顶点。只要当前层数h≠|Vq|,继续重复执行上述扩展操作,否则Mf,SEQST,即是通过生成树SEQST引入的与查询图q满足编辑距离阈值θ映射函数为f的一个最大相似性匹配。第4-11行的作用主要是判断当前引入的匹配顶点是否满足向下扩展的条件,即是否满足编辑距离阈值θ,且不包含当前生成树所对应的边排除集合中的任何边。
处理完当前生成树所引入的所有匹配结果后,继续生成另一颗满足条件的生成树,然后再执行匹配的过程,直到处理完所有生成树为止。由此就可以得到所有与查询图q满足编辑距离阈值θ的最大相似性匹配。
上述过程中子图全匹配的算法参见表5:
表5
通过本申请实施例提供的上述方法,解决了基于图数据流的增量子图相似性问题,受限利用最近邻分区的方法进行分区,然后利用查询图创建最小生成树集的方法进行子图全匹配,使每次更新不需要重新进行全匹配,而是在原有结果基础上采用增量的维护方式,减少维护成本,提高匹配速度。
基于前述的实施例,本申请实施例提供一种在图数据流中查找匹配子图的装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图8为本申请实施例在图数据流中查找匹配子图的装置的组成结构示意图,如图8所示,所述装置800包括第一确定单元801和查找单元802,其中:
第一确定单元801,配置为确定当前时刻的图数据流,所述图数据流中包括子图;
查找单元802,配置为根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
在其他实施例中,所述查找单元,包括:划分模块,配置为将所述图数据流划分为至少一个分区;每一所述分区中包括子图;第一确定模块,配置为将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;查找模块,配置为根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图。
在其他实施例中,所述划分模块,还配置为按照设定规则将所述图数据流划分为至少一个分区;所述设定规则为所述图数据流中的任一连通的子图只属于一个分区;所述查找模块,还配置为根据所述生成树集合,在每一连通的子图中,查找与所述各生成树匹配的子图。
在其他实施例中,所述装置还包括:获取单元,配置为获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;第二确定单元,配置为确定所述当前时刻的所述分区图中的至少一个待修改分区;修改单元,配置为根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区;所述查找模块,还配置为在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
在其他实施例中,所述划分模块,还配置为:确定所述图数据流中的不匹配顶点和不匹配边;其中,所述不匹配顶点不与所述查询图中的任一查询顶点相匹配;不匹配边不与所述查询图中的任一边相匹配;所述查询顶点为所述查询图中的任一顶点;将所述不匹配顶点和所述不匹配边从所述图数据流中删除,得到删除后的图数据流;将所述删除后的图数据流划分为至少一个分区。
在其他实施例中,所述划分模块,还配置为:确定所述删除后的图数据流中每一匹配顶点的相邻顶点;其中,所述相邻顶点为所述删除后的图数据流中,与所述匹配顶点的距离小于设定阈值的其他匹配顶点;所述匹配顶点为所述删除后的图数据流中的任一顶点;确定每一所述匹配顶点与对应的所述相邻顶点形成的边为相邻边;根据所述每一匹配顶点、每一所述相邻顶点和所述相邻边,确定待分区图;将所述待分区图中的每一连通的子图确定为一个分区。
在其他实施例中,所述划分模块,还配置为:将距离大于等于2的所述相邻边,确定为虚边;在所述分区图中将所述虚边删除;确定删除虚边后的分区图中包含的每一连通图;根据所述生成树集合,在所述每一连通图中查找与所述各生成树匹配的子图。
在其他实施例中,所述修改单元,包括:第二确定模块,配置为根据所述下一时刻的图数据流,确定所述图数据流中新增的新边;第三确定模块,配置为确定所述新边的两个新边顶点在所述查询图中均存在匹配的查询顶点;插入模块,配置为将所述新边插入到所述分区图中,得到至少一个修改分区。
在其他实施例中,所述插入模块,还配置为:当所述分区图中不包含所述新边的至少一个新边顶点时,将不包含的所述新边顶点和所述新边插入到所述分区图中,得到至少一个修改分区。
在其他实施例中,所述插入模块,还配置为:当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点在相同分区中;将所述新边插入到所述相同分区中;将所述相同分区确定为修改分区。
在其他实施例中,所述插入模块,还配置为:当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点包含于至少两个分区;将所述新边插入到所述分区图中;将所述至少两个分区合并为一个修改分区。
在其他实施例中,所述装置还包括:第三确定单元,配置为将所述分区图的每一分区中连通的子图确定为连通图;合并单元,配置为当所述两个顶点分别包含于不同的连通图时,将两个顶点所在的两个连通图合并为一个新连通图。
在其他实施例中,所述修改单元,还配置为:确定所述图数据流中减少的删除边;确定所述删除边的两个顶点和所述删除边均存在于所述删除虚边后的分区图中;将所述删除边从所述分区图中删除;将所述删除边所在的分区确定为所述修改分区。
在其他实施例中,所述将所述删除边从所述分区图中删除,包括:当所述删除边的顶点在所述分区图中没有与其他顶点形成边时,将所述顶点确定为孤立顶点;将所述删除边和所述孤立顶点从所述分区图中删除。
在其他实施例中,所述装置还包括:获取单元,配置为获取待匹配的查询图;第四确定单元,配置为根据所述查询图,确定所述生成树集合。
在其他实施例中,所述第四确定单元,还配置为:确定包含所述查询图的全部边的边集合;根据所述边集合中每一条边的设定编码,对所述每一条边进行排序;根据所述每一条边的排序,依次确定所述查询图的各生成树;将所述各生成树组成的集合,确定为所述查询图的生成树集合。
在其他实施例中,所述第四确定单元,还配置为:根据所述每一条边的排序,确定所述查询图的第一生成树;其中,所述第一生成树的边包括所述设定编码最小的将所述查询图的每一顶点连通的边;确定所述第一生成树中能够被替换的第一替换边;确定所述边集合中的其他边中能够替换所述第一替换边的第二替换边;其中,所述其他边包括设定编码不同于所述第一生成树的边的任一条边;所述第二替换边在所述其他边中编码最小;将所述第一生成树中的第一替换边修改为第二替换边,形成第二生成树,直到没有其他边可以替换所述第二生成树中的任一条边;将所述每一第二生成树和所述第一生成树,分别确定为所述查询图的生成树。
在其他实施例中,所述查找单元,还配置为:在每一所述连通的子图中,确定顶点匹配子图,其中,所述顶点匹配子图的每一顶点与所述生成树的顶点的标签相同;当所述顶点匹配子图的边与所述查询图的边的数量差满足设定阈值时,将所述顶点匹配子图确定为匹配的子图。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的在图数据流中查找匹配子图的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机设备,至少包括处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:所述处理器用于运行所述可执行指令时,所述可执行指令执行上述各实施例所提供的在图数据流中查找匹配子图的方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述各实施例所提供的在图数据流中查找匹配子图的方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图9为本申请实施例计算机设备的一种硬件实体示意图,如图9所示,该计算机设备900的硬件实体包括:处理器901、通信接口902和存储器903,其中
处理器901通常控制计算机设备900的总体操作。
通信接口902可以使计算机设备通过网络与其他终端或服务器通信。
存储器903配置为存储由处理器901可执行的指令和应用,还可以缓存待处理器901以及计算机设备900中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种在图数据流中查找匹配子图的方法,其特征在于,所述方法包括:
获取当前时刻的图数据流,所述图数据流中包括子图;
根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
2.根据权利要求1所述的方法,其特征在于,所述根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图,包括:
将所述图数据流划分为至少一个分区;每一所述分区中包括子图;
将划分后的图数据流确定为分区图;所述分区图包括图数据流的至少一个分区;
根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图。
3.根据权利要求2所述的方法,其特征在于,
所述将所述图数据流划分为至少一个分区,包括:按照设定规则将所述图数据流划分为至少一个分区;所述设定规则为所述图数据流中的任一连通的子图只属于一个分区;
所述根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图,包括:根据所述生成树集合,在每一连通的子图中,查找与所述各生成树匹配的子图。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取下一时刻的图数据流,确定所述下一时刻的图数据流与所述当前时刻的图数据流不同;
确定所述当前时刻的所述分区图中的至少一个待修改分区;
根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区;
所述根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图,还包括:在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图。
5.根据权利要求4所述的方法,其特征在于,所述将所述图数据流划分为至少一个分区,包括:
确定所述图数据流中的不匹配顶点和不匹配边;其中,所述不匹配顶点不与所述查询图中的任一查询顶点相匹配;不匹配边不与所述查询图中的任一边相匹配;所述查询顶点为所述查询图中的任一顶点;
将所述不匹配顶点和所述不匹配边从所述图数据流中删除,得到删除后的图数据流;
将所述删除后的图数据流划分为至少一个分区。
6.根据权利要求5所述的方法,其特征在于,所述将所述删除后的图数据流划分为至少一个分区,包括:
确定所述删除后的图数据流中每一匹配顶点的相邻顶点;其中,所述相邻顶点为所述删除后的图数据流中,与所述匹配顶点的距离小于设定阈值的其他匹配顶点;所述匹配顶点为所述删除后的图数据流中的任一顶点;
确定每一所述匹配顶点与对应的所述相邻顶点形成的边为相邻边;
根据所述每一匹配顶点、每一所述相邻顶点和所述相邻边,确定待分区图;
将所述待分区图中的每一连通的子图确定为一个分区。
7.根据权利要求6所述的方法,其特征在于,
所述确定每一所述匹配顶点与对应的所述相邻顶点形成的边为相邻边,包括:将距离大于等于2的所述相邻边,确定为虚边;
所述根据所述生成树集合,在所述分区图中,查找与所述各生成树匹配的子图,包括:在所述分区图中将所述虚边删除;确定删除虚边后的分区图中包含的每一连通图;根据所述生成树集合,在所述每一连通图中查找与所述各生成树匹配的子图。
8.根据权利要求4至7任一所述的方法,其特征在于,所述根据所述下一时刻的图数据流,对所述至少一个待修改分区进行修改,得到至少一个修改分区,包括:
根据所述下一时刻的图数据流,确定所述图数据流中新增的新边;
确定所述新边的两个新边顶点在所述查询图中均存在匹配的查询顶点;
将所述新边插入到所述分区图中,得到至少一个修改分区。
9.根据权利要求8所述的方法,其特征在于,所述将所述新边插入到所述分区图中,得到至少一个修改分区,包括:
当所述分区图中不包含所述新边的至少一个新边顶点时,将不包含的所述新边顶点和所述新边插入到所述分区图中,得到至少一个修改分区。
10.根据权利要求9所述的方法,其特征在于,所述将所述新边插入到所述分区图中,得到至少一个修改分区,还包括:
当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点在相同分区中;
将所述新边插入到所述相同分区中;
将所述相同分区确定为修改分区。
11.根据权利要求9所述的方法,其特征在于,所述将所述新边插入到所述分区图中,得到至少一个修改分区,还包括:
当所述分区图中包含所述新边的两个顶点时,确定所述新边的两个顶点包含于至少两个分区;
将所述新边插入到所述分区图中;
将所述至少两个分区合并为一个修改分区。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
将所述分区图的每一分区中连通的子图确定为连通图;
当所述两个顶点分别包含于不同的连通图时,将两个顶点所在的两个连通图合并为一个新连通图。
13.根据权利要求7所述的方法,其特征在于,所述对所述至少一个待修改分区进行修改,得到至少一个修改分区,包括:
确定所述图数据流中减少的删除边;
确定所述删除边的两个顶点和所述删除边均存在于所述删除虚边后的分区图中;
将所述删除边从所述分区图中删除;
将所述删除边所在的分区确定为所述修改分区。
14.根据权利要求13所述的方法,其特征在于,所述将所述删除边从所述分区图中删除,包括:
当所述删除边的顶点在所述分区图中没有与其他顶点形成边时,将所述顶点确定为孤立顶点;
将所述删除边和所述孤立顶点从所述分区图中删除。
15.根据权利要求1至11或13至14任一所述的方法,其特征在于,所述方法还包括:
获取待匹配的查询图;
根据所述查询图,确定所述生成树集合。
16.根据权利要求15所述的方法,其特征在于,所述根据所述查询图,确定所述生成树集合,包括:
确定包含所述查询图的全部边的边集合;
根据所述边集合中每一条边的设定编码,对所述每一条边进行排序;
根据所述每一条边的排序,依次确定所述查询图的各生成树;
将所述各生成树组成的集合,确定为所述查询图的生成树集合。
17.根据权利要求16所述的方法,其特征在于,所述根据所述每一条边的排序,依次确定所述查询图的各生成树,包括:
根据所述每一条边的排序,确定所述查询图的第一生成树;其中,所述第一生成树的边包括所述设定编码最小的将所述查询图的每一顶点连通的边;
确定所述第一生成树中能够被替换的第一替换边;
确定所述边集合中的其他边中能够替换所述第一替换边的第二替换边;其中,所述其他边包括设定编码不同于所述第一生成树的边的任一条边;所述第二替换边在所述其他边中编码最小;
将所述第一生成树中的第一替换边修改为第二替换边,形成第二生成树,直到没有其他边可以替换所述第二生成树中的任一条边;
将所述每一第二生成树和所述第一生成树,分别确定为所述查询图的生成树。
18.根据权利要求4所述的方法,其特征在于,所述在每一所述修改分区的每一连通的子图中,查找与所述各生成树匹配的子图,包括:
在每一所述连通的子图中,确定顶点匹配子图,其中,所述顶点匹配子图的每一顶点与所述生成树的顶点的标签相同;
当所述顶点匹配子图的边与所述查询图的边的数量差满足设定阈值时,将所述顶点匹配子图确定为匹配的子图。
19.一种在图数据流中查找匹配子图的装置,其特征在于,所述装置包括:
第一确定单元,配置为确定当前时刻的图数据流,所述图数据流中包括子图;
查找单元,配置为根据待匹配的查询图的生成树集合,在所述图数据流中,查找与所述生成树集合中的各生成树匹配的子图。
20.一种计算机设备,至少包括处理器和用于存储能够在所述处理器上运行的可执行指令的存储器,其中:
所述处理器用于运行所述可执行指令时,所述可执行指令执行上述权利要求1至18任一项所述的在图数据流中查找匹配子图的方法中的步骤。
21.一种计算机可读存储介质,其上存储有计算机程序,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至18任一项所述的在图数据流中查找匹配子图的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910740418.9A CN112395462A (zh) | 2019-08-12 | 2019-08-12 | 在图数据流中查找匹配子图方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910740418.9A CN112395462A (zh) | 2019-08-12 | 2019-08-12 | 在图数据流中查找匹配子图方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112395462A true CN112395462A (zh) | 2021-02-23 |
Family
ID=74602281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910740418.9A Pending CN112395462A (zh) | 2019-08-12 | 2019-08-12 | 在图数据流中查找匹配子图方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395462A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239198A (zh) * | 2021-12-06 | 2022-03-25 | 国网湖北省电力有限公司电力科学研究院 | 一种基于并行优化的电网子图划分方法及装置 |
CN116680451A (zh) * | 2023-06-07 | 2023-09-01 | 浙江邦盛科技股份有限公司 | 一种基于图相似度进行合并的方法、装置及存储介质 |
-
2019
- 2019-08-12 CN CN201910740418.9A patent/CN112395462A/zh active Pending
Non-Patent Citations (1)
Title |
---|
臧楠棋: "图数据流上增量子图相似性匹配技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239198A (zh) * | 2021-12-06 | 2022-03-25 | 国网湖北省电力有限公司电力科学研究院 | 一种基于并行优化的电网子图划分方法及装置 |
CN116680451A (zh) * | 2023-06-07 | 2023-09-01 | 浙江邦盛科技股份有限公司 | 一种基于图相似度进行合并的方法、装置及存储介质 |
CN116680451B (zh) * | 2023-06-07 | 2024-06-11 | 浙江邦盛科技股份有限公司 | 一种基于图相似度进行合并的方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289643B2 (en) | Automatic discovery of popular landmarks | |
CN102156751B (zh) | 一种提取视频指纹的方法及装置 | |
Freuder | Synthesizing constraint expressions | |
CN102693266B (zh) | 搜索数据库的方法、生成索引结构的导航设备和方法 | |
CN110059264B (zh) | 基于知识图谱的地点检索方法、设备及计算机存储介质 | |
CN108733803B (zh) | 一种道路网络下多用户空间关键词查询方法 | |
CN109033340B (zh) | 一种基于Spark平台的点云K邻域的搜索方法及装置 | |
JP2014096175A (ja) | 準複製画像検索のための方法およびシステム | |
CN114494650B (zh) | 一种分布式非结构网格跨处理器面对接方法及系统 | |
CN109992590B (zh) | 交通网络中带数字属性的近似空间关键字查询方法及系统 | |
CN112395462A (zh) | 在图数据流中查找匹配子图方法及装置、设备、存储介质 | |
CN112035586A (zh) | 基于可扩展学习索引的空间范围查询方法 | |
CN112508181A (zh) | 一种基于多通道机制的图池化方法 | |
CN110097581B (zh) | 基于点云配准icp算法构建k-d树的方法 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
CN103345509B (zh) | 获取路网上复反向最远邻居的层次分区树方法及系统 | |
CN1399223A (zh) | 房屋数字地图自动生成方法 | |
CN110413716B (zh) | 数据存储和数据查询方法、装置及电子设备 | |
KR20010026397A (ko) | 영상의 유사도 비교방법 및 그를 이용한 영상 검색 방법 및 장치 | |
JP2000035965A (ja) | 類似特徴量の検索方法及び装置及び類似特徴量の検索プログラムを格納した記憶媒体 | |
CN115393382A (zh) | 地图中体素查找方法、装置、计算机设备和存储介质 | |
CN111859192B (zh) | 搜索方法、装置、电子设备及存储介质 | |
CN113806642A (zh) | 一种社交网络快速最大团和极大团搜索方法 | |
JP2001134594A (ja) | 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体 | |
CN104881426B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210223 |
|
WD01 | Invention patent application deemed withdrawn after publication |