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

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

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


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

技术介绍

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

技术实现思路

[0003]本申请公开的实施例旨在提供一种快速查询同构子图的方法、装置、电子设备及存储介质,以解决上述问题。
[0004]在本公开的第一方面中,提供了一种快速查询同构子图的方法,包括以下步骤:获取一个目标图和若干本文档来自技高网...

【技术保护点】

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

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

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

1