CN112667860A - 一种子图匹配方法、装置、设备及存储介质 - Google Patents
一种子图匹配方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112667860A CN112667860A CN202011623281.8A CN202011623281A CN112667860A CN 112667860 A CN112667860 A CN 112667860A CN 202011623281 A CN202011623281 A CN 202011623281A CN 112667860 A CN112667860 A CN 112667860A
- Authority
- CN
- China
- Prior art keywords
- query
- graph
- node
- target
- nodes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000001914 filtration Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 25
- 230000015654 memory Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000010276 construction Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Abstract
本申请公开了一种子图匹配方法,该方法包括以下步骤:根据预设的查询规则构建查询图,查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;确定目标图中与查询图匹配的子图。应用本申请所提供的技术方案,可以高效地进行大规模图数据的子图匹配,提高信息查询效率。本申请还公开了一种子图匹配装置、设备及存储介质,具有相应技术效果。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种子图匹配方法、装置、设备及存储介质。
背景技术
图,是一种被广泛应用的数据结构,适合用来描述具有内在关联性且联系紧密的数据。在许多应用领域中信息挖掘的问题都可以通过图的相关理论和相应技术来解决,而子图匹配技术作为实现图数据上的能够高效查询的基本操作,也被广泛的应用于各个领域和行业的实际问题中。例如社交网络中的数据分析、互联网中web链接的数据分析、生物数据的分析等等。
为了从已有的数据中挖掘出更有价值的东西,对于能在图数据中进行查询的子图匹配方法的研究的关注越来越多。随着数据量的爆发式增长,如何高效地进行大规模图数据的子图匹配,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种子图匹配方法、装置、设备及存储介质,以高效地进行大规模图数据的子图匹配。
为解决上述技术问题,本申请提供如下技术方案:
一种子图匹配方法,包括:
根据预设的查询规则构建查询图,所述查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
确定所述目标图中与所述查询图匹配的子图。
在本申请的一种具体实施方式中,所述根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图,包括:
根据所述查询图的各查询节点类型,将原始图中不具有相应节点类型的节点过滤掉;
根据所述查询图的查询节点间关系,将所述原始图中不具有相应节点间关系的节点过滤掉;
将过滤后的所述原始图确定为目标图。
在本申请的一种具体实施方式中,所述确定所述目标图中与所述查询图匹配的子图,包括:
将所述查询图的层数确定为迭代轮数N,并初始化所述目标图中每个目标节点的局部匹配状态信息,N为正整数;
在第一轮迭代中,针对所述目标图中的每个目标节点,将该目标节点与所述查询图中的根节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的所有邻居节点;
在第n轮迭代中,针对所述目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与所述查询图中的第n层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,将该目标节点更新后的局部匹配状态信息发送给该目标节点的除向该目标节点发送信息的邻居节点外的其他所有邻居节点,n=2,3,…,N-1;
在第N轮迭代中,针对所述目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与所述查询图中的第N层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息;
根据所述目标图中每个目标节点的局部匹配状态信息,确定所述目标图中与所述查询图匹配的子图。
在本申请的一种具体实施方式中,所述局部匹配状态信息包括:
用于记录已经匹配上的所述目标图中目标节点与对应的所述查询图中查询节点的信息、
用于记录下一轮迭代将要进行匹配的所述查询图中查询节点的信息、用于记录当前子图的起始节点信息;
所述根据所述目标图中每个目标节点的局部匹配状态信息,确定所述目标图中与所述查询图匹配的子图,包括:
基于所述目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组;
针对每一组,如果该组中的局部匹配状态信息的数量大于或等于所述查询图中查询节点的数量,则基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与所述查询图匹配的子图。
在本申请的一种具体实施方式中,所述基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与所述查询图匹配的子图,包括:
基于该组中匹配规则信息,确定该组已经匹配上的查询节点的数量;
如果该组已经匹配上的查询节点的数量符合所述查询图中查询节点的逻辑数量关系,且每个已经匹配上的查询节点的数量及每个已经匹配上的查询节点所连接的边的条数均匹配,则将该组对应的子图确定为与所述查询图匹配的子图。
在本申请的一种具体实施方式中,在该组中的局部匹配状态信息的数量大于或等于所述查询图中查询节点的数量、且该组已经匹配上的查询节点的数量符合所述查询图中查询节点的逻辑数量关系的情况下,在所述将该组对应的子图确定为与所述查询图匹配的子图之前,还包括:
判断该组中与起始节点信息中的目标节点相邻的节点比例是否符合预设的比例条件;
如果符合,则执行所述将该组对应的子图确定为与所述查询图匹配的子图的步骤。
在本申请的一种具体实施方式中,还包括:
在每一轮迭代中,针对所述目标图中的每个目标节点,确定该目标节点收到的局部匹配状态信息的数据量;
如果所述数据量大于预设的数据量阈值,则将该目标节点收到的局部匹配状态信息全部写入磁盘,生成新的局部匹配状态信息,并基于新的局部匹配状态信息,与相应的查询节点进行匹配,如果匹配成功,则更新新的局部匹配状态信息,并传递;新的局部匹配状态信息中的起始节点信息更新为用于记录该目标节点的标识、迭代轮数、该目标节点收到的局部匹配状态信息在磁盘中的位置;
相应的,在全部迭代完成后,在基于所述目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组之前,基于所述新的局部匹配状态信息在所述磁盘中提取并恢复相应的局部匹配状态信息。
一种子图匹配装置,包括:
查询图构建模块,用于根据预设的查询规则构建查询图,所述查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
目标图获得模块,用于根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
子图匹配模块,用于确定所述目标图中与所述查询图匹配的子图。
一种子图匹配设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一项所述子图匹配方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述子图匹配方法的步骤。
应用本申请实施例所提供的技术方案,根据预设的查询规则构建的查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系,根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,缩小原始图,得到目标图,再确定目标图中与查询图匹配的子图,可以高效地进行大规模图数据的子图匹配,提高信息查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种子图匹配方法的实施流程图;
图2为本申请实施例中查询图构建过程的一种示例;
图3为本申请实施例中查询图构建过程的另一种示例;
图4为本申请实施例中一种目标图的局部展示示意图;
图5为本申请实施例中一种查询图的示意图;
图6为本申请实施例中与查询图匹配的一个子图的示意图;
图7为本申请实施例中被过滤掉的一个子图的示意图;
图8为本申请实施例中被过滤掉的另一个子图的示意图;
图9为本申请实施例中一种子图匹配装置的结构示意图;
图10为本申请实施例中一种子图匹配设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,为本申请实施例所提供的一种子图匹配方法的实施流程图,该方法可以包括以下步骤:
S110:根据预设的查询规则构建查询图。
查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系。
在实际应用中,可以根据实际需求预设查询规则。根据预设的查询规则可以构建查询图。查询图为一个一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点和查询节点之间的边表示查询节点间关系。
如查询规则为:在银行系统中,查询与VIP客户有朋友关系的普通客户。可以为用户输出图2右侧所示的配置界面,由用户配置该查询规则,建立的查询图可以如图2左侧所示。查询图的构建过程也是知识构建过程。在配置界面中,用户可以在知识名称中输入“VIP朋友”,可以输入知识描述,选择主节点为“客户”,选择当前选中节点的类型、数量等,可通过编辑条件按钮对过滤条件进行编辑,选择当前选中节点的属性,还可以进行高级配置,如进行比例的配置等。
再如图3所示,在配置界面中,用户可以在知识名称中输入“VIP客户与两个以上亲属相连”,可以输入知识描述,选择主节点为“客户”,选择当前选中节点的类型等,可通过编辑条件按钮对过滤条件进行编辑,选择当前选中节点的属性。建立的查询图可以如图3左侧所示。在图3中,较大的右边的节点是主节点(根节点/StartNode),设置的查询图的根节点标签属性为VIP客户。左边的较小的节点为叶子节点,要求叶子节点的数量大于等于2,也就是说最终确定出的目标图中与查询图匹配的子图将拥有一个标签为VIP客户的根节点和数量大于等于2的邻居节点数。
树形查询图的查询节点的组成有根节点(StartNode)、节点和叶子节点。根节点为查询图的起始节点,位于查询图的第一层,每个查询图仅有一个根节点。节点是向上有父节点,向下有子节点的点。叶子节点是仅有父节点没有子节点的点。在没有特殊说明的情况下,在查询图中这三类节点统称为查询节点。
查询图的每个查询节点可以包含以下信息:
节点标识、邻居节点集、节点数量、对应于节点数量应满足的逻辑数量关系、节点类型、具体条件属性。
具体的,每个查询节点可以通过以下数组表示:
RuleNode[node_id,adjNodeIdList,node_Num,num_Equation,node_type,conditions];
其中,node_id表示当前节点的唯一标识id;adjNodeIdList表示当前节点的邻居节点集;node_Num表示当前节点数量;num_Equaation表示当前节点对应于node_Num应满足的逻辑数量关系,如大于、大于等于、小于、小于等于或等于node_Num;node_type表示当前节点的类型,如当前节点代表客户实体、航班、银行卡号等;conditions表示当前节点的具体条件属性,如客户实体需要具备VIP客户的属性。
在后续步骤中目标图的目标节点可以以相同数组方式表示。
查询图的根节点位于查询图的第一层,通过根节点的adjNodeIdList可以获取位于查询图第二层的所有节点,循环遍历第二层所有节点的adjNodeIdList可以获取位于查询图第三层的所有节点,以此类推,一层一层的获取到整个查询图的信息。
S120:根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图。
原始图为所有节点的集合,数据量庞大。原始图中所有节点共有的基本信息可以是,客户类型,具有姓名、年龄、性别、标签等属性,分为VIP客户和普通客户。客户与客户之间有三种关系:朋友、亲情和同事。
如果基于原始图进行子图匹配,则将会增大计算量,匹配效率较低。本申请根据预设的查询规则构建查询图后,根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,将进行点边过滤处理后的原始图确定为目标图。再在目标图中确定与查询图匹配的子图。这样预先过滤掉不符合查询图相关要求的节点,使得得到的目标图为缩小后的原始图,可以减少计算量,提高匹配效率。
在本申请的一种具体实施方式中,该步骤可以包括以下步骤:
第一个步骤:根据查询图的各查询节点类型,将原始图中不具有相应节点类型的节点过滤掉;
第二个步骤:根据查询图的查询节点间关系,将原始图中不具有相应节点间关系的节点过滤掉;
第三个步骤:将过滤后的原始图确定为目标图。
为便于描述,将上述三个步骤结合起来进行说明。
在本申请实施例中,根据预设的查询规则构建的查询图为树形结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系。
根据查询图的各查询节点类型,可以确定原始图中不具有相应节点类型的节点,这些节点的节点类型与查询图中各查询节点的节点类型不符,可以将这样的节点过滤掉。再根据查询图的查询节点间关系,确定经过前面的节点过滤后的原始图中不具有相应节点间关系的节点,将这样的节点再过滤掉,最后过滤后的原始图较之前缩小了,将过滤后的原始图确定为目标图。
如图4所示,为目标图的局部展示示意图。
S130:确定目标图中与查询图匹配的子图。
对原始图进行点边过滤处理,获得目标图后,进一步可以在目标图中确定与查询图匹配的子图。
应用本申请实施例所提供的方法,根据预设的查询规则构建的查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系,根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,缩小原始图,得到目标图,再确定目标图中与查询图匹配的子图,可以高效地进行大规模图数据的子图匹配,提高信息查询效率。
在本申请的一个实施例中,步骤S130可以包括以下步骤:
步骤一:将查询图的层数确定为迭代轮数N,并初始化目标图中每个目标节点的局部匹配状态信息,N为正整数;
步骤二:在第一轮迭代中,针对目标图中的每个目标节点,将该目标节点与查询图中的根节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的所有邻居节点;
步骤三:在第n轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与查询图中的第n层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,将该目标节点更新后的局部匹配状态信息发送给该目标节点的除向该目标节点发送信息的邻居节点外的其他所有邻居节点,n=2,3,…,N-1;
步骤四:在第N轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与查询图中的第N层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息;
步骤五:根据目标图中每个目标节点的局部匹配状态信息,确定目标图中与查询图匹配的子图;
为便于描述,将上述几个步骤结合起来进行说明。
在本申请实施例中,在根据预设的查询规则构建查询图,根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图之后,进一步可以将查询图的层数确定为迭代轮数,用N表示,N为正整数。同时,可以初始化目标图中每个目标节点的局部匹配状态信息。
在第一轮迭代中,可以将目标图中的每个目标节点分别与查询图的根节点进行匹配。针对目标图中的每个目标节点,如果该目标节点与查询图中的根节点匹配成功,则可以更新该目标节点的局部匹配状态信息,即PartialMatch信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的所有邻居节点。如果匹配不成功,则该目标节点的局部匹配状态信息为初始状态,不进行更新。
在n=2,3,…,N-1的情况下,在第n轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则可以认为该目标节点有可能会与查询图中的第n层查询节点匹配,可以激活该目标节点,基于接收到的局部匹配状态信息,将该目标节点与查询图中的第n层相对应的查询节点进行匹配。其接收到的局部匹配状态信息中标记有当前轮迭代将要进行匹配的查询图中查询节点的信息,只需要按照该标记与第n层相应的查询节点进行匹配即可,不需要与第n层所有查询节点均进行匹配,以提高效率。如果该目标节点没有接收到该目标节点的邻居节点发送的局部匹配状态信息,则该节点在本轮迭代中不被激活。在该目标节点激活的情况下,如果该目标节点与查询图中的第n层查询节点匹配成功,则可以更新该目标节点的局部匹配状态信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的除向该目标节点发送信息的邻居节点外的其他所有邻居节点。即前一轮迭代中匹配成功的目标图中目标节点更新后的局部匹配状态信息传递给相应目标节点的邻居节点,在下一轮迭代中使用。
在第N轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则该目标节点被激活,可以基于接收到的局部匹配状态信息,将该目标节点与查询图中的第N层相对应的查询节点进行匹配。如果匹配成功,则更新该目标节点的局部匹配状态信息。其接收到的局部匹配状态信息中标记有当前轮迭代将要进行匹配的查询图中查询节点的信息,只需要按照该标记与第N层相应的查询节点进行匹配即可,不需要与第N层所有查询节点均进行匹配,以提高效率。
本申请中使用PartialMatch存储结构用来存储子图匹配过程中目标图中每个目标节点的匹配情况,使用RuleNode存储结构用来存储查询图或者目标图中各节点自身以及邻居节点的信息。
本申请中的查询图、目标图可以是节点带有属性的无向图。节点带属性的无向图可以表示为G=(V,E),其中,V表示无向图G中的节点集合,V由两部分组成,V_Id和V_Attr,V_Id表示节点的唯一标识,V_Attr表示节点的属性,具体可以是节点的标签如VIP客户或普通客户,也可以是节点的年龄、性别、住址等一系列用于描述节点的属性;E表示G中所有无向边的集合,同样由E_Id和E_Attr两部分组成,E_Id是边的唯一标识,E_Attr表示边的属性,即两节点之间连线的关系,如朋友、同事、亲情、同乘等关系。
查询图可以表示为Q=(Vq,Eq),其中Vq表示查询图Q的所有查询节点构成的集合;Eq表示查询图Q的所有边构成的集合。
在进行子图匹配时需要保证得到的查询结果与给定的查询图之间满足子图同构关系。子图同构的定义可以为:给定图G’=(Vg’,Eg’)和G=(Vg,Eg),当且仅当在G’到G之间存在一个单射函数M时,认为G’到G满足子图同构关系。
在进行子图匹配时,可以利用BSP(Bulk Synchronous Parallel,整体同步并行计算模型)进行。BSP是一个并行处理模型,该模型将算法分成一系列超步(superstep),每个超步就是一轮单独的迭代。在每个超步内部,每个节点的计算都是并行的。在超步结束前,每个节点都为其他节点生产消息,这些消息传递到下一个超步中。
在每一轮迭代匹配过程中,将目标图中的目标节点分别与查询图的相应层的相应查询节点进行匹配,可以获得目标图中目标节点的局部匹配状态信息。该局部匹配状态信息可以包括:用于记录已经匹配上的目标图中目标节点与对应的查询图中查询节点的信息matched、用于记录下一轮迭代将要进行匹配的查询图中查询节点的信息nextRound、用于记录当前子图的起始节点信息startVertexV。目标图中的每个目标节点均使用一个对应的局部匹配状态信息来存储相应的匹配情况。
为便于理解,以实际示例对上述迭代匹配过程进行说明。
假设查询图如图5所示,由一个作为根节点的查询节点1(一号根节点VIP客户)和两个作为叶子节点的查询节点2(二号叶子节点普通客户)、查询节点3(三号叶子节点普通客户)构成,查询节点1位于查询图的第一层,查询节点2和查询节点3位于查询图的第二层。三个查询节点的节点类型node_type都是客户,其中查询节点1的属性是VIP客户,查询节点2和查询节点3的属性是普通客户。
在每轮迭代中都输入目标图、初始信息和最大迭代轮数。
在第1轮迭代中,将目标图中的每个目标节点分别与查询图的第1层查询节点进行匹配。即将目标图中的所有目标节点与查询图中的根节点进行比较。假设目标图中的目标节点A与查询图的根节点匹配,则将该目标节点A的局部匹配状态信息由初始的PartialMatch[matched[],nextRound[1],startVertexV[]]更新为PartialMatch[matched[目标节点A的id:1],nextRound[2,3],startVertexV[目标节点A的id]]。针对目标图中每个目标节点,如果该目标节点与查询图的根节点不匹配,则其局部匹配状态信息保持初始的状态不变。
第1轮迭代中,针对目标图中每个目标节点,如果该目标节点的局部匹配状态信息有更新,则将更新后的局部匹配状态信息传递给该目标节点的邻居节点,进行第2轮迭代。
在第2轮迭代中,针对目标图中每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则将该目标节点与查询图的第2层查询节点进行匹配。假设目标图中目标节点A的邻居节点B与查询图第二层叶子节点中的一个,如查询节点2相匹配,则目标节点A和作为其邻居的目标节点B的局部匹配状态信息可更新为:PartialMatch[matched[目标节点A的id:1,目标节点B的id:2],nextRound[],startVertexV[目标节点A的id]。
由于该示例中的查询图只有两层,故迭代轮数为2。
获得目标图中每个目标节点的局部匹配状态信息后,即可获知每个目标节点的匹配情况。根据目标图中每个目标节点的局部匹配状态信息,可以确定目标图中与查询图匹配的子图。
在本申请的一种具体实施方式中,可以基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组,针对每一组,如果该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量,则基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与查询图匹配的子图。
在本申请实施例中,以起始节点信息StartVertexV作为分组依据,将具有相同起始节点信息的局部匹配状态信息分到一组,表示这些目标节点是相连的且有可能与整个查询图相匹配。
针对每一组,可以对该组内的局部匹配状态信息的数量进行统计,如果该组中的局部匹配状态信息的数量小于查询图中查询节点的数量,则可以认为该组一定不是查询图的同构子图,对于这样的组可以过滤掉。如果该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量,则可以基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与查询图匹配的子图。
在本申请的一种具体实施方式中,可以基于该组中匹配规则信息,确定该组已经匹配上的查询节点的数量;如果该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系,且每个已经匹配上的查询节点的数量及每个已经匹配上的查询节点所连接的边的条数均匹配,则将该组对应的子图确定为与查询图匹配的子图。
在本申请实施例中,通过查询图中每个查询节点表示数组中的node_Num和num_Equation可以获知每个查询节点的逻辑数量关系。
将目标图中的目标节点与查询图进行N轮迭代匹配,获得目标图中每个目标节点的局部匹配状态信息,基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组。针对每一组,在该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量的情况下,可以进一步基于该组中匹配规则信息,确定该组已经匹配上的查询节点的数量,如果该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系,且每个已经匹配上的查询节点的数量及每个已经匹配上的查询节点所连接的边的条数均匹配,则将该组对应的子图确定为与查询图匹配的子图。反之,如果该组已经匹配上的查询节点的数量不符合查询图中查询节点的逻辑数量关系,或者每个已经匹配上的查询节点的数量不匹配,或者每个已经匹配上的查询节点所连接的边的条数不匹配,则认为该组对应的子图不是查询图的同构子图,可以将该子图过滤掉。
举例而言,假设查询图中根节点与一个叶子节点相连,该叶子节点的数量要求为等于2,但是某一组对应的子图中,匹配上该叶子节点的数量只有1,或者大于2,说明不符合相应的逻辑数量关系,可以将这个子图过滤掉。
假设查询图中有A、B、C、D四个查询节点,A分别与B、D相连,C也分别与B、D相连,某一组对应的子图中,节点1分别与2、3相连,节点4只与节点2相连,这里节点4只有一条边,查询图中对应的查询节点C有两条边,所连接的边的条数不匹配,所以,可以将该子图过滤掉。
假设查询图中有5个查询节点,而某一组对应的子图中只有4个节点,则查询节点的数量不匹配,可以将该子图过滤掉。
在本申请的一种具体实施方式中,在该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量、且该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系的情况下,在将该组对应的子图确定为与查询图匹配的子图之前,该方法还可以包括以下步骤:
判断该组中与起始节点信息中的目标节点相邻的节点比例是否符合预设的比例条件;如果符合,则执行将该组对应的子图确定为与查询图匹配的子图的步骤。
在本申请实施例中,可以在查询图中添加比例条件,针对每一组,在该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量、且该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系的情况下,进一步可以判断该组中与起始节点信息中的目标节点相邻的节点比例是否符合预设的比例条件。如果符合,则将该组对应的子图确定为与查询图匹配的子图,否则,将该组对应的子图过滤掉。
在查询图中,可以为与根节点相邻的节点设置比例,表示希望在目标图中找出这样一些符合比例条件的目标节点,这些目标节点的邻居节点按比例分布。比如:可以构建一个根节点是普通客户,邻居节点为VIP客户与任意客户类型的客户,设置VIP客户比例为0.5的查询图,基于这个查询图,将在目标图中找到这样的普通客户合集,集合内的客户都符合如下条件:与该客户相连的所有客户中VIP客户占所有相连客户的比例为0.5。
通过对匹配结果再过滤,可以提升匹配准确率。
在一种具体示例中,假设查询图为图3所示,最后得到的其中一个与查询图匹配的子图如图6所示,其中,卡尔·文森匹配查询图中的根节点,与其相连的是三个邻居节点,数量大于设定的2个邻居节点,且每个与卡尔·文森相连的节点都与卡尔·文森是亲情关系。
图7和图8是两个被过滤掉的子图。图7所示子图虽然节点数量符合要求但是节点间的关系不符合查询图的亲情关系要求。另外,由于查询图中只涉及到亲情关系,所以在本申请实施例进行目标图的确定时会把所有的非亲情关系过滤掉,最后得到的匹配结果集中并不会出现同事关系,这里仅做举例说明用。图8所示子图的根节点只有一个邻居节点,不符合查询图对叶子节点数量的要求。
在相关技术中,在单张大图上的分布式子图匹配方式通常是先将给定的目标图划分成一系列的目标子图,这一操作也称为分区。在子图匹配时也通常将给定的查询图分解成一系列的查询子图,在划分后的目标子图中对查询子图进行子图匹配操作,得到一系列的查询子图对应的结果集,把这些查询子图对应的结果集合并后得到最终的查询结果。
这种方式存在着一些不足:1)在匹配过程中会产生大量的中间结果;2)数据严重倾斜的情况下消耗资源严重,如在存在超级大节点时容易占用较多内存;3)查询图构建过于繁琐,查询图特征需要逐个点详细描述,例如需要找到一个有一千个邻居节点的点,在查询图构建时就要有一千个点与根节点相连;4)无法配置出含有比例特性的图,例如配置出一个根节点的邻居节点中男生与女生比为1:1的查询图。
本申请实施例所提供的技术方案较好地解决了这些问题。本申请实施例不仅关注到同构子图,同时考虑到用户的模糊条件查询需求,可以实现高效的离线大规模图数据集的运算。将树结构与整体同步并行计算模型(BSP)相结合,实现了大规模离线图数据的分布式规则匹配。
在实际应用中,由于查询图匹配需要多轮迭代,各节点数据间存在复杂联系,计算过程依赖点对点通信,以MapReduce及其开源实现Hadoop为代表的传统面向数据并行(Data-parallel)的计算模型难以提供高效的支持。而基于BSP机制的图计算模型可以弥补MapReduce不擅长处理迭代计算的不足。BSP是一个状态模型,各个子任务在本地的子图数据上进行计算、通信、修改图的状态等操作,并行任务之间通过消息通信交流计算结果,不需要像MapReduce一样对全体数据进行复制。BSP模型仅启动一个作业,利用多个超步就可以完成迭代处理,两次迭代之间通过消息传递中间计算结果。由于减少了作业启动、调度开销和磁盘存取开销,BSP模型的迭代执行效率较高,更符合计算需求。
相关的子图匹配算法,通常采用邻接矩阵或邻接表的方式表示查询图,虽然可以解决子图同构问题,但是无法满足用户的模糊条件查询需求,本申请通过对于树节点属性的限制,能够较好地满足该需求。
树最强大的功能是进行储存查询,且树是连通的,只需要进行一次搜索就可以完成遍历。树结构较好地保持了各个节点之间的关联性,且相对于子图结构来说又不会显得太过于复杂。
本申请通过对查询图的逐层遍历,不仅能够实现高效的同构子图查询,还能实现规则模糊查询,如一对多,多对多,比例等。
以潜在VIP客户筛选为例,定义一个潜在VIP客户筛选规则为:一个普通客户身边有五个VIP客户,则这个普通客户被标注为VIP客户。在相关技术中,这条潜在VIP客户筛选规则需要配置六个点,一个为普通客户,其余五个为VIP客户。然而在实际应用中,更多的规则并不是一个确切的值,而是一个模糊的取值范围。例如一个普通客户身边有大于等于五个VIP客户的普通客户可以标注为潜在VIP客户。本申请通过对点属性的逻辑运算配置,可以简化该条规则配置为两个点,一个点为普通客户,另一个点为VIP客户,且VIP客户具有大于等于五的逻辑运算配置。这种一对多的模式匹配,不仅简化了查询图的构建过程,还可以满足用户对模糊匹配的需求。
比例条件是本申请满足模糊匹配需求的另一种展现形式。例如定义如果一个社区男女比例大于6:4,则称该社区为男性主导社区。通过本申请方案可以实现该需求。
另外,本申请在树结构的查询图的边上,加入了边属性,记录两查询节点间的关系,例如亲属、同事、朋友、汇款、收款关系等,可以较大程度的还原真实场景中人与人、事件与事件之间可能存在的各种关系。
在子图匹配过程中,基于BSP模型,对于查询图使用广度优先的遍历方式,由查询图的根节点开始,进行逐层的遍历,并对目标图中目标节点进行全局遍历,每一次遍历产生的中间结果即为所有目标图中的目标节点对查询图当前层的匹配情况,目标图中的所有目标节点完成一次匹配,在BSP中视为一轮迭代,匹配产生的中间结果就是BSP前后两轮迭代间需要进行的消息通信。通过多轮迭代,直至查询图中的所有查询节点均被遍历过一次,计算结束。可以实现大规模离线图数据的子图匹配。
在本申请的一个实施例中,该方法还可以包括以下步骤:
在每一轮迭代中,针对目标图中的每个目标节点,确定该目标节点收到的局部匹配状态信息的数据量;
如果数据量大于预设的数据量阈值,则将该目标节点收到的局部匹配状态信息全部写入磁盘,生成新的局部匹配状态信息,并基于新的局部匹配状态信息,与相应的查询节点进行匹配,如果匹配成功,则更新新的局部匹配状态信息,并传递;新的局部匹配状态信息中的起始节点信息更新为用于记录该目标节点的标识、迭代轮数、该目标节点收到的局部匹配状态信息在磁盘中的位置;
相应的,在全部迭代完成后,在基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组之前,基于新的局部匹配状态信息在磁盘中提取并恢复相应的局部匹配状态信息。
在本申请实施例中,为了解决在超大数据量下,出现超级大节点数据倾斜造成的内存溢出等问题,在每一轮迭代中会统计每个目标节点收到的局部匹配状态信息的数据量,如果这个数据量大于预先设置的数据量阈值,则将这些局部匹配状态信息全部写入磁盘,并生成新的局部匹配状态信息。新的局部匹配状态信息与局部匹配状态信息partialMatch结构相同,将其中起始节点信息更新为用于记录该目标节点的标识、迭代轮数、该目标节点收到的局部匹配状态信息在磁盘中的位置,方便后续的查找工作。然后该目标节点基于新的局部匹配状态信息与相应的查询节点匹配,并在匹配成功时更新该新的局部匹配状态信息,并传递。通过这种方式,原本需要接受成千上万条信息的目标节点,就可以只处理一条信息,并且将这一条信息进行传递,减少了集群的工作量。
相应的,在全部迭代完成后,在基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组之前,可以先基于新的局部匹配状态信息在磁盘中提取并恢复相应的局部匹配状态信息。
相应于上面的方法实施例,本申请实施例还提供了一种子图匹配装置,下文描述的子图匹配装置与上文描述的子图匹配方法可相互对应参照。
参见图9所示,该装置可以包括以下模块:
查询图构建模块910,用于根据预设的查询规则构建查询图,查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
目标图获得模块920,用于根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
子图匹配模块930,用于确定目标图中与查询图匹配的子图。
应用本申请实施例所提供的装置,根据预设的查询规则构建的查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系,根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,缩小原始图,得到目标图,再确定目标图中与查询图匹配的子图,可以高效地进行大规模图数据的子图匹配,提高信息查询效率。
在本申请的一种具体实施方式中,目标图获得模块920,用于:
根据查询图的各查询节点类型,将原始图中不具有相应节点类型的节点过滤掉;
根据查询图的查询节点间关系,将原始图中不具有相应节点间关系的节点过滤掉;
将过滤后的原始图确定为目标图。
在本申请的一种具体实施方式中,子图匹配模块930,用于:
将查询图的层数确定为迭代轮数N,并初始化目标图中每个目标节点的局部匹配状态信息,N为正整数;
在第一轮迭代中,针对目标图中的每个目标节点,将该目标节点与查询图中的根节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的所有邻居节点;
在第n轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与查询图中的第n层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,将该目标节点更新后的局部匹配状态信息发送给该目标节点的除向该目标节点发送信息的邻居节点外的其他所有邻居节点,n=2,3,…,N-1;
在第N轮迭代中,针对目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与查询图中的第N层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息;
根据目标图中每个目标节点的局部匹配状态信息,确定目标图中与查询图匹配的子图。
在本申请的一种具体实施方式中,局部匹配状态信息包括:用于记录已经匹配上的目标图中目标节点与对应的查询图中查询节点的信息、用于记录下一轮迭代将要进行匹配的查询图中查询节点的信息、用于记录当前子图的起始节点信息;子图匹配模块930,用于:
基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组;
针对每一组,如果该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量,则基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与查询图匹配的子图。
在本申请的一种具体实施方式中,子图匹配模块930,用于:
在该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量的情况下,在将该组对应的子图确定为与查询图匹配的子图之前,基于该组中匹配规则信息,确定该组已经匹配上的查询节点的数量;
如果该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系,且每个已经匹配上的查询节点的数量及每个已经匹配上的查询节点所连接的边的条数均匹配,则将该组对应的子图确定为与查询图匹配的子图。
在本申请的一种具体实施方式中,子图匹配模块930,还用于:
在该组中的局部匹配状态信息的数量大于或等于查询图中查询节点的数量、且该组已经匹配上的查询节点的数量符合查询图中查询节点的逻辑数量关系的情况下,在将该组对应的子图确定为与查询图匹配的子图之前,判断该组中与起始节点信息中的目标节点相邻的节点比例是否符合预设的比例条件;
如果符合,则执行将该组对应的子图确定为与查询图匹配的子图的步骤。
在本申请的一种具体实施方式中,查询图的每个查询节点包含以下信息:
节点标识、邻居节点集、节点数量、对应于节点数量应满足的逻辑数量关系、节点类型、具体条件属性。
在本申请的一种具体实施方式中,还包括信息优化模块,用于:
在每一轮迭代中,针对目标图中的每个目标节点,确定该目标节点收到的局部匹配状态信息的数据量;
如果数据量大于预设的数据量阈值,则将该目标节点收到的局部匹配状态信息全部写入磁盘,生成新的局部匹配状态信息,并基于新的局部匹配状态信息,与相应的查询节点进行匹配,如果匹配成功,则更新新的局部匹配状态信息,并传递;新的局部匹配状态信息中的起始节点信息更新为用于记录该目标节点的标识、迭代轮数、该目标节点收到的局部匹配状态信息在磁盘中的位置;
相应的,在全部迭代完成后,在基于目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组之前,基于新的局部匹配状态信息在磁盘中提取并恢复相应的局部匹配状态信息。
相应于上面的方法实施例,本申请实施例还提供了一种子图匹配设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述子图匹配方法的步骤。
如图10所示,为子图匹配设备的组成结构示意图,子图匹配设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行子图匹配法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
根据预设的查询规则构建查询图,查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
根据查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
确定目标图中与查询图匹配的子图。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如树构建功能、节点对比功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如图数据、匹配数据等。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口12可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图10所示的结构并不构成对本申请实施例中子图匹配设备的限定,在实际应用中子图匹配设备可以包括比图10所示的更多或更少的部件,或者组合某些部件。
相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述子图匹配方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种子图匹配方法,其特征在于,包括:
根据预设的查询规则构建查询图,所述查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
确定所述目标图中与所述查询图匹配的子图。
2.根据权利要求1所述的方法,其特征在于,所述根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图,包括:
根据所述查询图的各查询节点类型,将原始图中不具有相应节点类型的节点过滤掉;
根据所述查询图的查询节点间关系,将所述原始图中不具有相应节点间关系的节点过滤掉;
将过滤后的所述原始图确定为目标图。
3.根据权利要求1所述的方法,其特征在于,所述确定所述目标图中与所述查询图匹配的子图,包括:
将所述查询图的层数确定为迭代轮数N,并初始化所述目标图中每个目标节点的局部匹配状态信息,N为正整数;
在第一轮迭代中,针对所述目标图中的每个目标节点,将该目标节点与所述查询图中的根节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,并将该目标节点更新后的局部匹配状态信息发送给该目标节点的所有邻居节点;
在第n轮迭代中,针对所述目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与所述查询图中的第n层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息,将该目标节点更新后的局部匹配状态信息发送给该目标节点的除向该目标节点发送信息的邻居节点外的其他所有邻居节点,n=2,3,…,N-1;
在第N轮迭代中,针对所述目标图中的每个目标节点,如果该目标节点接收到该目标节点的邻居节点发送的局部匹配状态信息,则基于接收到的局部匹配状态信息,将该目标节点与所述查询图中的第N层相对应的查询节点进行匹配,如果匹配成功,则更新该目标节点的局部匹配状态信息;
根据所述目标图中每个目标节点的局部匹配状态信息,确定所述目标图中与所述查询图匹配的子图。
4.根据权利要求3所述的方法,其特征在于,所述局部匹配状态信息包括:
用于记录已经匹配上的所述目标图中目标节点与对应的所述查询图中查询节点的信息、
用于记录下一轮迭代将要进行匹配的所述查询图中查询节点的信息、
用于记录当前子图的起始节点信息;
所述根据所述目标图中每个目标节点的局部匹配状态信息,确定所述目标图中与所述查询图匹配的子图,包括:
基于所述目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组;
针对每一组,如果该组中的局部匹配状态信息的数量大于或等于所述查询图中查询节点的数量,则基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与所述查询图匹配的子图。
5.根据权利要求4所述的方法,其特征在于,所述基于每个查询节点的数量及每个查询节点所连接的边的条数,确定该组对应的子图是否为与所述查询图匹配的子图,包括:
基于该组中匹配规则信息,确定该组已经匹配上的查询节点的数量;
如果该组已经匹配上的查询节点的数量符合所述查询图中查询节点的逻辑数量关系,且每个已经匹配上的查询节点的数量及每个已经匹配上的查询节点所连接的边的条数均匹配,则将该组对应的子图确定为与所述查询图匹配的子图。
6.根据权利要求5所述的方法,其特征在于,在该组中的局部匹配状态信息的数量大于或等于所述查询图中查询节点的数量、且该组已经匹配上的查询节点的数量符合所述查询图中查询节点的逻辑数量关系的情况下,在所述将该组对应的子图确定为与所述查询图匹配的子图之前,还包括:
判断该组中与起始节点信息中的目标节点相邻的节点比例是否符合预设的比例条件;
如果符合,则执行所述将该组对应的子图确定为与所述查询图匹配的子图的步骤。
7.根据权利要求4至6之中任一项所述的方法,其特征在于,还包括:
在每一轮迭代中,针对所述目标图中的每个目标节点,确定该目标节点收到的局部匹配状态信息的数据量;
如果所述数据量大于预设的数据量阈值,则将该目标节点收到的局部匹配状态信息全部写入磁盘,生成新的局部匹配状态信息,并基于新的局部匹配状态信息,与相应的查询节点进行匹配,如果匹配成功,则更新新的局部匹配状态信息,并传递;新的局部匹配状态信息中的起始节点信息更新为用于记录该目标节点的标识、迭代轮数、该目标节点收到的局部匹配状态信息在磁盘中的位置;
相应的,在全部迭代完成后,在基于所述目标图中每个目标节点的局部匹配状态信息,将具有相同起始节点信息的局部匹配状态信息分到一组之前,基于所述新的局部匹配状态信息在所述磁盘中提取并恢复相应的局部匹配状态信息。
8.一种子图匹配装置,其特征在于,包括:
查询图构建模块,用于根据预设的查询规则构建查询图,所述查询图为一层或多层树结构,包括多个查询节点,每个查询节点具有各自的节点类型,查询节点之间的边表示查询节点间关系;
目标图获得模块,用于根据所述查询图的各查询节点类型和查询节点间关系,对原始图进行点边过滤处理,获得目标图;
子图匹配模块,用于确定所述目标图中与所述查询图匹配的子图。
9.一种子图匹配设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述子图匹配方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述子图匹配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011623281.8A CN112667860A (zh) | 2020-12-30 | 2020-12-30 | 一种子图匹配方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011623281.8A CN112667860A (zh) | 2020-12-30 | 2020-12-30 | 一种子图匹配方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112667860A true CN112667860A (zh) | 2021-04-16 |
Family
ID=75412244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011623281.8A Pending CN112667860A (zh) | 2020-12-30 | 2020-12-30 | 一种子图匹配方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667860A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190720A (zh) * | 2021-05-17 | 2021-07-30 | 深圳计算科学研究院 | 一种基于图压缩的图数据库构建方法、装置及相关组件 |
CN113365113A (zh) * | 2021-05-31 | 2021-09-07 | 武汉斗鱼鱼乐网络科技有限公司 | 目标节点识别方法及装置 |
CN113609377A (zh) * | 2021-07-02 | 2021-11-05 | 清华大学 | 信息推荐方法、装置、电子设备及存储介质 |
CN114003648A (zh) * | 2021-10-20 | 2022-02-01 | 支付宝(杭州)信息技术有限公司 | 风险交易团伙的识别方法、装置、电子设备与存储介质 |
CN114817558A (zh) * | 2022-04-07 | 2022-07-29 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN116108238A (zh) * | 2023-04-12 | 2023-05-12 | 杭州悦数科技有限公司 | 一种图数据库中多跳查询的优化方法、系统和装置 |
CN114817558B (zh) * | 2022-04-07 | 2024-05-10 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
-
2020
- 2020-12-30 CN CN202011623281.8A patent/CN112667860A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190720A (zh) * | 2021-05-17 | 2021-07-30 | 深圳计算科学研究院 | 一种基于图压缩的图数据库构建方法、装置及相关组件 |
CN113190720B (zh) * | 2021-05-17 | 2023-01-17 | 深圳计算科学研究院 | 一种基于图压缩的图数据库构建方法、装置及相关组件 |
CN113365113A (zh) * | 2021-05-31 | 2021-09-07 | 武汉斗鱼鱼乐网络科技有限公司 | 目标节点识别方法及装置 |
CN113609377A (zh) * | 2021-07-02 | 2021-11-05 | 清华大学 | 信息推荐方法、装置、电子设备及存储介质 |
CN113609377B (zh) * | 2021-07-02 | 2022-11-22 | 清华大学 | 信息推荐方法、装置、电子设备及存储介质 |
CN114003648A (zh) * | 2021-10-20 | 2022-02-01 | 支付宝(杭州)信息技术有限公司 | 风险交易团伙的识别方法、装置、电子设备与存储介质 |
CN114003648B (zh) * | 2021-10-20 | 2024-04-26 | 支付宝(杭州)信息技术有限公司 | 风险交易团伙的识别方法、装置、电子设备与存储介质 |
CN114817558A (zh) * | 2022-04-07 | 2022-07-29 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN114817558B (zh) * | 2022-04-07 | 2024-05-10 | 杭州半云科技有限公司 | 一种构建子图模型进行图谱查询的方法 |
CN116108238A (zh) * | 2023-04-12 | 2023-05-12 | 杭州悦数科技有限公司 | 一种图数据库中多跳查询的优化方法、系统和装置 |
CN116108238B (zh) * | 2023-04-12 | 2023-06-16 | 杭州悦数科技有限公司 | 一种图数据库中多跳查询的优化方法、系统和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112667860A (zh) | 一种子图匹配方法、装置、设备及存储介质 | |
CN108762769B (zh) | 微服务应用编排和部署方法、装置及计算机终端 | |
JP6549332B2 (ja) | 機械学習に基づくネットワークモデル構築方法及び装置 | |
US8224825B2 (en) | Graph-processing techniques for a MapReduce engine | |
CN105224606A (zh) | 一种用户标识的处理方法及装置 | |
CN110023925A (zh) | 生成、访问和显示沿袭元数据 | |
Lotker et al. | Distributed MST for constant diameter graphs | |
CN112052404A (zh) | 多源异构关系网络的群体发现方法、系统、设备及介质 | |
CN112667735A (zh) | 一种基于大数据的可视化模型建立分析系统和方法 | |
US20230056760A1 (en) | Method and apparatus for processing graph data, device, storage medium, and program product | |
CN115293919A (zh) | 面向社交网络分布外泛化的图神经网络预测方法及系统 | |
CN109460398A (zh) | 时间序列数据的补全方法、装置及电子设备 | |
CN114063992B (zh) | 一种低代码开发平台的建模方法及系统 | |
CN109933589B (zh) | 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法 | |
US20200104425A1 (en) | Techniques for lossless and lossy large-scale graph summarization | |
CN114238576A (zh) | 数据匹配方法、装置、计算机设备和存储介质 | |
CN110888888A (zh) | 人员关系分析方法、装置、电子设备及存储介质 | |
CN113407702B (zh) | 员工合作关系强度量化方法、系统、计算机和存储介质 | |
CN114168581A (zh) | 数据清洗方法、装置、计算机设备及存储介质 | |
CN115719055A (zh) | 一种表格构建方法及装置 | |
CN113761293A (zh) | 图数据强连通分量挖掘方法、装置、设备及存储介质 | |
CN110309367B (zh) | 信息分类的方法、信息处理的方法和装置 | |
CN112508518A (zh) | 结合rpa和ai的rpa流程的生成方法以及相应的设备、可读存储介质 | |
CN106469086B (zh) | 事件处理方法和装置 | |
CN111930705B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210416 |