一种子图查询方法、装置及计算机可读存储介质与流程

文档序号:15144474发布日期:2018-08-10 20:17阅读:121来源:国知局

本发明涉及计算机技术领域,尤其涉及一种子图查询方法、装置及计算机可读存储介质。



背景技术:

图模型在现实世界中被广泛应用于如社交网络、城市道路网络、生物网络等众多领域。相较于传统数据模型,图以顶点表示实体,边表示实体之间的关系,能够更为有效的刻画一些结构较为复杂的数据对象。其中,在数据图中找到与查询图同构且满足用户设定的子图集合的子图搜索问题是图模型的热点问题之一。

然而,大多数经典算法仅用于无权图的搜索,对于大规模数据图的搜索效率并不理想。而随着各领域数据量的剧增,图规模越来越大。大图上的子图搜索问题的方法主要分为构建索引和并行化。尽管目前已有的大规模数据图上子图搜索算法取得了一定的进展,但均基于通用查询图模型进行搜索,对于现实生活中一些限定性的常见查询问题的执行效率并不高,甚至无法满足查询要求。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种子图查询方法、装置及计算机可读存储介质,旨在解决现有技术中用户输入的查询图包含特定的条件时,无法做到有效精确地对待处理图进行子图查询的问题。

为实现上述目的,本发明提供一种子图查询方法,所述方法包括:

获取用户输入的查询图;

确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构;

根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,并将剪枝处理后的图模型作为待查找图模型;

从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

优选地,所述获取用户输入的查询图之前,所述方法还包括:

对所述待处理图模型进行子图划分,以使得所述待处理图模型具有多个子图。

优选地,所述顶点的类型包括固定节点值和可变节点值;

相应地,所述根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,并将剪枝处理后的图模型作为待查找图模型,具体包括:

将所述待处理图模型中互为邻接顶点且顶点类型为固定节点值的顶点进行合并,生成固定节点值合并点;

将所述待处理图模型中互为邻接顶点且顶点类型为可变节点值的顶点进行合并,生成可变节点值合并点;

根据所述固定节点值合并点和所述可变节点值合并点生成所述待处理图模型的压缩图;

根据所述查询图中的顶点数量对所述压缩图进行第一剪枝处理;

根据所述查询图中顶点之间的权重对第一剪枝处理后的压缩图进行第二剪枝处理,并将第二剪枝处理后的压缩图作为待查找图模型。

优选地,所述根据所述查询图中的顶点数量对所述压缩图进行第一剪枝处理,具体包括:

统计所述压缩图的各固定节点值合并点中已被合并的固定类顶点数量;

获取所述查询图中的固定类顶点数量,删除所述压缩图中少于所述查询图中固定类顶点数量对应的固定节点值合并点;

统计所述压缩图的各可变节点值合并点中已被合并的可变类顶点数量;

获取所述查询图中的可变类顶点数量,删除所述压缩图中少于所述查询图中可变类顶点数量对应的可变节点值合并点。

优选地,所述根据所述查询图中顶点之间的权重对第一剪枝处理后的压缩图进行第二剪枝处理,具体包括:

将所述查询图中各固定类顶点之间的权重相加,得到所述查询图中各固定类顶点之间的第一总权重;

分别将所述压缩图的各固定节点值合并点中已被合并的固定类顶点之间的权重相加,获得所述压缩图中各固定节点值合并点的第二总权重;

将所述压缩图的各第二总权重分别与所述查询图的第一总权重进行比较,删除所述压缩图中小于所述第一总权重对应的固定节点值合并点。

优选地,所述根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理之前,还包括:

确定所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重;

根据所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重构建所述待处理图模型的第一索引;

结合所述第一索引对所述待处理图模型中的各顶点的邻接顶点进行统计,并根据统计结果构建所述待处理图模型的第二索引;

相应地,所述从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,具体包括:

结合所述第二索引从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

优选地,所述结合所述第二索引从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,具体包括:

根据所述查询图中的顶点数量、顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的固定节点值合并点进行内部子图搜索,获得与所述查询图相匹配的固定节点值合并点子图;

根据获取到的固定节点值合并点子图、所述查询图中的顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的可变节点值合并点进行内部子图搜索,获得与所述查询图相匹配的可变节点值合并点子图;

根据已获得的所述固定节点值合并点子图和可变节点值合并点子图确定目标子图。

可选地,所述从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图之后,所述方法还包括:

对所述目标子图进行展示。

此外,为实现上述目的,本发明还提出一种子图查询装置,所述装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的子图查询程序,所述子图查询程序配置为实现如上所述的子图查询的方法的步骤。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有子图查询程序,所述子图查询程序被处理器执行时实现如上所述的子图查询的方法的步骤。

本发明首先获取用户输入的查询图,在确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构后,再根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,以减少不必要的查询匹配次数,将剪枝处理后的图模型作为待查找图模型,最后从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,进而实现了当用户输入的查询图包含特定的查询条件时,快速有效地对待处理图进行子图查询,获得精确的子图查询结果。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的子图查询装置的结构示意图;

图2为本发明一种子图查询方法一实施例的流程示意图;

图3为本发明一实施例中待处理图模型的结构示意图;

图4为本发明一实施例中查询图的结构示意图;

图5为本发明一实施例中又一待处理图模型的结构示意图;

图6为本发明一实施例中满足搜索条件的子图;

图7为本发明一实施例中待处理图模型的压缩图;

图8为本发明一实施例中待处理图模型第二索引示意图;

图9为本发明一种子图查询方法又一实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的子图查询装置结构示意图。

如图1所示,该子图查询装置可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的子图查询装置结构并不构成对子图查询装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、用户接口模块、网络通信模块以及子图查询程序。

在图1所示的子图查询装置中,本发明子图查询装置中的处理器1001、存储器1005可以设置在子图查询装置中,所述子图查询装置通过处理器1001调用存储器1005中存储的子图查询程序,并执行以下操作:

获取用户输入的查询图;

获取所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并确定所述查询图的结构;

根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,并将剪枝处理后的图模型作为待查找图模型;

从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

对所述待处理图模型进行子图划分,以使得所述待处理图模型具有多个子图。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

将所述待处理图模型中互为邻接顶点且顶点类型为固定节点值的顶点进行合并,生成固定节点值合并点;

将所述待处理图模型中互为邻接顶点且顶点类型为可变节点值的顶点进行合并,生成可变节点值合并点;

根据所述固定节点值合并点和所述可变节点值合并点生成所述待处理图模型的压缩图;

根据所述查询图中的顶点数量对所述压缩图进行第一剪枝处理;

根据所述查询图中顶点之间的权重对第一剪枝处理后的压缩图进行第二剪枝处理,并将第二剪枝处理后的压缩图作为待查找图模型。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

统计所述压缩图的各固定节点值合并点中已被合并的固定类顶点数量;

获取所述查询图中的固定类顶点数量,删除所述压缩图中少于所述查询图中固定类顶点数量对应的固定节点值合并点;

统计所述压缩图的各可变节点值合并点中已被合并的可变类顶点数量;

获取所述查询图中的可变类顶点数量,删除所述压缩图中少于所述查询图中可变类顶点数量对应的可变节点值合并点。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

将所述查询图中各固定类顶点之间的权重相加,得到所述查询图中各固定类顶点之间的第一总权重;

分别将所述压缩图的各固定节点值合并点中已被合并的固定类顶点之间的权重相加,获得所述压缩图中各固定节点值合并点的第二总权重;

将所述压缩图的各第二总权重分别与所述查询图的第一总权重进行比较,删除所述压缩图中小于所述第一总权重对应的固定节点值合并点。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

确定所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重;

根据所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重构建所述待处理图模型的第一索引;

结合所述第一索引对所述待处理图模型中的各顶点的邻接顶点进行统计,并根据统计结果构建所述待处理图模型的第二索引;

相应地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

结合所述第二索引从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

根据所述查询图中的顶点数量、顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的固定节点值合并点进行内部子图搜索,获得与所述查询图相匹配的固定节点值合并点子图;

根据获取到的固定节点值合并点子图、所述查询图中的顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的可变节点值合并点进行内部子图搜索,获得与所述查询图相匹配的可变节点值合并点子图;

根据已获得的所述固定节点值合并点子图和可变节点值合并点子图确定目标子图。

进一步地,处理器1001可以调用存储器1005中存储的子图查询程序,还执行以下操作:

对所述目标子图进行展示。

本实施例首先获取用户输入的查询图,在确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构后,再根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,以减少不必要的查询匹配次数,将剪枝处理后的图模型作为待查找图模型,最后从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,进而实现了当用户输入的查询图包含特定的查询条件时,快速有效地对待处理图进行子图查询,获得精确的子图查询结果

基于上述硬件结构,提出本发明一种子图查询的方法实施例。

参照图2,图2为本发明一种子图查询方法第一实施例的流程示意图。

本实施例中,所述方法包括以下步骤:

步骤s10:获取用户输入的查询图;

需要说明的是,本实施例的执行主体为所述子图查询装置的处理器,所述查询图可以表征为用户针对某个待处理图模型所输入的查询条件;所述待处理图模型可以是城市地图或者社会关系图等数据图模型,本实施例以城市地图作为所述待处理图模型为例进行说明。

所述待处理图模型可由所述子图查询装置的显示屏展示,用户可使用所述子图查询装置的键盘来输入查询条件,即输入所述查询图。

具体地,在用户输入查询条件后,子图查询装置会对所述待处理图模型进行子图划分,以使得所述第一待处理图具有多个子图;

步骤s20:确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构;

可理解的是,参考图3,图3为所述待处理图模型的结构示意图,本实施例以某一城市的地图作为所述待处理图模型g;并以该城市中某个区域作为查询图,该区域环境设施条件为的具有酒店、超市、车站和娱乐场所。其中,上述酒店、超市和车站是基础设施,在图3中用a、b、c表示,电影院、游乐场是娱乐场所,用d、e表示。所述查询图中的顶点可以代表点a、b、c、d、e,所述查询图中的顶点之间的权重可以代表所述查询图中的顶点与顶点之间的距离的含义;例如本实施例中用户希望在这个城市中找到一个包括基础设施和娱乐场所的区域。其中,基础设施之间的邻近度不小于权重γf。

可理解的是,待处理模型图g表示地图网络,每个顶点代表一个地点,每个地点具有唯一的地点属性,两顶点之间的权重也称之为边权,即边权表示两个地点的邻近度,距离越小临近度越大。图4为查询图q,查询图q给出用户希望得到区域的结构,“*”代表娱乐场所中的任意一种,同时用户希望酒店和车站的邻近度(即,边ac权值)不小于0.2,基础设施之间的总邻近度(即,边ac、ab、bc边权和)不小于0.5。待处理模型图g中以顶点{1,5,6,9,10}构成的子图为满足用户要求的子图,即图5中的正方形图顶点表示满足用户要求的子图。数据图定义为g=<vg,eg,lg,wg>,其中vg表示待处理模型图g中顶点的集合(即顶点编号,如图中1、2、3、4、5、6),eg表示待处理模型图g中边的集,lg表示顶点的节点标签集合(即顶点集合vg到标签集合的映射,即图中的每个顶点都有相应的属性标签,属于哪个类型,例如属于还是属于基础设施还是属于娱乐场所),wg表示数据图中边的权值(即wg是待处理模型图g中和权值之间的映射,图中每条边都带有一个相应的权值)。顶点与节点标签具有唯一映射关系。查询图q如图4所示,定义为q=<vq,eq,lq,wq>,其中,vq表示查询图的顶点集合,eq表示查询图的边集合,lq表示查询图的节点标签集合wq表示查询图的边权。

参考图6,如图6所示,图6为满足搜索条件(即满足查询图q的条件)的子图m,m=<vm,em,lm,wm>,其顶点分为两种类型,这两种类型分别为固定节点值和可变节点值,即所述顶点类型包括固定节点值vf和可变节点值vn,也称之为固定节点值顶点vf和可变节点值顶点vn,即vm=vf∪vn,其中对于存在唯一节点标签li∈lm与之对应;对于则存在节点值集合与之对应。将具有上述顶点分类的图称为具有可变节点值的图。

步骤s30:根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,并将剪枝处理后的图模型作为待查找图模型;

可理解的是,本实施例的待处理模型图g表征为该城市地图,那么待处理模型图g相当于一个具有大量子图的数据图库,因此在查找与所述查询图相匹配的子图时,通过对所述待处理模型图g进行剪枝操作,可以减少查询匹配次数,提高查询速度。

进一步地,在所述步骤s30之前,还包括建立第一索引cp-index的步骤。具体步骤为:首先确定所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重;再根据所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重构建所述待处理图模型的第一索引;

进一步地,所述步骤s30包括生成所述待处理图模型g的压缩图的步骤,具体步骤为:将所述待处理图模型中互为邻接顶点且顶点类型为固定节点值的顶点进行合并,生成固定节点值合并点;将所述待处理图模型中互为邻接顶点且顶点类型为可变节点值的顶点进行合并,生成可变节点值合并点;根据所述固定节点值合并点和所述可变节点值合并点生成所述待处理图模型的压缩图。

具体地,通过入栈的方式建立第一索引cp-index。先将cp-index索引置为空,栈s置为空、将满足搜索条件的子图m置为空。从待处理模型图g中任取一个顶点入栈,依次存储搜索过程中当前顶点的异类节点值邻接点。

当栈s不为空的时候,将栈顶元素取出存入vi,将vi放入子图m中,访问vi所有未被访问过的邻接点ui。如果ui和vi不属于同类型节点,则ui入栈,否则的话,把ui的值赋给vi,重复上述步骤。然后根据子图m,以子图m中顶点的最小编号标识合并点,确定合并点节点值类型,计算m内部边权和,统计m顶点个数,更新cp索引。通过合并同类节点,生成所述待处理图模型g的压缩图如图7所示,并在此过程中构建第一索引cp-index。

可理解的是,图7中的圆圈v表示固定节点值合并点,圆圈u表示可变节点值合并点。

进一步地,在建立第一索引cp-index之后,本实施例还建立第二索引v-index:首先对所述待处理图模型中的各顶点的邻接顶点进行统计,并根据统计结果构建所述待处理图模型的第二索引。具体地,如参考图8所示,第二索引v-index用来描述第一索引cp-index中每个固定节点值合并点代表的子图中不同顶点的异类邻接点信息。索引的键用v表示,用l表示已被合并的顶点的类型,索引的项由2个有序列表组成,第1列用v表示存储合并点编号,第2列表示异类邻接点编号集合,如果有异类邻接点则直接写编号,如果没有,用0表示。

进一步地,所述步骤s30包括对所述压缩图进行剪枝处理的步骤,根据用户每次提供的查询图q和权重阈值γf对第一索引cp-index生成的压缩图进行剪枝处理,该剪枝处理包括两个小步骤,即分为第一剪枝处理和第二剪枝处理;

所述第一剪枝处理具体为:

首先,统计所述压缩图的各固定节点值合并点中已被合并的固定类顶点数量;然后获取所述查询图中的固定类顶点数量,删除所述压缩图中少于所述查询图中固定类顶点数量对应的固定节点值合并点;统计所述压缩图的各可变节点值合并点中已被合并的可变类顶点数量;获取所述查询图中的可变类顶点数量,最后删除所述压缩图中少于所述查询图中可变类顶点数量对应的可变节点值合并点。

可理解的是,结合图5和图7,图7为本实施例中所述待处理图模型g的压缩图,压缩图7中的固定节点值合并点1中已被合并的固定类顶点一共有5个,它们分别是图5中编号1顶点、编号2顶点、编号4顶点、编号5顶点、编号6顶点。压缩图7中的固定节点值合并点15中已被合并的固定类顶点一共有3个,它们分别是图5中编号15顶点、编号16顶点、编号17顶点。压缩图7中的固定节点值合并点7中已被合并的固定类顶点一共有2个,它们分别是图5中编号7顶点和编号8顶点。而参考图4,查询图q中的固定类顶点数量为3个,那么进行第一剪枝处理,删除压缩图7中的固定节点值合并点7,即完成第一剪枝处理;

所述第二剪枝处理具体为:首先将所述查询图中各固定类顶点之间的权重相加,得到所述查询图中各固定类顶点之间的第一总权重;然后分别将所述压缩图的各固定节点值合并点中已被合并的固定类顶点之间的权重相加,获得所述压缩图中各固定节点值合并点的第二总权重;将所述压缩图的各第二总权重分别与所述查询图的第一总权重进行比较,最后删除所述压缩图中小于所述第一总权重对应的固定节点值合并点。最后将第二剪枝处理后的压缩图作为待查找图模型。

可理解的是,压缩图7中的可变节点值合并点9中已被合并的固定类顶点有3个,即图5中编号9顶点、编号11顶点和编号10顶点。压缩图7中的可变节点值合并点3中已被合并的固定类顶点只有1个,即对应图5中编号3顶点。参考图4,查询图q中的可变类顶点数量为2个,删除压缩图7中的可变节点值合并点3,即完成了第二剪枝处理,最后将第二剪枝处理后的压缩图作为待查找图模型。

需要说明的是,本实施例中的附图3是一个包含数量较少子图的数据图模型,将其作为待处理模型图g目的是方便举例说明以上处理流程;而实际上待处理模型图g是一个子图数量非常庞大的数据图模型,对于处理庞大的数据图模型的具体处理流程应和以上各步骤一致。

步骤s40:从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

在具体实现中,结合所述第二索引从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,即对应图9,所述步骤s40具体包括:

步骤s401:根据所述查询图中的顶点数量、顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的固定节点值合并点进行内部子图搜索,获得与所述查询图相匹配的固定节点值合并点子图;

也就是说首先根据第二索引vin-index对剪枝处理后的压缩图对固定节点值顶点进行匹配,对匹配成功的子图进行阈值判断,其中所述步骤s401分为三个阶段:

第一阶段为:选取图4即查询图q固定节点子图中出现次数最少的节点值l,利用v-index对进行过剪枝操作得到的压缩图的每个固定节点值合并点表示的子图f进行遍历,并选取节点值为l的点vi。对于每个vi,将vi中对应的子图m中已匹配的子图mc置为空,权重wc置为0。

第二阶段为:如果所述mc的顶点个数小于q中固定节点值顶点的个数,则依次遍历其每个邻接点ui,先匹配vi和ui之间的边,如果存在则放弃该节点,如果不存在,则将e(vi,ui)的权值加入wc中,并将ui加入到已匹配部分的子图mc中去,然后将ui的值赋给vi,继续循环。

第三阶段为:判断合并点的固定节点个数是否达到查询图的相应的固定节点个数,如果达到,就对顶点之间的权重大小进行判断。从而对完成匹配的固定节点值顶点扩展到可变节点值顶点区域进行匹配。

对每个vi都进行上述第一阶段到第二阶段的操作,则可得出多个匹配的子图m。当mc中的固定节点个数满足查询图q中的固定节点个数,则判断各子图mc的顶点之间的权重,如果权重大于γf,也就是达到查询图的相应区域规模,则进行下一步处理。

进一步的,在所述步骤s401之后,还需进行:

步骤402:根据获取到的固定节点值合并点子图、所述查询图中的顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的可变节点值合并点进行内部子图搜索,获得与所述查询图相匹配的可变节点值合并点子图;根据已获得的所述固定节点值合并点子图和可变节点值合并点子图确定目标子图。

具体地,对满足步骤401中的已部分匹配的子图mc的可变节点值合并点内部进行子图搜索。在步骤401的第三阶段中已经得到了满足查询图q中固定节点条件的子图mc,利用第二索引v-index遍历每一个有可变节点值邻接点的点vj,如果mc节点值的顶点个数小于查询图q中节点值顶点的个数,对其进行步骤401中第二阶段的操作,直到已匹配所有节点的子图mc中节点的个数等于查询图q中的个数,将满足具有可变节点值的子图搜索条件的子图放入集合m*,对所有的子图m进行上述操作,然后返回m*的结果即为所求的目标子图。

最后对查找到目标子图进行展示。

在顶点规模相同的情况下,本实施例以上步骤中的双索引在构建效率上较两个经典算法spath算法及rwm算法有较大提高;同时,本实施例在子图搜索时间上以上比两个经典算法均更快,并且经典算法的运行时间受顶点规模影响较大,而本实施例在顶点规模增大的情况下,算法时间增长速度较慢。

值得一提的是,在可选节点值标签种类增多的情况下,经典算法无法直接解决具有可变节点值的子图搜索问题,因此本实施例根据查询图q列举出所有可能的组合方式,并进行多次子图搜索,相较经典算法,本实施例的以上步骤优势更加明显。

本实施例首先获取用户输入的查询图,在确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构后,再根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,以减少不必要的查询匹配次数,将剪枝处理后的图模型作为待查找图模型,最后从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,进而实现了当用户输入的查询图包含特定的查询条件时,快速有效地对待处理图进行子图查询,获得精确的子图查询结果。

此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有子图查询程序,所述子图查询程序被处理器执行时实现如下操作:

获取用户输入的查询图;

获取所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并确定所述查询图的结构;

根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,并将剪枝处理后的图模型作为待查找图模型;

从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

对所述待处理图模型进行子图划分,以使得所述待处理图模型具有多个子图。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

将所述待处理图模型中互为邻接顶点且顶点类型为固定节点值的顶点进行合并,生成固定节点值合并点;

将所述待处理图模型中互为邻接顶点且顶点类型为可变节点值的顶点进行合并,生成可变节点值合并点;

根据所述固定节点值合并点和所述可变节点值合并点生成所述待处理图模型的压缩图;

根据所述查询图中的顶点数量对所述压缩图进行第一剪枝处理;

根据所述查询图中顶点之间的权重对第一剪枝处理后的压缩图进行第二剪枝处理,并将第二剪枝处理后的压缩图作为待查找图模型。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

统计所述压缩图的各固定节点值合并点中已被合并的固定类顶点数量;

获取所述查询图中的固定类顶点数量,删除所述压缩图中少于所述查询图中固定类顶点数量对应的固定节点值合并点;

统计所述压缩图的各可变节点值合并点中已被合并的可变类顶点数量;

获取所述查询图中的可变类顶点数量,删除所述压缩图中少于所述查询图中可变类顶点数量对应的可变节点值合并点。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

将所述查询图中各固定类顶点之间的权重相加,得到所述查询图中各固定类顶点之间的第一总权重;

分别将所述压缩图的各固定节点值合并点中已被合并的固定类顶点之间的权重相加,获得所述压缩图中各固定节点值合并点的第二总权重;

将所述压缩图的各第二总权重分别与所述查询图的第一总权重进行比较,删除所述压缩图中小于所述第一总权重对应的固定节点值合并点。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

确定所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重;

根据所述待处理图模型中各顶点的编号、各顶点的类型、以及各顶点之间的权重构建所述待处理图模型的第一索引;

结合所述第一索引对所述待处理图模型中的各顶点的邻接顶点进行统计,并根据统计结果构建所述待处理图模型的第二索引;

相应地,所述子图查询程序被处理器执行时还实现如下操作:

结合所述第二索引从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:

根据所述查询图中的顶点数量、顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的固定节点值合并点进行内部子图搜索,获得与所述查询图相匹配的固定节点值合并点子图;

根据获取到的固定节点值合并点子图、所述查询图中的顶点之间的权重以及查询图的结构,并结合所述第二索引分别对所述待查找图模型中的可变节点值合并点进行内部子图搜索,获得与所述查询图相匹配的可变节点值合并点子图;

根据已获得的所述固定节点值合并点子图和可变节点值合并点子图确定目标子图。

进一步地,所述子图查询程序被处理器执行时还实现如下操作:对所述目标子图进行展示。

本实施例首先获取用户输入的查询图,在确定所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重,并获取所述查询图的结构后,再根据所述查询图中的顶点数量、各顶点的类型以及顶点之间的权重对待处理图模型进行剪枝处理,以减少不必要的查询匹配次数,将剪枝处理后的图模型作为待查找图模型,最后从所述待查找图模型中查找与所述查询图的结构相匹配的目标子图,进而实现了当用户输入的查询图包含特定的查询条件时,快速有效地对待处理图进行子图查询,获得精确的子图查询结果。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1