一种基于双层索引的子图查询方法与流程

文档序号:18258004发布日期:2019-07-24 10:26阅读:171来源:国知局
一种基于双层索引的子图查询方法与流程

本发明属于计算机数据挖掘技术领域,尤其是涉及一种基于双层索引的子图查询方法。



背景技术:

图作为一种重要的数据结构,可以准确描述非结构化的关系和复杂数据,并且被大量应用在很多新兴技术领域中。例如,在社会网络中,图模型被用来描述海量人员或团体间的联系状况;在人工智能,知识图谱,模式匹配,程序流,Web站点和UML文档等领域均使用图模型来存储数据。

在图数据相关研究中,子图查询是其重要的研究方向。子图查询的目标是在图数据库中寻找包含查询图的所有数据图,并且查询结果要求得到查询图和数据结果图的一一对应关系。例如,生物医药学中,遍历蛋白质数据集后的结果,不仅要求判定是否包含病变细胞,而且必须获取到病变细胞及其化学键的对应关系,从而对病变细胞进行耐药性分析等。

对子图查询问题,科研人员已经进行了大量的理论和实验工作,并且取得了丰富的成果。但是,现存的子图查询的方法仅对静态查询进行处理,即只是对某个查询图进行的单次查询处理。随着新的图模式不断被挖掘和发现,图查询的兴趣也随着不断变化,导致查询流是以查询图集合的形式出现,而不在是进行单张图的查询处理。

同时,图数据库上的挖掘和查询还是比较困难的。这是因为随着图的规模(节点的个数)的增大,图的结构会越来越复杂。一个包含了n个节点的图,其表达形式可能有n!个。这样就导致了图挖掘及其查询中相关算法具有较高的计算复杂度,并且使得基于图的算法很难进行并行化;并且传统的数据挖掘算法无法直接应用到图数据库中,必须重新设计合适的算法。所以,子图查询的处理是个棘手的问题。

为了解决图查询问题,现存的子图查询方法都采用过滤和验证框架去加速查询处理。但是,Closure-Tree方法在过滤中使用类似子图同构检测去进行判定,使得该方法在过滤阶段花费了很大的代价。所以,选取高效的特征并且建立高效的索引成为子图查询中研究的重点。而第二类方法基于子结构或者频繁子结构建立索引。这类子方法在遍历索引时,利用现存频繁子结构挖掘技术,挖掘出频繁子结构集去创建索引。

第三类方法映射图拓扑结构信息到数字空间形成编码,基于编码建立索引,进行过滤和验证得到结果集。但是,在过滤和验证过程中,基于子结构和编码的查询方法没有将子结构的同构判定和编码对比进行有效利用,重复进行了判定和对比操作明内容。所以,必须寻找更优的索引机制去更好得生成索引,来加速查询效率。



技术实现要素:

本发明的目的是提供基于双层索引的子图查询方法,解决现存的子图查询方法仅对图数据库建立索引,并未提供查询流的信息,致使查询流的公共信息缺乏有效利用,存在查询效率低下的问题。

为了达到上述目的,本发明所采用技术方案是:

一种基于双层索引的子图查询方法,具体按照以下步骤依次实施:

步骤1,对图数据库和查询图集合同时提取频繁子树;

步骤2,利用现有图查询方法中的特征提取和索引建立方法,选取步骤1得到的频繁子树作为索引特征;

步骤3,在步骤2选取得到的索引特征的基础上对图数据库进行编码,并在查询图集和图数据库上分别建立索引,同时根据特征同构判定代价最小的目标,对建立的两个索引进行优化处理;

步骤4,遍历步骤3优化后的两个索引,在对比索引进行过滤后再进行验证,生成候选集;

步骤5,将步骤4生成的候选集与查询集进行子图同构验证,计算共享框架,得到结果图数据集。

或者另一种技术方案,一种基于双层索引的子图查询方法,具体按照以下步骤依次实施:

步骤1,对图数据库和查询图集合同时提取频繁子树;

步骤2,利用现有图查询方法中的特征提取和索引建立方法,选取查询图集合的图拓扑结构信息和步骤1得到的频繁子树组合后作为索引特征;

步骤3,在步骤2选取得到的索引特征的基础上对图数据库进行编码,并在查询图集和图数据库上分别建立索引,同时根据特征同构判定代价最小的目标,对建立的两个索引进行优化处理;

步骤4,遍历步骤3优化后的两个索引,在对比索引进行过滤后再进行验证,生成候选集;

步骤5,将步骤4生成的候选集与查询集进行子图同构验证,计算共享框架,得到结果图数据集。

本发明的技术方案,还具有以下特点:

步骤3中的编码如下进行:

给出一个图G=<V,E,L,l>,已知其频繁特征子树为preTree,其中,V 为顶集,E为边集,L是标记集,l是关联函数;图G的编码标示为T-Code(G),其定义为一组序列其中序列的定义如下:对于任意j, 1≤j≤|VG|,

i)对于1≤j≤|VpreTree|,aj包含了一个三元组(v_label,v_parent,e_label),其中,v_label表示该节点的标记,v_parent表示其父节点的位置,e_label 表示边的标记;

ii)对于j=|VpreTree|+1时,aj包含了一个三元组(0,-1,0)和一个边序集,其中三元组(0,-1,0)表示该节点为虚拟节点,而边序集中每个边序的三元组 (e_FromPos,e_ToPos,e_label)分别表示该边的起始节点,终止节点和边的标记;

iii)对于|VpreTree|+1<j≤|V|时,aj包含了一个三元组(v_label,v_parent, e_label)和一个附加边序集。

在所述步骤2中,图拓扑结构信息包括路径、图谱及拉普拉斯图谱。

本发明的有益效果是:本发明的基于双层索引的子图查询方法,针对查询流的子图查询,提出在图数据库和查询图集合上建立双索引的机制,双索引机制对查询图集合的信息进行了预处理,并且将查询图集合上的频繁子结构进行有效复用,减少了过滤和验证阶段中相同结构的同构判定次数,提高了查询效率,为子图查询处理提供了更加崭新的思路;本发明的基于双层索引的子图查询方法,还可组合频繁子树和图拓扑结构信息作为索引特征,去处理查询流的子图查询问题,在频繁子树的基础上,为每个节点编码中增加了图谱或者路径或者拉普拉斯图谱信息,将节点的边信息与图中局部拓扑结构信息相结合,增强了过滤条件,从而减少了候选集,组合频繁子树和图拓扑结构信息作为索引特征,为特征的选取提供了新的方法。

附图说明

图1是本发明基于双索引的子图查询方法的查询的流程图;

图2是本发明基于双索引的子图查询方法的频繁子树集合;

图3是本发明基于双索引的子图查询方法生成的索引树;

图4是本发明基于双索引的子图查询方法的索引优化图;

图5是本发明基于双索引的子图查询方法图的编码方法;

图6是本发明基于双索引的子图查询方法的图数据库和查询流索引的优化图。

具体实施方式

以下结合附图说明和具体实施例对本发明的技术方案作进一步地详细说明。

如图1所示,本发明的一种基于双层索引的子图查询方法,具体按照以下步骤依次实施:

步骤1,对图数据库和查询图集合同时提取频繁子树;

步骤2,利用现有图查询方法中的特征提取和索引建立方法,选取步骤 1得到的频繁子树作为索引特征(或者选取查询图集合的图拓扑结构信息和步骤1得到的频繁子树组合后作为索引特征);

步骤3,在步骤2选取得到的索引特征的基础上对图数据库进行编码,并在查询图集和图数据库上分别建立索引,同时根据特征同构判定代价最小的目标,对建立的两个索引进行优化处理;

步骤4,遍历步骤3优化后的两个索引,在对比索引进行过滤后再进行验证,生成候选集;

步骤5,将步骤4生成的候选集与查询集进行子图同构验证,计算共享框架,得到结果图数据集。

其中,编码的生成过程为:

给出一个图G=<V,E,L,l>,已知其频繁子树为preTree,其中,V为顶集,E为边集,L是标记集,l是关联函数;图G的编码标示为T-Code(G),其定义为一组序列其中序列的定义如下:对于任意j, 1≤j≤|VG|,

i)对于1≤j≤|VpreTree|,aj包含了一个三元组(v_label,v_parent,e_label),其中,v_label表示该节点的标记,v_parent表示其父节点的位置,e_label 表示边的标记;

ii)对于j=|VpreTree|+1时,aj包含了一个三元组(0,-1,0)和一个边序集,其中三元组(0,-1,0)表示该节点为虚拟节点,而边序集中每个边序的三元组 (e_FromPos,e_ToPos,e_label)分别表示该边的起始节点,终止节点和边的标记;

iii)对于|VpreTree|+1<j≤|V|时,aj包含了一个三元组(v_label,v_parent, e_label)和一个附加边序集;

根据拟设计的图编码定义,接着以图4中D1为例,具体讲解一下拟采用图编码的过程,其中假设挖掘出的频繁子树为图中粗体节点组成结构的 A-C-B。结合图5,首先根据频繁特征子树对图D1进行深度优先遍历,生成节点序列(b)。然后按照图的编码定义,首先对频繁特征子树进行编码,生成由节点标记,父节点位置和边标记组成的三元祖。注意:其中节点V1为开始节点,所以其父节点为0,表示为空无的一个根节点;且边标记记做“-”,表示无边存在;其次,在对增加的虚拟节点进行编码,为了统一格式,先生成三元组(0,-1,0),用来表示该节点为虚拟节点;再查找D1中频繁特征子树节点之间是否存在没有标记的边,发现存在一条从节点V1到V3之间的边没有标记,所以E={(1,3,a)};这样就完成虚拟节点的编码,最后再对图剩余的节点进行编码,遍历到原图中的节点v3,生成三元组(B,2,b)后,遍历不存在未标记的边。继续遍历下个节点V4,生成三元组(C,5,a);同时发现存在一未标记的边,生成E={(6,3,a)};遍历完所有节点,就得到了图D1的编码。

两种特征进行编码的方法为,以索引中的节点Vi的根,它与前面i-1个节点Vj(j<i)构成的区间图,其对应的图谱或者拉普拉斯图谱,或者路径数作为图拓扑结构信息编码添加到节点编码中。无论是图谱,路径数还是拉普拉斯图谱,如何选择对应属性的参数也是待研究的问题,例如,选择N层邻接矩阵,N层拉普拉斯邻接矩阵中前m大的特征值等等。拟开展项目按照子图查询方法中设定的实验进行测试,最终确定具体的参数。

在上述步骤2中,在挖掘出频繁子树后,但是并不是所有的频繁子树都可以作为索引特征的,因为很多子树的信息是冗余的,而使用所有频繁子树为特征会增加过滤的判定代价。索引特征选取是依据计算共享框架中共享最大化函数,提取部分频繁子树。这样处理的目的是最多地将子树同构判定进行复用。借鉴PrefIndex方法中设计的最大收益目标,拟开展项目将其应用到本发明中的索引特征选取过程。在图数据库中,任一子树ti的同构判定代价设为cost(ti),该子树对应的数据库或者查询流上的支持度为Gi,采用计算共享框架,单个频繁子树可以复用的同构判定代价和所有索引子树省略的代价可以表示为下面的公式(1)和公式(2)。

在公式(1)中,ti的同构判定省略的次数为(|Gi|-1)次,而(|Gi|-1)×cost(ti) 为ti的同构判定省略的代价。所有的频繁子树ti的省略代价可以通过公式(2) 求出。采用公式(2)的最大值,选取图数据库上的索引特征子树ti,并且选取的集合将图数据库上进行全部覆盖。

选取图数据库上的频繁特征后,接着对查询流特征进行选取。相似与公式(2),将图数据库特征的共享收益的基础上,重新设定对应的收益函数。设查询图集合的频繁子树为ti,其在图数据库上的支持为Gi,查询图集合中的支持度为Ci,收益函数设定如下。

在公式(3)中,将查询流和图数据库进行整体考虑,单个频繁子树在图数据库上的共享收益上,求得在其在图数据库和查询图集合的共享收益最大。公式(4)是在查询集合上索引特征集合的收益目标函数。公式(4)满足最大化,即可选取到索引特征。

然而,对于公式(2)和公式(4)中收益函数最大化的问题,已经证明是NP难问题。为了解决这个问题,拟开展项目拟用贪婪算法去解决该问题:首先选取最大的频繁子树为特征,接着求次大的。以此类推,找到可以覆盖所有查询图集合的频繁子树即选取完所有的索引特征。拟开展项目拟采用相同的方法对图数据库和查询图集合中的频繁子树进行筛选,得到了所有的特征子树集合。

步骤3的具体过程如下:

选取特征子树后,拟开展项目对图数据库和查询图集合建立索引。拟开展项目拟采用GPTree方法中提到的思路,将已得到的特征子树作为前缀进行图的编码,这样处理保证了该部分只需进行图数据库上和查询图集合上各遍历一次,在过滤和验证阶段如需再判定时,不用全部判定,而是从子图子树外的节点开始判定。图2给出图数据库上选取出的频繁子树集合。

在图2中列出了8个频繁子树,并且每个频繁项冒号后的数字为每个频繁子树的频繁度。不同于传统的倒序索引,拟开展项目将频繁子树合成一个索引树,从而相同的结构同构判定共享。拟开展项目的索引建立方案是按照包含关系,将特征子树进行建树。首先,根节点为空;然后,以边为单位,从一个边开始进行扩展。与边相邻的节点随着边的扩展,依次添加。如果子树没有小的父节点,直接从其最近的子树为节点进行扩展。直到所有特征都包含在索引中即完成图数据库上的索引建立。按照上述步骤,图3给出图2 对应的索引树。

在图3中,拟开展项目将包含关系的子树归结到一条分支上。通过对索引的合并,可以省略掉相同结构的判定次数,从而提高查询效率。按照索引建立方案,拟开展项目对图数据库和查询图集合分别建立索引。

为了减少重复的计算和存储,以及充分利用数据库索引中的信息,拟开展项目将图数据库的索引和查询图集合的索引进行共享优化。

图6是一个查询图集合索引的示例,它在图4中图数据库的索引树的基础上,将查询图集合的索引进行了合并。图中圆形结点为数据库索引中的频繁子图,用直线相连;方形结点为查询集合选取的索引子图,用虚线相连。图中带箭头的虚线表示两个节点之间有子图包含的关系。从图中可以看到与数据库索引的区别:索引中的每个结点会有不止一个父亲结点。这样设计的好处在于可以缩小查询索引的候选集大小。比如查询图中包含结构(A-B-C) 时,遍历查询索引到C,就通过索引找到包含的图数据库中的索引,然后,按照查询目标进行候选图的裁剪;同时,在验证阶段可以减少边(A-B)的判定次数。如果(A-B)的在查询图集合和图数据库上频繁度很高,那么可以同时减少的判定次数很多,从而提高子图查询的效率。

步骤4的具体过程如下:

建立数据库和查询图集合的双索引后,在进行过滤时,将查询图集合的索引首先遍历,通过查询图中存在的子树索引和图数据库索引中的索引进行比对,在图数据库索引中找到对应相同的子树索引,并且记录该频繁子树对应的支持集合;然后,将查询图包含的所有图数据库中的频繁子树对应的支持集合进行交操作,这样便得到了每个查询图的候选集合。

在两个索引遍历的对比过程中,为了保障查询图包含的特征能够在图数据库索引中找到对应的特征,拟开展项目在索引中将图数据库中的每条边进行了记录,形成图数据库中边的索引。假设查询图包含的特征不存在图数据库中的索引中,拟开展项目会继续遍历附加的边索引,经过边的比对,如果没有包含的边的话,则该查询图的候选图为空;否则,将边对应的支持集合进行交操作,得到该查询图的候选图集合。

步骤5的具体过程如下:

图数据库和查询图集合分别建立索引后,开始从查询图索引开始,对于每个查询索引节点中的编码,在图数据库的索引中从根节点开始遍历,查找对应的节点。对于查询图的索引子树,如果在图数据库索引中找到包含该子树的多个节点,则该节点中对应的支持集合作为查询图的初步候选集合。否则,返回上个图库索引中的父节点进行兄弟节点判定。如此,将查询图可能包含的索引子树遍历完后,再将所有的初步候选集合进行交操作,得到最终的结果集

通过过滤阶段的频繁子树的过滤后,每个查询图生成对应的候选图集合。接着,为了使用子树的评判结果,拟开展项目根据计算共享框架,将查询图和候选图以相同的子树为前缀。那么查询图剩余的节点,与候选图中的节点进行一一比对。如果剩余节点每个都能找到对应的节点,则该候选图为查询图的超图,添加该图到结果集中;否则,该候选图不可能是目标查询图的超图,该候选图被删除。遍历完所有候选图,便可以得到该查询图的结果集。

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