快速查询同构子图的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:36301973 阅读:16 留言:0更新日期:2023-01-13 10:18
本申请提供了一种快速查询同构子图的方法、装置、电子设备及存储介质,方法包括:获取一个目标图和若干个查询图,目标图为待测程序的程序依赖图,若干个查询图为若干个代码片段的程序依赖图;利用局部敏感哈希算法在目标图中定位出所有与查询图的查询起始节点匹配的目标起始节点,将一对匹配的查询起始节点和目标起始节点确定为一个起始节点克隆对;基于所有起始节点克隆对对目标图和查询图并行地执行切片子图匹配,将目标图与查询图中所有匹配的节点及相应的边构成的子图确定为同构子图。通过局部敏感哈希算法快速匹配起始节点克隆对,并基于起始节点克隆对并行执行切片子图匹配,大大提高了同构子图查询的效率。大大提高了同构子图查询的效率。大大提高了同构子图查询的效率。

【技术实现步骤摘要】
快速查询同构子图的方法、装置、电子设备及存储介质


[0001]本公开主要涉及计算机技术应用领域,特别涉及一种快速查询同构子图的方法、装置、电子设备及存储介质。

技术介绍

[0002]子图匹配是一种常用的图查询操作,其核心概念在于,对于一个目标图G和给定的查询图Q,查询出所有Q在G中的子图同构映射。在代码克隆检测
中,程序依赖图由于包含了源代码的语法信息,常被用于表征代码特征。一旦获得了待测程序的程序依赖图,就可以使用子图匹配算法来寻找克隆代码。然而现有技术很大的一个局限性在于,当作为匹配目标的子图库(查询图库)容量较大时,或者当待测程序的程序依赖图包含大量的节点和边时,子图匹配面临着极高的计算负荷和时间开销问题。因此,如何快速地进行同构子图的查询已经成为目前本领域技术人员面临的一个技术难题。

技术实现思路

[0003]本申请公开的实施例旨在提供一种快速查询同构子图的方法、装置、电子设备及存储介质,以解决上述问题。
[0004]在本公开的第一方面中,提供了一种快速查询同构子图的方法,包括以下步骤:获取一个目标图和若干个查询图,所述目标图为待测程序的程序依赖图,所述若干个查询图为若干个代码片段的程序依赖图;利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点,将一对匹配的所述查询起始节点和所述目标起始节点确定为一个起始节点克隆对;基于所有所述起始节点克隆对对所述目标图和所述查询图并行地执行切片子图匹配,其中,对于任一所述起始节点克隆对,所述切片子图匹配包括:同时从所述目标起始节点和所述查询起始节点开始对所述目标图和所述查询起始节点所在的查询图进行切片,寻找所述目标图与所述查询起始节点所在的查询图中匹配的其余节点;将所述目标图与所述查询起始节点所在的查询图中所有匹配的节点及相应的边构成的子图确定为同构子图。
[0005]可选地,所述利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点,包括以下步骤:将所述目标图中的节点通过预设的局部敏感哈希函数映射到多个哈希桶内;获取所有所述查询图的查询起始节点,并分别对所述查询起始节点通过所述预设的局部敏感哈希函数计算待查询桶号;计算所述查询起始节点与所述待查询桶号对应的所述哈希桶内的所述目标图中的节点之间的距离;
将距离小于预设阈值的所述目标图中的节点标记为目标起始节点。
[0006]可选地,所述基于所有所述起始节点克隆对对所述目标图和所述查询图并行地执行切片子图匹配,包括以下步骤:为每一个所述起始节点克隆对创建一个执行切片子图匹配的子任务;将所述起始节点克隆对中的查询起始节点所在的查询图和所述目标图下发至所述子任务;并行地执行所有所述子任务。
[0007]可选地,所所述同时从所述目标起始节点和所述查询起始节点开始对所述目标图和所述查询起始节点所在的查询图进行切片,寻找所述目标图与所述查询起始节点所在的查询图中匹配的其余节点,包括以下步骤:分别将所述目标起始节点和所述查询起始节点作为所述目标图和所述查询起始节点所在的查询图的切片点;从所述切片点开始,基于相同切片规则同时对所述目标图和所述查询图执行切片,逐步获取与所述目标起始节点和所述查询起始节点存在控制或数据依赖关系的其余节点;对所述其余节点进行相似度比较,从中确定匹配的节点对,直到切片结束。
[0008]可选地,所述利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点之前,还包括以下步骤:获取所述目标图的节点集合和所述若干个查询图的所有节点集合;对所述目标图的节点集合和所述若干个查询图的所有节点集合计算交集;基于所述交集,去除所述目标图和所述若干个查询图中不存在于所述交集中的节点。
[0009]在本公开的第二方面中,提供了一种快速查询同构子图的装置,包括:图获取单元,用于获取一个目标图和若干个查询图,所述目标图为待测程序的程序依赖图,所述若干个查询图为若干个代码片段的程序依赖图;起始节点克隆对确定单元,用于利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点,将一对匹配的所述查询起始节点和所述目标起始节点确定为一个起始节点克隆对;切片子图匹配单元,用于基于所有所述起始节点克隆对对所述目标图和所述查询图并行地执行切片子图匹配,其中,对于任一所述起始节点克隆对,所述切片子图匹配包括:同时从所述目标起始节点和所述查询起始节点开始对所述目标图和所述查询起始节点所在的查询图进行切片,寻找所述目标图与所述查询起始节点所在的查询图中匹配的其余节点;将所述目标图与所述查询起始节点所在的查询图中所有匹配的节点及相应的边构成的子图确定为同构子图。
[0010]本公开的实施例提供的技术方案可以有以下有益效果:通过局部敏感哈希算法在目标图中快速定位与查询图的查询起始节点匹配的目标起始节点,并基于起始节点克隆对并行执行切片子图匹配,不仅能够以节点为粒度进行
精确的同构子图查询,还能够大大减少节点间匹配的次数,提高子图查询的速度。
[0011]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
[0012]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0013]图1为根据一示例性实施例示出的一种快速查询同构子图的方法流程图;图2为根据一示例性实施例示出的一种快速查询同构子图的方法流程图;图3为根据一示例性实施例示出的一种快速查询同构子图的方法流程图;图4为根据一示例性实施例示出的一种快速查询同构子图的方法流程图;图5为根据一示例性实施例示出的一个目标图和两个查询图的示意图;图6为根据一示例性实施例示出的一种快速查询同构子图的装置的结构示意图;图7为根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
[0014]下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0015]在本公开的实施例的描述中术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0016]实施例一:参照图1,本公开的实施例提出了本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种快速查询同构子图的方法,其特征在于,包括以下步骤:获取一个目标图和若干个查询图,所述目标图为待测程序的程序依赖图,所述若干个查询图为若干个代码片段的程序依赖图;利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点,将一对匹配的所述查询起始节点和所述目标起始节点确定为一个起始节点克隆对;基于所有所述起始节点克隆对对所述目标图和所述查询图并行地执行切片子图匹配,其中,对于任一所述起始节点克隆对,所述切片子图匹配包括:同时从所述目标起始节点和所述查询起始节点开始对所述目标图和所述查询起始节点所在的查询图进行切片,寻找所述目标图与所述查询起始节点所在的查询图中匹配的其余节点;将所述目标图与所述查询起始节点所在的查询图中所有匹配的节点及相应的边构成的子图确定为同构子图。2.如权利要求1所述的快速查询同构子图的方法,其特征在于,所述利用局部敏感哈希算法在所述目标图中定位出所有与所述查询图的查询起始节点匹配的目标起始节点,包括以下步骤:将所述目标图中的节点通过预设的局部敏感哈希函数映射到多个哈希桶内;获取所有所述查询图的查询起始节点,并分别对所述查询起始节点通过所述预设的局部敏感哈希函数计算待查询桶号;计算所述查询起始节点与所述待查询桶号对应的所述哈希桶内的所述目标图中的节点之间的距离;将距离小于预设阈值的所述目标图中的节点标记为目标起始节点。3.如权利要求1所述的快速查询同构子图的方法,其特征在于,所述基于所有所述起始节点克隆对对所述目标图和所述查询图并行地执行切片子图匹配,包括以下步骤:为每一个所述起始节点克隆对创建一个执行切片子图匹配的子任务;将所述起始节点克隆对中的查询起始节点所在的查询图和所述目标图下发至所述子任务;并行地执行所有所述子任务。4.如权利要求1所述的快速查询同构子图的方法,其特征在于,所述同时从所述目标起始节点和所述查询起始节点开始对所述目标图和所述查询起始节点所在的查询图进行切片,寻找所述目标图与所述查询起始节点所在的查询图中匹配的其余节点,包括以下步骤:分别将所述目标起始节点和所述查询起始节点作为所述目标图和所述查询起始节点所在的查询图的切片点;从所述切片点开始...

【专利技术属性】
技术研发人员:张涛张弛杜玉洁周雅飞
申请(专利权)人:北京安普诺信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1