一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多子图匹配方法、装置及设备

2022-12-13 19:52:14 来源:中国专利 TAG:


1.本技术涉及图计算技术领域,尤其涉及一种多子图匹配方法、装置及设备。


背景技术:

2.图数据能够用来表示现实世界的事物之间的关系,比如社交网络、交通网络以及生物网络等等。利用图数据能够实现对事物关系的深入研究。比如在社交网络中,可以借助图数据根据一名已知罪犯的社交网络图寻找社交网络图存在重叠的、其他可能的嫌疑犯;在生物学中,可以借助图数据寻找捕食者、被捕食者的关系。
3.子图查询是指从数据图中找到与查询图匹配(也即与查询图相同的)数据图的子图。目前,对于单子图查询,方式较为成熟。在接收到单个查询图后,先从数据图中查找该查询图上的节点,过滤掉数据图中无关的节点。之后,采取广度优先搜索(breadth first search,bfs)策略,从查询图中选择一个顶点作为根节点,然后逐层遍历查询图中的剩余节点,确定查询图的节点匹配顺序。之后,按照节点匹配顺序与过滤掉无关节点的数据图进行匹配,从数据图中确定与该查询图匹配的子图。
4.而在实际应用中,在进行子图查询时,经常需要会接收到多个查询图,如果对每一个查询图都按照上述方式进行单子图查询,子图查询速度会减慢,效率较低。


技术实现要素:

5.本技术提供一种多子图匹配方法、装置及设备,用以提升针对多个查询图的子图匹配效率。
6.第一方面,本技术实施例提供了一种多子图匹配方法,该方法可以由多子图匹配装置执行,也可以由多子图匹配系统中的装置配合执行,这里以多子图匹配装置执行该方法为例进行说明。由多子图匹配系统中的装置配合执行该方法与多子图匹配装置执行该方法的方式类似,区别在于多子图匹配系统中的装置配合执行该方法时,其中一个装置用于完成其中部分方法,装置之间可以存在数据交互。在本技术实施例中多子图匹配是指针对多个查询图的子图匹配。
7.在该方法中,该多子图匹配装置可以先接收多个查询图,该多个查询图中的每个查询图用于表征多个节点以及节点之间的连接关系。该多子图匹配装置在接收到多个查询图之后,可以对该多个查询图进行分组。例如,多子图匹配装置可以根据每个查询图的哈希值对多个查询图进行分组,生成多组查询图,其中,哈希值处于同一取值范围的多个查询图属于同一组。之后,该多子图匹配装置能够分别将多组查询图与数据图并行进行匹配以获得匹配结果。该匹配结果为多个查询图与数据图的匹配结果。
8.通过上述方法,通过对该多个查询图进行分组,获得多组查询图,之后,采用并行的方式对该多组查询图与数据图进行子图匹配,能够有效的提升子图匹配的效率。而通过哈希值对该多个查询图进行的分组,能够加快分组效率,从整体上保证子图匹配的高效性。
9.在一种可能的实施方式中,多子图匹配装置在该多个查询图进行分组时,还可以
考虑查询图的负载均衡,使得该多组查询图中的每组查询图的查询代价处于同一范围内,其中,查询代价用于指示对属于同一组的多个查询图进行匹配时所消耗的工作量。
10.通过上述方法,该多组查询图中的每组查询图的查询代价处于同一范围,使得在对该多组查询图与数据图并行进行匹配时,对每一组查询图与数据图进行匹配时所消耗的工作量大致相同或接近,能够尽可能同时或者同一时间范围内获取每组查询图与查询图的匹配结果,以达到负载均衡的效果。
11.在一种可能的实施方式中,多子图匹配装置分别将多组查询图与数据图并行进行匹配以获得匹配结果时,还可以划分数据图,生成多个数据子图;之后,再并行执行多个匹配任务,每个匹配任务用于将多个数据子图中的一个数据子图与多组查询图中的一组查询图进行匹配。
12.通过上述方法,数据子图的划分,能够进一步减少对一组查询和数据图进行匹配过程中可能存在的无效的匹配操作,以保证多子图匹配的高效性。
13.在一种可能的实施方式中,对于一个匹配任务中涉及的数据子图,该数据子图包括该匹配任务涉及的一组查询图中所有查询图的节点。也就是说,多个匹配任务包括第一匹配任务,第一匹配任务用于将第一数据子图与多组查询图中的第一组查询图进行匹配,其中,第一数据子图包括第一组查询图中的所有查询图的节点。
14.通过上述方法,一个匹配任务中的该数据子图包括该匹配任务涉及的一组查询图中所有查询图的节点,能够提高数据子图与该组查询图的匹配的成功率,以提高能够从该数据子图中获取与该组查询图中的查询图匹配的子图的可能性,保证多子图匹配的准确率。
15.在一种可能的实施方式中,以执行第一匹配任务为例,对执行匹配任务的方式进行说明,在执行第一匹配任务时,可以从第一数据子图中确定第一组查询图的每个查询图的任务子图,查询图的任务子图中包括查询图的所有节点;在本技术实施例中,多个查询图可以对应一个任务子图,那么,该任务子图则包括所对应的多个查询图的所有节点。一个查询图也可以只对应一个任务子图,那么该任务子图则包括所对应的一个查询图的所有结果。在确定了各个查询图的任务子图之后,多子图匹配装置可以对每个查询图的任务子图与公共子图进行匹配,公共子图为第一组查询图中各个查询图包括的公共部分;对于任一查询图,在该查询图的任务子图与公共子图匹配成功的情况下,多子图匹配装置可以对查询图的任务子图与查询图中除公共子图外的部分进行匹配,获得查询图的任务子图与查询图的匹配结果。
16.通过上述方法,先对查询图的任务子图以及该组查询图的公共子图进行匹配,在匹配成功之后,再对该查询图的剩余部分进行匹配。也就是说,在查询图的任务子图以及该组查询图的公共子图匹配失败之后,就不需要执行后续动作,能够提升效率。另外,对于多个查询图对应同一个任务子图的情况,该任务子图只需与该组查询图的公共子图匹配一次,不需要针对该多个查询图的每个查询图,都执行一次与该组查询图的公共子图匹配的操作,可以减少多余的匹配操作,提升匹配效率。
17.在一种可能的实施方式中,当查询图的任务子图与公共子图匹配不成功,多子图匹配装置可以直接确定匹配结果为失败,也就是说,在第一数据子图中不存在与查询图匹配的子图,进一步的,在该数据图中也不存在与查询图匹配的子图。
18.通过上述方法,查询图的任务子图与公共子图匹配不成功的情况下,直接获得匹配结果,效率较高。
19.在一种可能的实施方式中,每个查询图的哈希值是根据lsh获取的。
20.通过上述方法,lsh函数速度快、复杂度低,在采用lsh函数在对查询图进行分组时,可以加快分组速度,进一步,提高子图匹配效率。
21.第二方面,本技术实施例还提供了一种多子图匹配装置,该多子图匹配装置具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,装置的结构中包括接收模块、分组模块、匹配模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
22.第三方面,本技术实施例还提供了一种多子图匹配系统,该多子图匹配系统中包括控制装置以及多个匹配装置,该控制装置以及该多个匹配装置能够配合实现上述第一方面的方法实例中多子图匹配装置所执行的方法,有益效果可以参见第一方面的描述此处不再赘述。
23.控制装置,用于接收多个查询图,多个查询图中的每个查询图用于表征多个节点以及节点之间的连接关系;根据每个查询图的哈希值对多个查询图进行分组,生成多组查询图,其中,哈希值处于同一取值范围的多个查询图属于同一组;
24.多个匹配装置,用于分别将多组查询图与数据图并行进行匹配以获得匹配结果,其中,一个匹配装置用将多组查询图中的一组查询图与数据图并行进行匹配以获得匹配结果。
25.在一种可能的实施方式中,多组查询图中的每组查询图的查询代价处于同一范围内,其中,查询代价用于指示对属于同一组的多个查询图进行匹配时所消耗的工作量。
26.在一种可能的实施方式中,控制装置还可以划分数据图,生成多个数据子图;每个匹配装置可以获取一个数据子图。多个匹配装置可以并行执行多个匹配任务,一个匹配装置执行一个匹配任务。每个匹配任务用于将多个数据子图中的一个数据子图与多组查询图中的一组查询图进行匹配,一个匹配装置用于执行一个匹配任务。
27.在一种可能的实施方式中,多个匹配任务包括第一匹配任务,第一匹配任务用于将第一数据子图与多组查询图中的第一组查询图进行匹配,其中,第一数据子图包括第一组查询图中的所有查询图的节点。
28.在一种可能的实施方式中,匹配装置执行第一匹配任务时,可以从第一数据子图中确定第一组查询图的每个查询图的任务子图,查询图的任务子图中包括查询图的所有节点。
29.对每个查询图的任务子图与公共子图进行匹配,公共子图为第一组查询图中各个查询图包括的公共部分。
30.对于任一查询图的任务子图与公共子图匹配成功的情况下,对查询图的任务子图与查询图中除公共子图外的部分进行匹配,获得查询图的任务子图与查询图的匹配结果。
31.在一种可能的实施方式中,匹配装置还可以在确定查询图的任务子图与公共子图匹配不成功的情况下,确定在第一数据子图中不存在与查询图匹配的子图,也就是获取查
询图的任务子图与查询图的匹配结果。
32.在一种可能的实施方式中,每个查询图的哈希值是根据lsh获取的。
33.第四方面,本技术还提供了一种计算设备,所述计算设备包括处理器和存储器,还可以包括通信接口,所述处理器执行所述存储器中的程序指令执行上述第一方面或第一方面任一可能的实现方式提供的方法。所述存储器与所述处理器耦合,其保存多子图匹配的过程中必要的程序指令和数据。所述通信接口,用于与其他设备进行通信,如获取多个查询图、发送匹配结果等。
34.第五方面,本技术提供了一种计算设备系统,该计算设备系统包括至少一个计算设备。每个计算设备包括存储器和处理器。至少一个计算设备的处理器用于访问所述存储器中的代码以执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
35.第六方面,本技术提供了一种非瞬态的可读存储介质,所述非瞬态的可读存储介质被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该存储介质中存储了程序。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,hdd)、固态硬盘(solid state drive,ssd)。
36.第七方面,本技术提供了一种计算设备程序产品,所述计算设备程序产品包括计算机指令,在被计算设备执行时,所述计算设备执行前述第一方面或第一方面的任意可能的实现方式中提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面的任意可能的实现方式中提供的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
附图说明
37.图1为本技术提供的一种系统的架构示意图;
38.图2为本技术提供的一种控制装置和匹配装置配合执行多子图匹配的流程图;
39.图3为本技术提供的一种多子图匹配的方法示意图;
40.图4为本技术提供的一种数据图划分示意图;
41.图5为本技术提供的一种多查询图分组示意图;
42.图6为本技术提供的一种查询图匹配计划示意图;
43.图7为本技术提供的一种公共候选节点确定的示意图;
44.图8为本技术提供的一种任务子图中标注示意图;
45.图9为本技术提供的一种多子图匹配装置的结构示意图;
46.图10为本技术提供的一种控制装置的结构示意图;
47.图11为本技术提供的一种匹配装置的结构示意图;
48.图12~图13为本技术提供的一种计算设备的结构示意图。
具体实施方式
49.在对本技术实施例提供的多子图匹配方法进行说明之前,先对本技术实施例涉及的相关概念进行解释:
50.(1)、图、节点
51.图是由节点以及边构成的数据结构。图可以用来表示不同领域中的对象以及对象之间的关系。以社交网络为例,图中的节点可以表示社交网络中的人,图中的边可以表示社交网络中的人与人之间的关系。
52.为了区分图中的节点,可以为节点配置标识,该标识可以唯一的表征图中的节点。而根据节点所表征的对象的属性,可以为节点配置标签。仍以表征社交网络的图为例,图中节点的标签可以为该节点所表示的人的职位、工作单位或年龄等信息。在图中节点的标识时唯一的,节点的标签是可以重复的。
53.当图中的两个节点之间存在边,说明该两个节点存在连接关系,这两个节点互为邻居节点。不同领域中,边表征的意义也不同。如在表征社交网络的图中,边表示两个节点所表示的人之间存在联系。如在表征交通网络的图中,边表示两个节点所表示的路口之间存在道路。
54.(2)、查询图、数据图
55.所谓子图匹配是为图a寻找图b中的与图a相同的子图。为了区分图a和图b,图a称为查询图,图b称为数据图。
56.(3)、和/或
57.和/或包括三种关系。以a和/或b为例,a和/或b包括a、b、a和b。
58.如图1所示,为本技术实施例提供的一种系统架构示意图,该系统中包括匹配系统100和客户端200。
59.客户端200部署在用户侧,用户可以向客户端200传输多个查询图,并触发客户端200向匹配系统100,发起子图匹配请求,用于请求匹配装置100对该多个查询图进行匹配。
60.本技术实施例并不限定客户端200的具体形态,该客户端200可以是部署在用户侧的计算设备,也可以是安装在用户的计算设备上的应用程序。
61.匹配系统100能够接收来自客户端200的子图匹配请求,执行本技术实施例提供的子图匹配方法,在获取该多个查询图的匹配结果后,匹配系统100还可以向客户端200反馈该多个查询图的匹配结果。
62.具体到该匹配系统100内部,该匹配系统100包括控制装置110、和多个匹配装置120。本技术实施例并不限定控制装置110和匹配装置120的部署位置,例如,控制装置110或匹配装置120可以部署在边缘数据中心,也可以部署在云数据中心中,也可以部署在终端计算设备上。当控制装置110和任一匹配装置120部署在不同的位置时,该匹配系统100可以为一个分布式部署的系统。当控制装置110和多个匹配装置120部署在相同位置时,该匹配系统100可以为一个集中式部署的系统。
63.如图2所示,在本技术实施例中,控制装置110能够对多个查询图进行划分,分为多组查询图,可以将该多组查询图发送给各个匹配装置120。控制装置110还可以获取数据图(如从文件存储系统获取数据)对该数据图进行划分,划分为多个数据子图,并将该多个数据子图分组发送给匹配装置120,一个匹配装置120获取多个数据子图中的部分或全部。每个匹配装置120可以执行一组查询图的子图匹配操作。也即是说每个匹配装置120可以基于所获取的数据子图,对该组查询图进行子图匹配,得到该组查询图的匹配结果,并反馈给该控制装置110。
64.在本技术实施例中并不限定控制装置110和匹配装置120的具体形态,以控制装置
110为例,该控制装置110可以是一个实体装置,如可以为一个计算设备,或该计算设备中的组件。该控制装置110也可以是一个软件装置,如可以为计算设备上部署的虚拟机、容器等应用程序。匹配装置120也类似。
65.需要说明的是,图1仅示例性的展示了本技术实施例所适用的系统架构。在一些可能的场景中,本技术实施例所提供的子图匹配方法也可以由一个计算设备(如多子图匹配装置)执行,该计算设备执行子图匹配方法的过程与匹配系统100执行子图匹配方法的过程类似,控制装置以及匹配装置所执行的操作可以由该计算设备中的线程执行。该计算设备中可以包括多个线程,一个线程可以执行控制装置执行的操作或方法,剩余线程可以执行该多个匹配装置执行的操作或方法。
66.下面以如图1所示的架构为例,对本技术实施例提供的子图匹配方法进行说明,参见图3,该方法包括:
67.步骤301:控制装置110获取数据图,将该数据图划分为多个数据子图。
68.本技术实施例并不限定控制装置110获取数据图的方式。例如,该数据图可以是用户通过客户端200发送给控制装置110的,控制装置110可以从客户端200接收该数据图。控制装置110接收到该数据图后,控制装置110可以直接执行步骤301,也可以在后续接收到多个查询图时,再执行步骤301。
69.又例如,该数据图可以是预先配置在控制装置110的。当控制装置110确定需要进行数据图划分或确定需要进行子图匹配(如控制装置110接收到用户通过客户端触发的指令,如指示划分数据子图的指令,或指示对多个查询图进行子图匹配的指令),控制装置110执行步骤301。
70.又例如,该数据图可以存储在文件存储系统中。控制装置110当确定需要进行子图匹配或数据图划分时,可以从文件存储系统获取该数据图,在获取该数据图后,对该数据图进行划分。
71.控制装置110对数据图的划分方式有许多种。例如,控制装置110可以将数据图分为大小相同的多个数据子图。又例如,控制装置110可以按照数据图中节点、以及节点之间的连接关系,将结构相似程度较高(如高于阈值)的部分聚合在一起,作为一个数据子图,如此可以形成多个数据子图,每个数据子图中节点、以及节点之间的连接关系相似。
72.又例如,控制装置110也可以利用哈希算法对该数据图进行划分。控制装置110可以遍历该数据图的节点,每遍历一个节点(如获取该节点的标识、以及标签),将该节点输入至该哈希算法(如将节点的标识或节点的标签输入至该哈希算法),哈希算法的输出值用于标识该节点的分区,属于同一分区的接点构成一个数据子图。当存在多个分区时,该数据图会形成多个数据子图。
73.如图4所示,为本技术实施例提供的一种数据图划分方法。图4中示例性的展示了数据图中的7个节点,分别为v1、v2、v3、v4、v5、v6、v7。控制装置110利用哈希算法将v1、v2、v3、v4划分到两个分区,其中,v1、v3在分区a,v2、v4在另一个分区b。控制装置110利用哈希算法将v5、v6、v7划分到两个分区,其中,v5、v7在一个分区a,v6在另一个分区b。属于分区a的v1、v3、v5、v7构成的一个数据子图。属于分区b的v2、v4、v6构成的一个数据子图。
74.步骤302:控制装置110将多个数据子图分别发送给各个匹配装置120,每个匹配装置120获取一个数据子图。
75.控制装置110在将该数据图划分为多个数据子图后,控制装置110可以向每个匹配装置120发送一个数据子图。
76.例如,控制装置110可以将该数据子图的信息发送给该匹配装置120。该数据子图的信息可以包括节点的标识、节点的标签、集合(该节点的邻居节点集合中可以记录该节点的邻居节点的标识和标签)。
77.又例如,控制装置110可以将该数据子图的存储地址(如该数据子图在控制装置110或文件存储系统中的存储地址)发送给该匹配装置120。匹配装置120在获取该数据子图的存储地址之后,可以基于该数据子图的存储地址获取该数据子图。
78.需要说明的是,在实际应用(如数据图的尺寸较小时)中,控制装置110也可以不执行步骤301~步骤302。控制装置110可以在获取该数据图后,直接将该数据图发送给各个匹配装置120。当然,在另一种可能的场景中,控制装置110也可以不获取数据图,而是由匹配装置120自行获取该数据图。
79.步骤303:控制装置110获取多个查询图,对该多个查询图进行分组,生成多组查询图。
80.用户可以通过客户端200向控制装置110发送该多个查询图,例如,用户可以通过客户端200向控制装置110发送子图匹配请求,该子图匹配请求携带多个查询图,用于请求对该多个查询图进行子图匹配。
81.控制装置110在获取该多个查询图后,可以对该多个查询图进行分组。在步骤303中对该多个查询图进行分组的目的是将结构相似度高的查询图划分为一组中。结构相似度高也可以理解为查询图存在相同的公共子图。
82.为了能够加快查询图分组效率,控制装置110可以采用局部性敏感哈希(locality sensitive hashing,lsh)函数对该多个查询图进行分组。
83.以lsh为min-hash函数为例,对于该多个查询图中的任一查询图,控制装置110可以对该查询图的节点集合(该节点集合记录了各个节点的标签、标识)作用min-hash函数,该min-hash函数的输出值为该查询图所属组的编号。控制装置110分别对各个查询图的节点集合作用min-hash函数,可以确定各个查询图所属组的编号。
84.由于lsh函数本身具备速度快、复杂度低的优点,在采用lsh函数在对查询图进行分组时,可以能够大大加快分组速度,进一步,提高子图匹配效率。
85.如图5所示为本技术实施例提供的一种多查询图分组示意图。图5中仅示例性的绘制了三个查询图,分别为查询图q1、查询图q2以及查询图q3。查询图q1和查询图q2位于第1组,查询图q3位于第4组。
86.利用lsh算法对多个查询图进行分组时,可能存在每组中查询图中数量不等的情况,也就是说,一组查询图中的查询图数量较多,另一组查询图中的查询图数量较少。当某一组中查询图的数量较大,如查询图的数量已经超过了设定值,控制装置110还可以对该组查询图进行进一步划分,也即将该组查询图再细分为多组查询图。这里并不限定一组查询图进一步划分的方式,可以采用对多个查询图分组的方式对该组查询图进一步划分,也可以采用其他方式对该组查询图进行进一步划分。
87.举例来说,控制装置110可以计算每个查询图的查询代价,一个查询图的查询代价可以表征在对该查询图进行子图匹配时所消耗的工作量。本技术实施例并不限定该工作量
的度量方式,例如可以通过查询图的边或节点的数量度量,或对该查询进行子图所消耗的时间等。
88.控制装置110在对该组查询图进行进一步划分时,可以参考该组查询图中各个查询图的查询代价,基于负载均衡策略将该组查询图划分为多组。该组查询图划分后的每组中查询图的查询代价总和相等或任意两组中查询图的查询代价总和相差较小(如小于阈值),也即每组中查询图的查询代价总和处于相同范围。在对某一个或某多个查询组进行进一步划分后,最终可以获得多组查询图(该多组查询图包括胃进行进一步划分的一组或多组查询图),最终获得的多组查询图的每组查询组的查询代价处于同一范围,这样,能够保证后续匹配装置120对任意组中的查询图进行子图匹配时,所消耗的工作量大致相同。
89.本技术实施例也不限定查询图的查询代价的计算方式,这里列举其中一种查询图的查询代价的计算方式。
90.首先,控制装置110将数据图中每个边转换为一张两列的表(该表为数据库表),其中,一条边对应该表中的一行,每行中包括两个元素,该两个元素分别表示该边所连接的两个节点。将查询图分解为数据库的多路连接操作,该查询图的查询代价可以用数据库的多路连接代价近似表示。
91.其中,基于数据库中的连接代价的计算公式如下:
[0092][0093]
其中,t(r)是关系r的元组数,v(r,y)是关系r中属性y上所具有的不同值的数目。
[0094]
在对该多个查询图进行了划分之后,控制装置110可以执行步骤304。
[0095]
步骤304:控制装置110将该分组结果发送给各个匹配装置120,每个匹配装置120获取该多组查询图。其中,分组结果包括该多个查询图,以及每个查询图所属的组。
[0096]
对于任一匹配装置120,在接收到该多组查询图后,可以执行步骤305~步骤307。该多个匹配装置120可以并行运行,也即该多个匹配装置120可以同时执行步骤305~307。多个匹配装置120并行运行的方式,能够进一步加快子图匹配的过程,保证能够较快获得子图匹配的结果。这里以其中一个匹配装置120为例,对匹配装置120的执行步骤305~步骤307进行说明。
[0097]
步骤305:匹配装置120接收到该多组查询图后,选择该多组查询图中的一组或多组。
[0098]
当匹配装置120在接收到该多组查询图后,可以从中选择一组查询图或多组查询图进行子图匹配。由于每个匹配装置120中已获取了一个数据子图,匹配装置120在选择一组或多组查询图时,可以基于已获取的数据子图选择一组或多组查询图。
[0099]
例如,匹配装置120所获取的数据子图中的节点包括所选择的一组或多组查询图中任一查询图的节点。具体来说,匹配装置120可以确定该多组查询图中每组查询图的节点集合,每组查询图的节点集合为该组查询图中各个查询图的节点集合的并集(该组查询图中各个查询图中重复的节点在该组查询图的集合中可以只出现一次)。在确定数据图的节点集合包含该组查询图的节点集合的情况下,选择该组查询图,否则不选择该组查询图。采用这种方式,匹配装置120所选择的一组或多组查询图与已获取的数据子图存在较多相同的节点,所选择的一组或多组查询图与已获取的数据子图的相似程度高,能够进一步保证后续子图匹配的成功率。
[0100]
匹配装置120在选择了一组或多组查询图后,可以执行步骤306。当然,在一些场景(如每组查询图中包括的节点数量较大的场景)中,匹配装置120接收到该多组查询图,匹配装置120也可以不执行步骤305,而是对每一组查询图和已获取的数据子图进行匹配,匹配装置120内部可以创建多个线程,每个线程对一组查询图和已获取的数据子图进行匹配。
[0101]
步骤306:该多个匹配装置120可以并行执行多个匹配任务,每个匹配装置120执行一个匹配任务,每个匹配装置所执行的匹配任务为基于所获取的数据子图,对所选择的一组或多组查询图进行子图匹配。
[0102]
在步骤306中,每个匹配装置120基于所获取的数据子图,对所选择的任一组查询图进行子图匹配的方式相同,这里以一个匹配装置120基于所获取的数据子图,对一组查询图进行子图匹配为例进行说明。
[0103]
步骤1、对于该组查询图中任一查询图,匹配装置120可以先配置该查询图的节点匹配计划,查询图的节点匹配计划指示了查询图中节点的匹配顺序。首先,匹配装置120从该查询图中选择标签出现次数少、度数大(度数是指该节点的邻居节点的数量)的一个节点作为根(root)节点。然后从根节点出发,对该查询图进行广度优先搜索(breadth first search,bfs)遍历,从而获得查询图的层序,其中,查询图的层序将该查询图的节点分层。之后,匹配装置120按照查询图的层序对该查询图中的节点进行排序,生成该查询图的节点匹配计划。
[0104]
如图6所示,展示了两个查询图,分别为查询图q1以及查询q2。在查询图q1中选择u
13
作为根节点,在查询图q2选择u
23
作为根节点。
[0105]
在对该查询图q1和查询图q2分别进行bfs遍历后,可以获得查询图q1和查询图q2的层序。其中,查询图q1的根节点u
13
位于第1层,其余节点位于第2层。查询图q2的根节点u
23
位于第1层,其余节点位于第2层。
[0106]
匹配装置120按照查询图q1的层序对该查询图中的节点进行排序,可以获得查询图q1的节点匹配计划{u
13
、u
11
、u
12
、u
14
、u
15
}。匹配装置120按照查询图q2的层序对该查询图中的节点进行排序,可以获得查询图q2的节点匹配计划{u
23
、u
21
、u
22
、u
24
}。
[0107]
步骤2、匹配装置120在配置了各个查询图的节点匹配计划后,匹配装置120可以根据每个查询图的节点匹配计划从数据子图中获取每个查询图的任务子图。
[0108]
对于任一查询图,匹配装置120可以先根据该查询图的根节点从数据子图中获取种子节点。其中,对于该根节点的任一邻居节点,种子节点至少存在一个邻居节点的标签与该根节点的邻居节点的标签相同。也就是说,对于根节点的、标签为p的邻居节点,种子节点至少存在一个邻居节点的标签也为p。该种子节点可以作为任务子图中的第1个节点。
[0109]
之后,匹配装置120可以按照节点匹配计划中的节点顺序,遍历查询图中的节点,每遍历查询图中的一个节点,从数据图中确定与该查询图的节点相同的节点,添加到该查询图的任务子图中。当该查询图中的节点均遍历完成,可以生成完整的任务子图。数据图中与查询图的节点相同的节点满足下列的部分或全部:该数据图的节点与查询图中的节点的标签相同、数据图中该节点连接关系与查询图中节点的连接关系相同(如该节点的邻居节点的标签与查询图中对应的节点的邻居节点的标签相同)。
[0110]
而对于该组查询图中的多个查询图(该多个查询图可以为该组查询图中的全部查询图或部分查询图),可能存在从数据子图中获取的种子节点相同的情况,对于这种情况,
可以为该多个查询图生成一个任务子图,任务子图的生成方式可以参见前述说明,该任务子图可以包括该多个查询图中的节点,该任务子图即为该多个查询图对应的任务子图。
[0111]
需要说明的是,针对任一查询图,匹配装置120在从数据子图中可能会获取多个种子节点。对于每个种子节点,匹配装置120按照节点匹配计划中的节点顺序,遍历查询图中的节点,从数据图中确定与查询图的节点相同的节点,添加到该查询图的任务子图。也即一个种子节点可以生成一个任务子图。为了能够进一步减少任务子图的数量,降低后续子图匹配的工作量,匹配装置120在从数据子图中获取多个种子节点后,匹配装置120可以进一步确定每个种子节点的邻居节点集合。若该多个种子节点中存在邻居节点集合重合的种子节点,邻居节点集合重合的种子节点可以综合考虑,如邻居节点集合重合的种子节点可以加入到同一个任务子图中。邻居节点集合完全不同的种子节点可以分别考虑,如邻居节点集合不同的种子节点分别加入到不同的任务子图中。
[0112]
步骤3、匹配装置120获取每个查询图的任务子图后,对于任一查询图,匹配装置120可以先对该查询图的任务子图与该组查询图的公共子图进行匹配。其中,该组查询图的公共子图为该组查询图中所有查询图的公共部分。
[0113]
匹配装置120匹配该查询图的任务子图与该组查询图的公共子图的方式与单子图查询的方式类似,也即确定任务子图中是否包括该公共子图的节点,确定任务子图中节点之间的连接关系是否与该公共子图中相同节点的连接关系相同。
[0114]
若该查询图的任务子图与该组查询图的公共子图匹配失败,说明任务子图无法与公共子图匹配,进一步地,该任务子图与查询图也就无法匹配,该查询图的匹配结果即为不成功,数据图中不存在与该查询图匹配的子图。若该查询图的任务子图与该组查询图的公共子图匹配成功,则说明该任务子图可能与查询图匹配,匹配装置120可以继续执行步骤4。
[0115]
步骤4、匹配装置120对该查询图的任务子图与该查询图除公共子图外的部分进行匹配。
[0116]
匹配装置120在对该查询图的任务子图与该查询图除公共子图外的部分进行匹配时,可以采用单子图匹配的方式进行匹配。
[0117]
若该组查询图中任务子图与公共子图匹配成功的查询图的数量为多个,如该任务子图为该多个查询图共同对应的任务子图,匹配装置120可以综合考虑任务子图与公共子图匹配成功的多个查询图。匹配装置120也可以继续对该多个查询图除公共子图外的部分进行预处理,查找该多个查询图的公共候选节点。在确定了公共候选节点之后,可以先对该公共候选节点与该多个查询图的任务子图进行匹配。在匹配成功后,对于任一查询图除公共子图以及公共候选节点之前的剩余部分,匹配装置120可以对该查询图的任务子图与该查询图的剩余部分进行匹配(匹配方式可以采用单子图匹配的方式)。
[0118]
具体的,匹配装置120可以根据该多个查询图的节点匹配计划确定公共候选节点,该公共候选节点是指多个查询图的节点匹配计划中相同节点。若存在多个公共候选节点,该多个公共候选节点为该多个查询图的节点匹配计划中排序相同的节点。
[0119]
如图7所示为公共候选节点确定的示意图,图7中展示了两个查询图,分别为查询图q4和查询图q5,图7中标注了查询图q4和查询图q5中各个节点的标签。对于查询图q4,查询图q4的节点匹配计划为{a、b、c、d、e、f},对于查询图q5,查询图q5的节点匹配计划为{a、b、c、d、e、g}。节点匹配计划{a、b、c、d、e、f}和节点匹配计划{a、b、c、d、e、g}中存在相同的部
分,也即{a、b、c、d、e},标签为a、b、c、d、e的节点即为该查询图q4和查询图q5的公共候选节点,这些公共候选节点是查询图q4和查询图q5中均包括的节点,且这些公共候选节点的排序方式在查询q4和查询图q5的节点匹配计划相同。
[0120]
在确定了公共候选节点之后,匹配装置120确定公共候选节点在该多个查询图的任务子图可匹配的节点。其中,可匹配的节点是指该节点与公共候选节点的标签相同、该节点在任务子图中的连接关系(该节点在任务子图中的连接关系可以理解为该节点的邻居节点)与该公共候选节点在查询图中的连接关系相同。该节点在任务子图中的连接关系与该公共候选节点在查询图中的连接关系相同是指与该公共候选节点在查询图中的任一邻居节点,该节点在任务子图中至少存在一个标签相同的邻居节点。
[0121]
由于该公共候选节点为该多个查询图均包括的节点,对于任一公共候选节点,匹配装置120在该多个查询图的任务子图中确定的可匹配的节点可能与所有查询图中的该公共候选节点匹配,也可能只与其中部分查询图中的该公共候选节点匹配。为此,匹配装置120可以为该多个查询图的任务子图中确定的可匹配的节点进行标注,标注所能满足的查询图,或标注满足某一个或多个查询图的约束。
[0122]
以图7所示的查询图q4和查询图q5为例进行说明,标签为a、b、c、d、e的节点即为该查询图q4和查询图q5的公共候选节点,其中,标签为a、b、c的节点为查询图q4和查询图q5的公共子图中的节点,在查询图q4和查询图q5的任务子图中可以找到与标签为a、b、c的节点匹配的点。而标签为d、e的节点不是查询图q4和查询图q5的公共子图中的节点。需要进一步确定标签为d、e的节点在查询图q4和查询图q5的任务子图中是否满足查询图q4和/或查询图q5的约束。
[0123]
对于标签为d的节点,匹配装置120可以在查询图q4的任务子图中确定是否存在可匹配的节点,是否存在标签相同以及连接关系相同(也即确定查询图q4的任务子图中标签为d的节点的邻居节点中是否存在标签为c的节点)的节点,若存在,将该节点标注为满足查询图q4的约束。类似的,匹配装置也可以在查询图q5的任务子图中确定是否存在可匹配的节点,若存在,将该节点标注为满足查询图q5的约束。
[0124]
对于标签为e的节点,匹配装置120可以在查询图q4的任务子图中确定是否存在可匹配的节点,是否存在标签相同以及连接关系相同(也即确定查询图q4的任务子图中标签为d的节点的邻居节点中是否存在标签为c的节点)的节点,若存在,将该节点标注为满足查询图q4的约束。类似的,匹配节点也可以在查询图q5的任务子图中确定是否存在可匹配的节点,若存在,将该节点标注为满足查询图q5的约束。
[0125]
匹配装置120确定公共候选节点在该多个查询图的任务子图可匹配的节点之后,匹配装置可以对该多个查询图进行回溯搜索匹配。
[0126]
具体的,匹配装置120可以先将公共子图中的节点加入到匹配队列中,之后,遍历各个公共候选节点,寻找同时满足多个查询图的约束的公共候选节点,将满足该公共候选节点加入到匹配队列中。在对公共候选节点遍历完成后,对各个查询图中除匹配队列外的剩余部分进行单子图匹配。
[0127]
如图8,以查询图为查询图q4和查询图q5,在任务子图中g(任务子图g为查询图q4和查询图q5所共同对应的任务子图)中对各个公共候选节点可匹配的节点进行了标注,如对于任务子图g中对节点v4标注为满足查询图q4和查询图q5的约束,节点v6标注为满足查询
图q4的约束,节点v5标注为满足查询图q4和查询图q5的约束。在对查询图q4和查询图q5进行回溯搜索匹配时,首先,将公共子图在任务子图g中匹配的节点{v1,v2,v3}放入匹配队列中,检查任务子图中同时满足查询图q4和查询图q5的节点v4,针对节点v4分别与查询图q4和查询图q5进行匹配。若均匹配成功,将节点v4加入到匹配队列中,匹配队列变为{v1,v2,v3,v4}。类似的,继续检查v5,若均匹配成功,将节点v5加入到匹配队列中,匹配队列变为{v1,v2,v3,v
4,
v5}。当已经没有同时满足图q4和查询图q5的约束的节点后。对于查询图q4的匹配,之后的匹配过程退化为针对查询图q4的剩余部分(除匹配队列之外)的单子图匹配,匹配装置120检查任务子图中的节点v7,与查询图q4的剩余部分进行匹配,得到查询图q4的一个匹配结果{v1,v2,v3,v4,v5,v7}。
[0128]
对于查询图q5的匹配,之后的匹配过程退化为针对查询图q5的剩余部分(除匹配队列之外)的单子图匹配,匹配装置120检查任务子图中的节点,未找到与查询图q5的剩余部分匹配的节点,匹配失败。
[0129]
基于公共候选节点的匹配过程,对于公共候选节点{v4,v5}仅需执行一次匹配,能够较少重复的匹配工作,提高子图匹配的效率。
[0130]
步骤307:匹配装置120向控制装置110反馈匹配任务的匹配结果。
[0131]
匹配装置120在对该组查询图均匹配完成后,可以将最终的匹配结果反馈给控制装置110。在匹配装置120内部,可以利用哈希表存储各个查询图的匹配结果,在哈希表中利用键值(key-value)对表示查询图的匹配结果。其中,key表示查询图的标识,value表示该查询图的匹配结果。
[0132]
匹配装置120可以将该组查询图中各个查询图的匹配节点聚合到该哈希表中,将该哈希表反馈给控制装置110。
[0133]
步骤308:控制装置110将各个匹配装置120反馈的匹配结果进行汇总。
[0134]
控制装置110在接收到各个匹配装置120反馈的匹配结果时,可以将各个匹配结果的匹配结果汇合在一起,通过客户端反馈给用户。
[0135]
当控制装置110接收到来自各个匹配装置120用于表征各组查询图匹配结果的哈希表后,可以将该多个哈希表聚合为一个哈希表,将聚合后的哈希表发送至客户端,客户端在接收到该哈希表后可以向用户展示该哈希表。
[0136]
基于与方法实施例同一发明构思,本技术实施例还提供了一种多子图匹配装置,该多子图匹配装置用于执行上述方法实施例中控制装置110及匹配装置120执行的方法。如图9所示,多子图匹配装置900包括接收模块901、分组模块902、匹配模块903。具体地,在多子图匹配装置900中,各模块之间通过通信通路建立连接。
[0137]
接收模块901,用于接收多个查询图,多个查询图中的每个查询图用于表征多个节点以及节点之间的连接关系。
[0138]
分组模块902,用于根据每个查询图的哈希值对多个查询图进行分组,生成多组查询图,其中,哈希值处于同一取值范围的多个查询图属于同一组。
[0139]
匹配模块903,用于分别将多组查询图与数据图并行进行匹配以获得匹配结果。
[0140]
作为一种可能的实施方式,多组查询图中的每组查询图的查询代价处于同一范围内,其中,查询代价用于指示对属于同一组的多个查询图进行匹配时所消耗的工作量。
[0141]
作为一种可能的实施方式,匹配模块903可以划分数据图,生成多个数据子图;以
及并行执行多个匹配任务,每个匹配任务用于将多个数据子图中的一个数据子图与多组查询图中的一组查询图进行匹配。
[0142]
作为一种可能的实施方式,多个匹配任务包括第一匹配任务,第一匹配任务用于将第一数据子图与多组查询图中的第一组查询图进行匹配,其中,第一数据子图包括第一组查询图中的所有查询图的节点。
[0143]
作为一种可能的实施方式,匹配模块903在执行第一匹配任务时,可以从第一数据子图中确定第一组查询图的每个查询图的任务子图,查询图的任务子图中包括查询图的所有节点;对每个查询图的任务子图与公共子图进行匹配,公共子图为第一组查询图中各个查询图包括的公共部分。对于任一查询图的任务子图与公共子图匹配成功的情况下,对查询图的任务子图与查询图中除公共子图外的部分进行匹配,获得查询图的任务子图与查询图的匹配结果。
[0144]
作为一种可能的实施方式,匹配模块903还可以在确定查询图的任务子图与公共子图匹配不成功的情况下,确定在第一数据子图中不存在与查询图匹配的子图。
[0145]
作为一种可能的实施方式,每个查询图的哈希值是根据局部哈希算法lsh获取的。
[0146]
基于与方法实施例同一发明构思,本技术实施例还提供了一种控制装置,该控制装置用于执行上述方法实施例中控制装置110执行的方法。如图10所示,控制装置1000包括传输模块1001、分组模块1002,可选的,还包括划分模块1003。具体地,在控制装置1000中,各模块之间通过通信通路建立连接。
[0147]
传输模块1001,用于接收多个查询图,多个查询图中的每个查询图用于表征多个节点以及节点之间的连接关系。
[0148]
分组模块1002,用于根据每个查询图的哈希值对多个查询图进行分组,生成多组查询图,其中,哈希值处于同一取值范围的多个查询图属于同一组。
[0149]
传输模块1001,还用于向多个匹配装置发送该多组查询图。
[0150]
作为一种可能的实施方式,划分模块1003可以对该数据图进行划分,生成多个数据子图;传输模块1001可以向多个匹配装置发送该多个数据子图,其中,向每个匹配装置发送一个数据子图。
[0151]
作为一种可能的实施方式,多组查询图中的每组查询图的查询代价处于同一范围内,其中,查询代价用于指示对属于同一组的多个查询图进行匹配时所消耗的工作量。
[0152]
作为一种可能的实施方式,每个查询图的哈希值是根据局部哈希算法lsh获取的。
[0153]
基于与方法实施例同一发明构思,本技术实施例还提供了一种匹配装置,该控制装置用于执行上述方法实施例中匹配装置110执行的方法。如图11所示,匹配装置1100包括传输模块1101、查询图匹配模块1102。具体地,在匹配装置1100中,各模块之间通过通信通路建立连接。
[0154]
传输模块1101,用于接收该多组查询图。
[0155]
查询图匹配模块1102,用于将多组查询图中的一组查询图与数据图并行进行匹配以获得匹配结果。
[0156]
作为一种可能的实施方式,多组查询图中的每组查询图的查询代价处于同一范围内,其中,查询代价用于指示对属于同一组的多个查询图进行匹配时所消耗的工作量。
[0157]
作为一种可能的实施方式,传输模块1101,还用于接收数据子图。查询图匹配模块
1102在对多组查询图中的一组查询图与数据图并行进行匹配时,可以将所接收的数据子图与多组查询图中的一组查询图进行匹配。
[0158]
作为一种可能的实施方式,以查询图匹配模块1102获得数据子图为第一数据子图,所需匹配的一组查询图为第一组查询图。第一数据子图包括第一组查询图中的所有查询图的节点。
[0159]
作为一种可能的实施方式,查询图匹配模块1102在对第一组查询图与第一数据子图并行进行匹配时,可以先从第一数据子图中确定第一组查询图的每个查询图的任务子图,查询图的任务子图中包括查询图的所有节点。之后,对每个查询图的任务子图与公共子图进行匹配,公共子图为第一组查询图中各个查询图包括的公共部分。对于任一查询图的任务子图与公共子图匹配成功的情况下,对查询图的任务子图与查询图中除公共子图外的部分进行匹配,获得查询图的任务子图与查询图的匹配结果。
[0160]
作为一种可能的实施方式,查询图匹配模块1102在确定查询图的任务子图与公共子图匹配不成功的情况下,可以确定在第一数据子图中不存在与查询图匹配的子图。
[0161]
本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0162]
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者网络设备等)或处理器(processor)执行本技术各个实施例该方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0163]
本技术还提供如图12所示的计算设备1200。所述计算设备1200包括总线1201、处理器1202、通信接口1203和存储器1204。处理器1202、存储器1204和通信接口1203之间通过总线1201通信。
[0164]
其中,处理器1202可以为中央处理器(central processing unit,cpu)。存储器1204可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)。存储器1204还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器,hdd或ssd。存储器中存储有可执行代码,处理器1202执行前述图3所描述的方法。存储器1204中还可以包括操作系统等其他运行进程所需的软件模块(如多子图匹配装置900中的多个模块、控制装置100中的多个模块或匹配装置1100中的多个模块)。操作系统可以为linux
tm
,unix
tm
,windows
tm
等。图12中仅示例性的绘制了多子图匹配装置900中的多个模块。
[0165]
本技术还提供一种计算设备系统,所述计算设备系统包括至少一个如图13所示的计算设备1300。所述计算设备1300包括总线1301、处理器1302、通信接口1303和存储器1304。处理器1302、存储器1304和通信接口1303之间通过总线1301通信。所述计算设备系统
中的至少一个计算设备1300之间通过通信通路进行通信。
[0166]
其中,处理器1302可以为cpu。存储器1304可以包括易失性存储器,例如随机存取存储器。存储器1304还可以包括非易失性存储器,例如只读存储器,快闪存储器,hdd或ssd。存储器1304中存储有可执行代码,处理器1302执行该可执行代码以执行前述图3描述的方法中的任意部分或全部。存储器中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为linux
tm
,unix
tm
,windows
tm
等。
[0167]
所述计算设备系统中的至少一个计算设备1300之间通过通信网络互相建立通信,每个计算设备1300上可以运行多子图匹配装置900中的任意一个或者任意多个模块。
[0168]
所述计算设备系统中的至少一个计算设备1300之间通过通信网络互相建立通信,每个计算设备1300上可以运行控制装置1000中的任意一个或者任意多个模块。
[0169]
所述计算设备系统中的至少一个计算设备1300之间通过通信网络互相建立通信,每个计算设备1300上可以运行多个匹配装置1100中的任意一个或者任意多个模块。图13中仅示例性的绘制了多子图匹配装置900中的多个模块。
[0170]
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
[0171]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括计算机程序指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例图3所述的流程或功能。
[0172]
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如ssd)。
[0173]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献