CN104392010B - 一种子图匹配的查询方法 - Google Patents

一种子图匹配的查询方法 Download PDF

Info

Publication number
CN104392010B
CN104392010B CN201410812269.XA CN201410812269A CN104392010B CN 104392010 B CN104392010 B CN 104392010B CN 201410812269 A CN201410812269 A CN 201410812269A CN 104392010 B CN104392010 B CN 104392010B
Authority
CN
China
Prior art keywords
node
query
matching
tree
back end
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.)
Expired - Fee Related
Application number
CN201410812269.XA
Other languages
English (en)
Other versions
CN104392010A (zh
Inventor
金福生
杨艺峰
颜震
薛野
韩翔宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201410812269.XA priority Critical patent/CN104392010B/zh
Publication of CN104392010A publication Critical patent/CN104392010A/zh
Application granted granted Critical
Publication of CN104392010B publication Critical patent/CN104392010B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种子图匹配的查询方法,属于数据库和分布式图分析处理领域;该方法包括以下步骤:首先,修改查询图为查询树;其次,对数据图节点按照查询树从叶节点到根节点逐层依次匹配,得到匹配计数,并发送计数给相邻节点,直到匹配根节点;再次,数据图节点按照查询树从根节点到叶节点逐层依次发送匹配要求,直到匹配要求发送至叶节点;最后,数据图节点按照查询树从叶节点到根节点的顺序依次向查询要求的来源发送子树匹配结果。对比现有分布式方法,本发明在通信量和计算代价方面都有很大的提高。

Description

一种子图匹配的查询方法
技术领域
本发明涉及一种查询方法,特别涉及一种在分布式系统中处理大规模图数据的子图匹配的查询方法,属于数据库和分布式图分析处理领域。
背景技术
图模型在很多领域有重要的应用,如社交网络、Web网络、规划问题、生物信息等方面。随着计算机、网络的广泛应用,大量的图模型数据也呈现指数级的增长。2013年,facebook统计其每天新产生的数据量已达到500TB。与此同时,大多数图模型处理的方法通常复杂度远高于O(n),如,最常见的最短路方法,其最常见的方法floyd的计算复杂度是O(n^3)。在大规模的数据量下,单机处理这样的计算复杂度是远远不能接受的。也就是说,在大数据的背景下图计算问题大都要在分布式系统上进行处理。
子图匹配问题由来已久,它在图模型中有广泛的应用。比如化学分子结构中的比对问题、生物蛋白质的匹配问题,以及近年来最为广泛的社交网络中的模式匹配问题等等。但是由于子图匹配问题本身是NP问题,其问题本身复杂度高、常见方法性能差,所以在很多领域的应用中通常存在很大的效率问题。其中尤以匹配顺序、冗余的中间结果等引发的效率低下问题最为普遍。
本发明处理的子图匹配问题是在有标签(label)的图上进行的,下面给出了问题的相关定义。为了定义子图匹配问题,首先需要给出同构图的概念。
定义1同构图
给定图G(V,E,L)和G0(V0,E0,L0),这里V、V0表示节点集,E、E0表示边集,L、L0表示每个节点所属的分类(标签)。如果存在映射F:V→V0,对于L(v)=L0(F(v)),且对于则称G和G0是同构的图。
在本文中本发明统一使用u表示查询图节点,v表示数据图节点,大写字母A-Z表示节点的分类(标签/label)。
定义2子图匹配
子图匹配问题定义如下:给定数据图G(V,E,L),对于一个查询图Q(V′,E′,L′),对于数据图中的任意子图G0,若G0和Q同构,则G0为子图匹配的一个查询结果。子图匹配的目的是在数据图G中找到所有和Q同构的子图。
可以发现,对于子图匹配而言,对于大部分的查询,其查询结果都会非常的多。子图匹配问题也是经证明后属于NP的问题,也就是说即便数据图很小,对于特定的查询,全部结果的数据规模是不可接受的。为了更好的理解子图匹配问题,这里给出一些例子。例如,在有机高分子、蛋白质中寻找相似的同构子结构;在社交网络中寻找特定的模型用以数据挖掘;在程序的调用图、流程图里查找相似的模块等等。
目前对于子图匹配的方法主要可分为三类,其一是单机的方法,其方法主要思路是首先对查询图节点给出一个顺序,接下来按照顺序依次匹配,每匹配完一个节点后,根据情况递归匹配下一个查询图节点,直到能够完整匹配全部的查询图节点。对于单机方法而言其本身的方法性能良好,但是对于处理大规模的数据图存在很大的问题。即当判定特定数据边是否存在的时候,因为内存无法存储完整的数据图,需要额外的访问外存或进行网络通信,这样会造成很大的额外资源开销。
另一种方法是分布式方法,其中微软提出的方法主要思路是首先将查询图拆分成由一个父节点和若干子节点的“小枝”结构,然后在分布式的环境下对每个小枝进行匹配,得到结果后进行网络通信,之后对中间结果进行类似数据库表连接的操作,最后得到完整的匹配结果。然而对于这种方法,其普遍存在小枝的顺序问题,即不同小枝顺序会对查询效率产生很大的影响。
另外,还可以将现有的单机方法与以节点为中心的分布式计算模型相结合。即对于每个查询图节点,在每一轮的迭代中进行匹配,之后将中间结果发送给数据图节点的邻接点。但是这样的实现存在迭代次数过多、中间结果较大、额外通信判定数据边等问题。最终导致其查询结果效率较低。
发明内容
本发明是为解决现有分布式子图匹配方法查询效率较低的问题,提出了一种在分布式系统中处理大规模图数据的子图匹配的查询方法。
首先,给出本发明所使用的相关定义。
定义3查询树
给定查询图,如果其中存在由节点u1、u2、……、un构成的环,那么将其中一个节点ui拆分为ui和u′i,这样就可以消除u1、u2、……、un构成的环。如果查询图经过多次拆分节点的操作后不存在环,将处理过的查询图称为查询树。
如图1所示,对于查询图(a),图中存在由节点u1、u2、u3、u6构成的环和由节点u1、u3、u4、u7构成的环。然后分别对这两个环中的点u6、u7执行拆点操作,得到图1(c)所示的查询树。
定义4关键节点集
对于查询树的每一棵子树,如果存在两个节点u和u′分别在子树内部和子树外部,且它们在拆分操作前是同一个查询节点,则节点u属于该子树的关键节点集。
在具体实现的过程中,子树的根节点也是在合并过程中必须要存在的,所以将查询子树的根节点也添加入每个查询子树的关键节点集。
如图1所示,当查询图(a)被拆分后得到查询树(c)后,以u2为根节点的子树为例,根据关键节点集的定义,u6和u′6是被拆分的节点,并且分别在这棵子树的内外,所以u6属于u2的关键节点集。依此类推可以得到u1的关键节点集为{u1},u2的关键节点集为{u2,u6},u3的关键节点集为{u3,u′6,u7},u4的关键节点集为{u4,u′7},u5的关键节点集为{u5},u6的关键节点集为{u6},u7的关键节点集为{u7},u′6的关键节点集为{u′6},u′7的关键节点集为{u′7}。
定义5独立节点
查询树中的叶子节点。
定义6非独立节点
查询树中的除独立节点外的所有节点。
定义7数据节点
数据图中的一个节点。
定义8计算节点
在迭代过程开始前被指定的节点集和在迭代过程中接收上一轮迭代的计算结果的节点集。
定义9独立子节点
在树中,和节点u直接相邻的子节点集中的叶子节点部分是u的独立子节点。
定义10非独立子节点
在树中,和节点u直接相邻的子节点集中的非叶子节点部分是u的非独立子节点。
定义11数据库自然连接操作
若两张表有相同的列,则以相同的列为基准进行合并。若没有相同的列,则合并时直接使用两列数据的笛卡尔积。
本发明是通过下述技术方案实现的:
一种子图匹配的查询方法,包括以下步骤:
一、修改查询图为查询树;
二、数据图节点按照查询树从叶节点到根节点逐层依次匹配,得到匹配计数,并发送计数给相邻节点,直到匹配根节点;
三、数据图节点按照查询树从根节点到叶节点逐层依次发送匹配要求,直到匹配要求发送至叶节点;
四、数据图节点按照查询树从叶节点到根节点的顺序依次向查询要求的来源发送子树匹配结果。
有益效果
与现有的分布式方法相比,本发明方法存在以下优势:
1.使用树形查询保证顺序和查询的稳定性。
2.多次迭代匹配过程中过滤了无效的中间结果,减少内存占用和通信代价。
3.使用索引和计数的方法,减少通信代价和内存占用。
与单机方法在分布式环境中的实现相比,本发明方法存在以下优势:
1.使用自底向上的树形匹配方法,在匹配过程中过滤无效中间结果数据,减少通信量和内存占用。
2.从查询图叶节点自底向上按层次匹配合并,减少了超步个数,节省了同步时间。
3.使用拆分节点的方式生成查询树,无需额外的迭代判断一些数据边是否存在,减少超步个数和通信代价。
4.使用索引和计数的方法,减少中间结果数据规模,节省通信代价。
总的来说,本发明在分布式的模型上给出了一种新的解决子图匹配问题的方法,与现有的分布式子图匹配方法相比,本发明利用对查询树代价估计、使用关键节点集索引计数、压缩通信量和简化计算这几个方法,在通信量和计算代价方面都有很大的提高。与传统单机方法相比,本方法能够很好的处理大规模的数据图。
附图说明
图1为本发明实施例查询图、查询树以及数据图示例。
图2是本发明方法整体流程示意图。
图3是本发明实施例数据图节点按照查询树自下向上计数过程流程示意图。
图4是本发明实施例数据图节点索引计数流程示意图。
图5是本发明实施例数据图节点按照查询树自上而下发送查询要求和自下而上发送匹配结果的流程示意图。
具体实施方式
下面将结合附图和实施例对本发明加以详细说明,同时也叙述了本发明技术方案解决的技术问题及有益效果,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。
如图2所示,本发明方法包括以下几个主要的步骤:
一、修改查询图为查询树,分布查询图以及数据图;
二、数据图节点按照查询树自下而上的方向传递匹配结果计数;
三、数据图节点按照查询树从根节点到叶节点逐层依次发送匹配要求,直到匹配要求发送至叶节点;
四、数据图节点按照查询树从叶节点到根节点的顺序依次向查询要求的来源发送子树匹配结果。
下面具体说明各步骤的处理过程时,将步骤三、步骤四合并为一步进行说明:一、修改查询图为查询树,并向所有数据图节点发送查询树
本步骤主要完成将查询图转化为查询树,并向所有数据图节点发送查询树的工作。由于数据图的分布不在本发明讨论范围,因而,可以认为,实施本发明方法前,数据图已经被分布到集群中,并且可以被获知。
本部分结合附图给出具体实施例来说明如何修改查询图为查询树。
本方法将查询图拆分为树的过程中主要有两条原则,首先是让被拆分的节点尽可能的少,其次是让每个节点单元子节点尽可能少。
由于被拆分的查询节点需要在后续计算的时候进行合并操作,所以关键节点集的匹配结果是必须发送的。如果能够保证被拆分节点尽可能少,则其对应的关键节点集合就小,那么中间结果的数据量也相应的减少,这样可以提高效率。每个节点的子节点尽可能少的原因是子节点的个数决定它在进行匹配时候的递归深度,它在进行匹配时递归的深度越小,迭代速度越快。
但是,由于上述原则无法在大规模数据图中进行精确度量,所以本发明这里根据数据图的特征给出简单的估值。通过使用估值来确定如何修改查询图以提高计算效率。而对于参数的选取,本发明选取数据图节点平均度数为参数对数据图通信量进行简单估算:
其中deg表示数据图节点的平均度数,cnt(u)表示查询树中节点u和第i个查询节点的距离,即从u到第i个查询节点所需要经过的边数,keyseti表示以第i个查询节点为根的查询子树的关键节点集,n为查询图中的节点个数。
在这里对于每个keyseti,在最差情况下,对于uj∈keyseti,其最多的匹配结果数为那么keyseti的最多匹配结果就是最后将所有关键节点集的最多匹配结果个数加和得到最后的最差匹配结果个数
本发明中在节点之间传递的是关键节点集,所以关键节点集的最大的匹配结果个数对应最差的通讯代价。
与上式类似,同样也给出一个对于每个节点其计算量的估值CalVal:
其中deg表示数据图节点的平均度数,cnt(u)表示节点u和第i个查询节点的距离,即从u到第i个查询节点所需要经过的边数,childi表示以第i个查询节点为根的查询子树的子节点集,n为查询图中的节点个数。
与上面类似,在这里对于每个childi,在最差情况下,对于uj∈childi,其最多的匹配结果数为那么childi的最多匹配结果就是最后将所有子节点的最多匹配结果个数加和得到最后的最多匹配结果个数由于本发明在匹配的过程中要将子节点的匹配结果进行合并得到父节点的匹配结果,所以子节点的最大匹配个数就是父节点的最大计算量。
对于上述预估值本发明优先保证通信量最小,其次保证计算量最小。
下面是本发明给出的查询树的构造方法。
方法1:修改查询图为最终查询树
输入:查询图,数据图的平均节点度数;
输出:查询树。
[1]枚举所有节点作为树的根节点;
[2]使用广度遍历方法获得当前根节点对应的查询树;
[3]对于生成的所有候选查询树,选取其中估值最小的作为最终查询树;
例1:
以图1为例,输入为查询图图1(a),数据图图1(b)的节点平均度数2。
[1]枚举所有节点作为树的根节点;
以图1(a)为例。枚举u1-u7作为树的根节点。
[2]使用广度遍历的方法获得所有根节点对应的查询树;
详见方法1.1。
[3]对于生成的所有候选查询树,选取其中估值最小的作为最终查询树;
以图1(b)(c)为例。数据图图1(b)的节点平均度为2,根据公式(1)和(2),得到图1(a)对应的查询树为图1(c)所示。
方法1.1:给定根节点,使用广度遍历生成查询树,输出查询树
输入:查询图,根节点
输出:查询树
[1]使用边的访问集evis来表示某一条边(u,v)是否被加入树中,使用点的访问集nvis来表示节点是否被访问过,使用先进先出队列q作为广度遍历的队列;
[2]将查询树根节点加入队列q;
[3]取出队首节点u,依次枚举其邻接点v;
[4]如果边(u,v)已经在树中,则跳过边(u,v);
[5]如果边(u,v)不在树中,且节点v已经被访问过,则将节点v拆分出节点v`加入树中;
[6]如果边(u,v)不在树中,且节点v未被访问过,则将v直接加入树中,并标记v为已访问,且将v加入队列q;
[7]若队列为空,算法结束;否则,转到[3]。
通过上述方法,在访问边的过程中,对查询图的环中的节点进行节点拆分,最终,生成查询图对应的一种查询树。
例1.1:以图1(a)中的u1作为根节点为例:
[1]使用边的访问集evis来表示边(u,v)是否在树中,使用点的访问集nvis来表示节点是否被访问过,使用先进先出队列q作为广度遍历的队列;
初始化阶段,evis、nvis、q均为空。
[2]将查询树根节点加入队列q;
将u1加入队列q。
[3]取出队首节点u,依次枚举其邻接点v;
以u1为例。依次访问u1的邻接点u2、u3、u4
[4]如果边(u,v)已经在树中,则跳过边(u,v);
以u5为例。u5的邻接点为u2,此时(u2,u5)这条边在访问u2的邻接点时已被加入树中,则跳过。
[5]如果边(u,v)不在树中,且节点v已经被访问过,则将节点v拆分出节点v`加入树中;
以(u3,u6)为例。在访问u3的邻接点时,(u3,u6)不在树中,且u6这个点在访问u2的邻接点的过程中已被访问,则将u6拆成u6和u6’加入树中。
[6]如果边(u,v)不在树中,且节点v未被访问过,则将v直接加入树中,并标记v为已访问,且将v加入队列q;
以(u1,u2)为例。在访问u1的邻接点时,(u1,u2)不在树中,且u2未被访问过,则将u2直接加入树中,并标记u2为已访问,且将u2加入队列q。
[7]若队列为空,算法结束。否则,转到[3]。
在访问u7的邻接点时,没有新的节点加入队列,且队列为空,算法结束。
在访问u1的邻接点时,经过u2、u3、u4的枚举后队列不为空,转到[3]。
二、数据图节点按照查询树自下而上的传递匹配结果计数
这部分主要说明数据图节点如何按照查询树从叶节点到根节点逐层依次匹配,得到匹配计数,并发送计数给相邻节点,直到匹配根节点;
数据图节点按照查询树自下而上的方向传递匹配结果计数的流程如图3所示,具体包含以下步骤:
方法2:查询树自下而上传递结果计数
输入:查询树,数据图
输出:匹配查询树根节点的数据节点集、索引计数的发送接收记录
[1]输入数据图到分布式集群中,每个机器存储一部分的子图。跨机器的邻接点间使用网络通信,其他的节点间使用内存通信;
[2]获得查询树高度-1层节点的label集合;
[3]选择符合label集合的数据节点作为计算节点集合;
[4]i=1,N=查询树高度,根节点高度为1;
[5]对所有分布式集群中的计算节点v并行执行如下过程;
[6]在i不为1的时候,计算节点v接受相邻数据节点发送过来的匹配查询树第N-i+1层查询节点所代表子树的匹配结果;
[7]计算节点v匹配查询树第N-i层查询节点的独立子节点;
[8]计算节点v匹配查询树第N-i层查询节点的非独立子节点;
[9]将独立、非独立子节点的匹配结果进行笛卡尔积的合并得到第N-i层查询节点的匹配结果;
[10]判断当前的结果是否已经匹配查询树根节点,如果匹配,结束计算;
[11]不匹配,将匹配结果经关键节点计数得到索引计数,发送给相邻数据节点,并将之加入下一轮计算节点集合;
[12]数据节点计算线程同步,i++,转到[5]。
例2:
以图1(b)(c)为例。
[1]输入数据图到分布式集群中,每个机器存储一部分的子图。跨机器的邻接点间使用网络通信,其他的节点间使用内存通信;
假设共有三个集群,可将图1(b)中v1,v2,v3,v4一组、v5,v6,v7、v8一组、v9,v10,v11,v12一组分别输入到三个集群中,从v1到v2使用内存通信,从v1到v5使用网络通信。
[2]获得查询树高度-1层节点label集合;
在图1(c)中,获得的label集合为{B,D,C}。
[3]选择符合label集合的数据节点作为计算节点集合;
在图1(b)中,计算节点集合为与{B,D,C}对应的v2,v3,v4
[4]i=1,N=查询树高度,根节点高度为1;
i=1,N=3。
[5]对所有分布式集群中的计算节点v并行执行如下过程;
[6]在i不为1的时候,计算节点v接受相邻数据节点发送过来的匹配查询树第N-i+1层查询节点所代表子树的匹配结果;
i=2时,第N-i+1即2层查询节点为u2,u3,u4,它们对应的计算节点为v2,v3,v4。在上一层迭代中,即i=1时,v2,v3,v4会分别向他们的相邻节点发送各自的匹配结果:v2向v1、v5、v6、v7发送,v3向v1、v7、v8发送,v4向v1、v8到v12发送。所以,i=2时,计算节点为v1,v5……v12,这些点分别接受由v2,v3,v4向它们发送过来的匹配查询树第2层查询节点u2,u3,u4所代表的子树匹配结果。
[7]计算节点v根据v的邻接表匹配查询树第N-i层查询节点的独立子节点;
i=1时,计算节点被指定为v2,v3,v4,这三个点根据各自的邻接表匹配第N-i层即第2层查询节点(u2,u3,u4)的独立子节点。所以,v2的邻接点v5,v6,v7匹配u5和u6,v3、v4同理。
[8]计算节点v根据接收到的匹配结果匹配查询树第N-i层查询节点的非独立子节点;
i=1时,由于计算节点是被指定的,所以没有任何节点接收到匹配结果;
i=2时,计算节点为v1,v5……v12(参见步骤[6])。上述节点根据接到的匹配结果(例如v1接收到v2,v3,v4分别匹配u2,u3,u4的匹配结果,v5接收到v2匹配u2的匹配结果),匹配查询树第1层查询节点的非独立子节点(u2,u3,u4)。
[9]将独立、非独立子节点的匹配结果进行数据库表自然连接操作得到第N-i层查询节点的匹配结果;
i=1,只有独立子节点的匹配结果,i=2时,只有非独立子节点的匹配结果,所以此步骤在本例中无操作。
[10]判断当前的结果是否已经匹配查询树根节点,如果匹配,结束计算;
i=2时,已经匹配到查询树的根节点u1,结束计算。
[11]不匹配,将中间结果经关键节点计数得到索引计数,发送给相邻数据节点,并设置其为下一轮迭代中的计算节点;
i=1时,当前结果匹配的是u2,u3,u4,不是根节点,则将中间结果经索引计数后发送给他们的相邻数据节点,并将这些节点设置为下一轮迭代中的计算节点。索引计数详见方法2.2.3。
[12]数据节点计算线程同步,i++,转到[5];
当分布式集群中的每一台机器的本轮迭代的所有计算线程均已结束时,才能开始下一轮迭代。只要本轮迭代中未完成所有计算线程的机器,则其他已完成所有计算线程的机器均应处于等待状态,而不是进入下一轮迭代。
接下来说明计算节点v匹配查询树查询节点的独立子节点、非独立子节点的过程和索引计数的过程。
1.独立子节点匹配
对于独立子节点使用简单的递归匹配就可以完成。由于这里的匹配过程不涉及拆分后的节点,所以其匹配过程和现有的单机方法十分相似。
例2.1:
如图1(b)(c)所示,以图1(c)中的u5,u6为例。查询节点u5,u6可匹配数据节点中的v5,v6,v7。递归开始时,u5匹配v5。接下来进入下一层递归进行u6的匹配。此时u6可以匹配的节点为除v5外的两个点v6,v7。u6在第二层递归中的匹配结束后回到第一层,此时u5应匹配v6。由于此过程与基本的DFS算法基本一致,后续的匹配过程本文不再赘述。
2.非独立子节点匹配
对于非独立节点,由于其内容包含拆分节点信息和关键节点集,其匹配过程比较复杂,下面分不同情况进行详细说明。
首先由于在匹配非独立节点的过程中涉及不同子树的匹配结果之间重合的部分,所以需要在这里对重合节点即拆分节点部分建立索引。然而匹配的子树之间本身存在顺序问题,对于不同的匹配顺序,其建立索引的方式也不尽相同。
因此本发明首先给出确定非独立子节点匹配顺序的方法,具体方法如下:
方法2.2.1确定非独立子节点的匹配顺序
输入:当前数据节点匹配的查询树中的查询节点uf,uf的非独立子节点集合,其关键节点集,uf的非独立子节点uc所代表的子树的匹配结果;
输出:当前数据节点匹配uf的非独立子节点的顺序。
[1]枚举所有非独立查询子节点的位置;
[2]若集合中没有未确定顺序的非独立查询节点,算法结束;
[3]枚举集合中所有未确定顺序的非独立查询节点;
[4]优先选择其关键节点集和已选取节点的关键节点集有交集的查询节点(被拆分的查询节点);
[5]其次选取非独立查询节点uc所代表的子树的匹配结果最少的节点;
[6]转到[2];
这样的顺序可以保证能够更快的获得匹配结果并且减少无效的循环次数。
例2.2.1
由于节点u6和节点u′6为拆分之后形成的两个节点,所以在合并的时候将其看作同一个节点。后续关于其他被拆分节点的描述同上。
[1]枚举所有非独立查询子节点的位置;
以v1为例。在v1的匹配过程中匹配的是u1,则枚举u1的非独立子节点集合{u2、u3、u4}。这三个节点的匹配结果如下:
表1
[2]若集合中没有未确定顺序的非独立查询节点,算法结束;
若u2、u3、u4的匹配顺序均已确定,则算法结束。
[3]枚举集合中所有未确定顺序的非独立查询节点;
算法刚开始时,u2、u3、u4的匹配顺序均未确定,则枚举u2、u3、u4。在后续操作中,u3的匹配顺序被排在u2、u4之前,则只枚举u2、u4
[4]优先选择其关键节点集和已选取节点的关键节点集有交集的查询节点(被拆分的查询节点);
算法刚开始时,没有已被选取的节点,则利用[5]中的原则选取节点。在后续操作中,u3被选为要优先匹配的点,接下来要在剩下的两个点u2、u4中做选择。已选取节点u3的关键节点集为{u3,u6,u7},u2的关键就节点集为{u2,u6},u4的关键节点集为{u4,u7‘},u2、u4的关键节点集与已选取节点u3的关键节点集均有交集,则仍利用[5]中的原则选取节点。
[5]其次选取非独立查询节点uc所代表的子树的匹配结果最少的节点;
算法刚开始时,u3所代表的子树的匹配结果最少,只有3个结果,则优先选取u3。u3的顺序确定后,由上表可知u4的匹配结果有6个,而u2得匹配结果有7个,则优先选择u4
[6]转到[2];
回到循环入口以判断算法是否结束。u2、u3、u4的匹配顺序最后应被确定为u3、u4、u2
方法2.2.2建立合并索引
在给定非独立点的匹配顺序后,就可以根据如上顺序对当前匹配查询节点uf的非独立子节点uc所代表的子树的匹配结果建立索引,以方便合并。对于上述顺序中第i个非独立查询节点ui而言,这个索引就是(keyset1∪keyset2……∪keyseti-1)∩keyseti,根据索引在当前结果中取出对应的数据节点集,根据数据节点集在中间结果中查找相同索引下的相同的数据节点集,以完成后续合并。这样建立索引的目的是为了在合并第i个子树的时候能够根据现有的结果对第i个子树的匹配结果进行一次过滤,以保证拆分节点所匹配的数据节点相同,且加快查询速度。
例2.2.2
在例2.2.1中,集合中非独立子节点的匹配顺序为u3、u4、u2,则u3的编号为1,u4为2,u2为3。若当前结果为{<u3,v3>,<u′6,v7>,<u7,v8>},中间结果如表1所示,则u3的索引键为在当前结果中对应的数据节点部分(为所有数据节点),索引值u3对应所有结果。u4的索引键为{u3,u6,u7}∩{u4,u7‘}={u7}对应当前结果中的v8,索引值为[v4,v8]。u2的索引键为({u3,u6,u7}∪{u4,u7‘})∩{u2,u6}={u6}对应当前结果中的v7,索引值为[v2,v5,v7]和[v2,v6,v7]。
非独立节点匹配的过程和独立节点的具体匹配过程非常相似,其中最大的区别是候选中间结果的合并处理。使用上述索引方法和匹配顺序,可以保证较快的进行合并,减少冗余匹配。
例2.2.3
本例中,当前结果为由计算得到的结果,中间结果为由通信得到的结果。
根据例2.2.1中的合并顺序,在v1处依次合并u3、u4、u2的匹配结果,即将u3匹配结果先与u4匹配结果进行合并,然后再和u2匹配结果进行合并。
在合并过程中,首先取得u3,之后根据索引依次枚举其匹配结果。由方法2.2.2得其索引键为空,索引值也为空,则枚举所有结果。对于结果{<u3,v3>,<u′6,v7>,<u7,v8>},将其与当前结果(初始为空集)合并,得到当前结果{<u3,v3>,<u′6,v7>,<u7,v8>}。
进入下一层递归,取得u4。u4的索引键为{u7}在当前结果{<u3,v3>,<u′6,v7>,<u7,v8>}中对应的v8。u4的索引值为v8在u4的中间结果中对应的部分,为[v4,v8]。所以本轮迭代中只有{<u4,v4>,<u′7,v8>}可以与当前结果合并。合并后的当前结果为{<u3,v3>,<u4,v4>,<u′6,v7>,<u7,v8>}。
再进入下一层递归,取得u2。u2的索引键{u6}在当前结果{<u3,v3>,<u4,v4>,<u′6,v7>,<u7,v8>}中对应的v7。u2的索引值为v7在u2的中间结果中对应的部分,为[v2,v5,v7]和[v2,v6,v7]。所以将{<u2,v2>,<u5,v5>,<u6,v7>}和{<u2,v2>,<u5,v6>,<u6,v7>}与当前结果{<u3,v3>,<u4,v4>,<u′6,v7>,<u7,v8>}分别合并,分别得到两个新的当前结果{<u2,v2>,<u3,v3>,<u4,v4>,<u5,v5>,<u6,v7>,<u7,v8>}和{<u2,v2>,<u3,v3>,<u4,v4>,<u5,v6>,<u6,v7>,<u7,v8>}。本轮匹配完成后,发现上两层的迭代中没有新的要匹配的结果,所以以上两个结果就是最终结果。
3.索引计数
这部分主要说明在发送数据的时候使用关键节点集索引计数代替中间匹配结果的索引实现方法。这样建立索引后,在通信过程中本发明只发送索引和索引值。可以减少数据节点间的通信量。
方法2.3索引计数
输入:查询树子树的关键节点集,中间匹配结果(独立查询子节点和非独立查询子节点的匹配结果经合并后的结果);
输出:经关键节点集索引后的计数结果。
[1]枚举所有匹配结果;
[2]对于每个匹配结果,根据其匹配的查询子树的根节点,获得其关键节点集;
[3]根据关键节点集匹配内容建立索引,对相同索引下的不同结果只简单统计其匹配的结果个数;
[4]向相邻的可作为父节点的数据节点发送匹配索引和个数;
[5]保存本次完整的发送/接收记录。
例2.2.3处理流程如图4所示。
[1]枚举所有匹配结果;
如图1(b)所示,数据节点v2匹配u2得到的匹配结果为
[2]对于每个匹配结果,根据其匹配的查询子树的根节点,获得其关键节点集;
如图1(c)所示,u2的关键节点集是{u2,u6}
[3]根据关键节点集匹配内容建立索引,对相同索引下的不同结果只简单统计其匹配的结果个数;
u2的关键节点集是{u2,u6},那么{u2,u6}就是匹配内容的索引。对索引{u2,u6}下的不同结果只统计其匹配的结果个数。步骤[1]中的结果经索引计数后应该为:{<u2,v2>,<u6,v5>,2}{<u2,v2>,<u6,v6>,2}{<u2,v2>,<u6,v7>,2}。
[4]向相邻的可作为父节点的数据节点发送匹配索引和个数;
数据节点v2向数据节点v1发送的匹配结果为:{<u2,v2>,<u6,v5>,2}{<u2,v2>,<u6,v6>,2}{<u2,v2>,<u6,v7>,2},共三条信息。如果直接发送未经索引的匹配结果,则需要通信发送6条信息。可见,此方法大大的减少了中间结果的数量,减少了通信量。
[5]保存本次完整的发送/接收记录;
保存的记录为数据节点v2向数据节点v1发送的匹配结果,即{<u2,v2>,<u6,v5>,2}{<u2,v2>,<u6,v6>,2}{<u2,v2>,<u6,v7>,2}。
三、查询树自上而下发送查询要求&查询树自下而上发送匹配结果
在这部分说明自上而下发送的查询要求和自下而上发送的匹配结果的具体实现。
由于本发明使用了关键节点集索引计数的办法来进行通信量的优化,即在发送中间结果前对结果进行了削减,导致了信息的缺失。所以要在这部分对缺失的信息重新获取。
如图5所示。在这个过程中,最开始选择能够匹配查询树根节点的数据节点开始进行匹配要求的传递,这里的数据节点集合就是自下而上发送索引计数的步骤中传递计数最后得到的匹配根节点的数据节点集合。
方法3查询树自上而下发送查询要求&查询树自下而上发送匹配结果
输入:分布式集群中的数据图,索引计数发送/接受记录,匹配查询树根节点的数据节点集,查询树;
输出:完整匹配结果。
[1]选择能够匹配查询树的根节点的数据节点作为待计算的数据节点集合;
[2]i=1,N=查询树高度,根节点高度为1;
[3]对集合中的数据节点v并行执行如下过程;
[4]如果i为1,根节点接收匹配完整查询树的要求;否则,数据节点v接收查询树第i-1层查询节点对应的数据节点的匹配要求;
[5]数据节点v根据接收到的匹配要求和发送\接收记录,获得查询树的第i+1层查询节点的匹配要求;
[6]数据节点计算线程同步,i++;
[7]如果满足i=N,转到[8];否则,将获得的匹配要求发送给相邻对应的数据节点,这些数据节点作为下一次迭代的计算节点;转到[3];
[8]将得到匹配要求的数据节点集合作为计算节点集合;
[9]i=2,N=查询树高度,根节点高度为1;
[10]对集合中的数据节点(计算节点)w并行执行如下过程;
[11]数据节点w根据查询要求,合并接受的匹配结果,以完成对查询树第N-i+1层节点的匹配;
[12]数据节点计算线程同步,i++;如果匹配的是查询树根节点,转[14];否则,转[13];
[13]将完整的匹配结果发送给查询要求的发送者,即数据图中匹配查询树第N-i层查询节点的数据节点,并将其作为下一次迭代的计算节点;转[10];
[14]结束计算。
例3
如图1,v1从系统接收查询要求{<u1,v1>,2}。根据它的发送接收记录可知,{<u1,v1>,2}由{<u1,v1>,<u2,v2>,<u3,v3>,<u4,v4>,<u6,v7>,<u7,v8>,2}通过关键节点集索引计数得到,而这个结果分别由v2给出的计数结果{<u2,v2>,<u6,v7>,2}、v3给出的计数结果{<u3,v3>,<u′6,v7>,<u7,v8>,1}和v4给出的计数结果{<u4,v4>,<u′7,v8>,1}合并得到。所以v1分别向v2发送结果要求{<u2,v2>,<u6,v7>,2},向v3发送结果要求{<u3,v3>,<u′6,v7>,<u7,v8>,1},向v4发送结果要求{<u4,v4>,<u′7,v8>,1}。由此自上而下发送查询要求的过程结束。
接下来,计算节点向要求来源发送要求的完整的匹配结果。v2合并获得v1要求的匹配结果。向v1发送满足要求的匹配结果{<u2,v2>,<u5,v5>,<u6,v7>}{<u2,v2>,<u5,v6>,<u6,v7>}。v3合并获得v1要求的匹配结果。向v1发送满足要求的匹配结果{<u3,v3>,<u′6,v7>,<u7,v8>}。v4合并获得v1要求的匹配结果。向v1发送满足要求的匹配结果{<u4,v4>,<u′7,v8>}。计算线程同步,i++。v1根据接受的结果得到完整匹配结果。结束匹配过程。最后的匹配结果如下{<u1,v1>,<u2,v2>,<u3,v3>,<u4,v4>,<u5,v5><u6,v7><u7,v8>}{<u1,v1>,<u2,v2>,<u3,v3>,<u4,v4>,<u5,v6><u6,v7><u7,v8>}。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种子图匹配的查询方法,其特征在于:包括以下步骤:
步骤一、修改查询图为查询树;
步骤二、数据图节点按照查询树从叶节点到根节点逐层依次匹配,得到匹配计数,并发送计数给相邻节点、保存发送/接收记录,直到匹配根节点;
步骤三、数据图节点按照查询树从根节点到叶节点逐层依次发送匹配要求,直到匹配要求发送至叶节点;
步骤四、数据图节点按照查询树从叶节点到根节点的顺序依次向查询要求的来源发送子树匹配结果;
所述修改查询图为查询树进一步包括以下过程:
[1-1]枚举所有节点作为树的根节点;
[1-2]使用广度遍历方法获得当前根节点对应的查询树;
[1-3]对于生成的所有候选查询树,根据下式选取其中估值最小的作为最终查询树;首先选择通信量估值最小,其次选择计算量估值最小;其中通信量估值计算公式如下:
C o m V a l = &Sigma; i = 1 n ( &Pi; u &Element; keyset i deg c n t ( u ) ) - - - ( 1 )
计算量估值计算公式如下:
C a l V a l = &Sigma; i = 1 n ( &Pi; u &Element; child i deg c n t ( u ) ) - - - ( 2 )
其中deg表示数据图节点的平均度数,cnt(u)表示查询树中节点u和第i个查询节点的距离,keyseti表示以第i个查询节点为根的查询子树的关键节点集,childi表示以第i个查询节点为根的查询子树的子节点集,n为查询图中的节点个数。
2.根据权利要求1所述的一种子图匹配的查询方法,其特征在于:所述使用广度遍历方法获得当前根节点对应的查询树进一步包括以下过程:
[1-2-1]使用边的访问集evis来表示某一条边(u,v)是否被加入树中,使用点的访问集nvis来表示节点是否被访问过,使用先进先出队列q作为广度遍历的队列;
[1-2-2]将查询树根节点加入队列q;
[1-2-3]取出队首节点u,依次枚举其邻接节点v;
[1-2-4]如果边(u,v)已经在树中,则跳过边(u,v);
[1-2-5]如果边(u,v)不在树中,且节点v已经被访问过,则将节点v拆分出节点v`加入树中;
[1-2-6]如果边(u,v)不在树中,且节点v未被访问过,则将v直接加入树中,并标记v为已访问,且将v加入队列q;
[1-2-7]若队列为空,算法结束;否则,转到[1-2-3]。
3.根据权利要求1所述的一种子图匹配的查询方法,其特征在于:对所述数据图节点按照查询树自下而上的方向传递匹配结果计数进一步包含以下步骤:
[2-1]输入数据图到分布式集群中,每个机器存储一部分的子图;跨机器的邻接节点间使用网络通信,其他的节点间使用内存通信;
[2-2]获得查询树高度-1层节点的label集合;
[2-3]选择符合label集合的数据节点作为计算节点集合;
[2-4]i=1,N=查询树高度,根节点高度为1;
[2-5]对所有分布式集群中的数据节点v并行执行如下过程;
[2-6]在i不为1的时候,数据节点v接受相邻数据节点发送过来的匹配查询树第N-i+1层查询节点所代表子树的匹配结果;
[2-7]数据节点v根据v的邻接表匹配查询树第N-i层查询节点的独立子节点;
[2-8]数据节点v根据接收到的匹配结果匹配查询树第N-i层查询节点的非独立子节点;
[2-9]将独立、非独立子节点的匹配结果进行数据库表自然连接操作得到第N-i层查询节点的匹配结果;
[2-10]判断当前的结果是否已经匹配查询树根节点,如果匹配,结束计算;
[2-11]不匹配,将中间结果经关键节点计数得到索引计数,发送给相邻数据节点,并设置其为下一轮迭代中的数据节点;
[2-12]数据节点计算线程同步,i++,转到[2-5]。
4.根据权利要求3所述的一种子图匹配的查询方法,其特征在于:步骤[2-7]数据节点匹配查询树查询节点的独立子节点进一步包括以下步骤:
[2-7-1]根据查询树来获得当前查询节点对应的子节点中的独立查询节点集合;
[2-7-2]根据独立查询节点的label,统计当前数据节点v的邻接点中匹配对应label的节点个数,并按照个数的增序对集合中的独立查询节点排序;
[2-7-3]开始递归计算过程;
[2-7-4]根据独立查询节点顺序依次获得下一个待匹配的独立查询子节点u,如果不存在下一个查询子节点则说明已经递归到最底层,结束当前层递归;
[2-7-5]接下来根据u和其label依次枚举所有的能够匹配u的数据节点v;
[2-7-6]添加<u,v>到当前匹配结果;
[2-7-7]开始下一层的递归过程,匹配下一个查询节点;
[2-7-8]弹出当前层匹配结果中的<u,v>;
[2-7-9]重复[2-7-5]-[2-7-9]继续枚举数据节点v,直到枚举完所有能够匹配u的数据节点;
[2-7-10]结束当前层递归,返回上一层中的步骤[2-8]。
5.根据权利要求3所述的一种子图匹配的查询方法,其特征在于:步骤[2-8]计算节点匹配查询树查询节点的非独立子节点还包括如下确定非独立子节点的匹配顺序过程:
(1)枚举所有非独立查询子节点的位置;
(2)若集合中没有未确定顺序的非独立查询节点,算法结束;
(3)枚举集合中所有未确定顺序的非独立查询节点;
(4)优先选择其关键节点集和已选取节点的关键节点集有交集的查询节点;
(5)其次选取非独立查询节点uc所代表的子树的匹配结果最少的节点;
(6)转到(2)。
6.根据权利要求3-5任一所述的一种子图匹配的查询方法,其特征在于:步骤[2-8]计算节点匹配查询树查询节点的非独立子节点进一步包括以下步骤:
[2-8-1]获得下一个非独立查询子节点uc,如果没有下一个非独立查询子节点,则当前结果为最终的匹配结果,加入非独立子节点的匹配结果集合,结束当前层递归;
[2-8-2]根据uc取出接收到的匹配uc代表的查询子树的结果集;
[2-8-3]接下来根据当前递归结果和uc代表的查询子树,获得索引键值;
[2-8-4]枚举uc代表的查询子树的匹配结果集中对应上述索引键值下的所有中间结果,与中间结果分别合并;
[2-8-5]使用递归的方法继续匹配后续的非独立查询节点;
[2-8-6]将[2-8-4]合并的结果分开;
[2-8-7]准备下一次的递归过程,重复[2-8-4]-[2-8-7]直到所有的中间结果枚举完成。
7.根据权利要求3所述的一种子图匹配的查询方法,其特征在于:所述步骤[2-11]将中间结果经关键节点计数得到索引计数进一步包括以下步骤:
[2-11-1]枚举所有匹配结果;
[2-11-2]对于每个匹配结果,根据其匹配的查询子树的根节点,获得其关键节点集;
[2-11-3]根据关键节点集匹配内容建立索引,对相同索引下的不同结果只简单统计其匹配的结果个数;
[2-11-4]向相邻的可作为父节点的数据节点发送匹配索引和个数;
[2-11-5]保存本次完整的发送/接收记录。
8.根据权利要求1所述的一种子图匹配的查询方法,其特征在于:所述数据图节点按照查询树从根节点到叶节点逐层依次发送匹配要求,直到匹配要求发送至叶节点进一步包括以下步骤:
[3-1]选择能够匹配查询树的根节点的数据节点作为待计算的数据节点集合;
[3-2]i=1,N=查询树高度,根节点高度为1;
[3-3]对集合中的数据节点v并行执行如下过程;
[3-4]如果i为1,根节点接收匹配完整查询树的要求;否则,数据节点v接收查询树第i-1层查询节点对应的数据节点的匹配要求;
[3-5]数据节点v根据接收到的匹配要求和步骤二保存的发送/接收记录,获得查询树的第i+1层查询节点的匹配要求;
[3-6]数据节点计算线程同步,i++;
[3-7]将获得的匹配要求发送给相邻对应的数据节点,这些数据节点作为下一次迭代的计算节点;如果i为N-1,算法结束;否则,转到[3-3]。
9.根据权利要求1所述的一种子图匹配的查询方法,其特征在于:所述数据图节点按照查询树从叶节点到根节点的顺序依次向查询要求的来源发送子树匹配结果进一步包括以下步骤:
[4-1]将收到匹配要求的数据节点集合作为计算节点集合;
[4-2]i=2,N=查询树高度,根节点高度为1;
[4-3]对集合中的数据节点w并行执行如下过程;
[4-4]数据节点w根据查询要求,合并接受的匹配结果,以完成对查询树第N-i+1层节点的匹配;
[4-5]数据节点计算线程同步,i++;如果匹配的是查询树根节点,转[4-7];否则,转[4-6];
[4-6]将完整的匹配结果发送给查询要求的发送者,即数据图中匹配查询树第N-i层查询节点的数据节点,并将其作为下一次迭代的计算节点;转[4-3];
[4-7]结束计算。
CN201410812269.XA 2014-12-23 2014-12-23 一种子图匹配的查询方法 Expired - Fee Related CN104392010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410812269.XA CN104392010B (zh) 2014-12-23 2014-12-23 一种子图匹配的查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410812269.XA CN104392010B (zh) 2014-12-23 2014-12-23 一种子图匹配的查询方法

Publications (2)

Publication Number Publication Date
CN104392010A CN104392010A (zh) 2015-03-04
CN104392010B true CN104392010B (zh) 2017-07-11

Family

ID=52609914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410812269.XA Expired - Fee Related CN104392010B (zh) 2014-12-23 2014-12-23 一种子图匹配的查询方法

Country Status (1)

Country Link
CN (1) CN104392010B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105045790A (zh) * 2015-03-13 2015-11-11 北京航空航天大学 图数据搜索系统、方法和设备
US10635562B2 (en) * 2015-09-04 2020-04-28 Futurewei Technologies, Inc. Fault tolerance in distributed graph processing networks
CN105260465B (zh) * 2015-10-16 2018-10-30 晶赞广告(上海)有限公司 一种图数据处理服务的方法、装置
CN105488289B (zh) * 2015-12-09 2018-10-19 四川长虹电器股份有限公司 分布式环境下动态图结构匹配的方法
CN106991195B (zh) * 2017-04-28 2020-08-11 南京大学 一种分布式的子图枚举方法
CN108121788B (zh) * 2017-12-19 2020-08-07 北京大学 子图查询方法
CN109063072A (zh) * 2018-07-24 2018-12-21 西安科技大学 一种工程管理中信息的查询方法和装置
CN109299337B (zh) * 2018-10-19 2022-05-13 南威软件股份有限公司 一种基于迭代的图搜索方法
CN111382315B (zh) * 2018-12-29 2024-04-05 阿里巴巴集团控股有限公司 子图同构匹配结果的合并方法、电子设备及存储介质
CN109992594A (zh) * 2019-03-22 2019-07-09 跬云(上海)信息科技有限公司 基于预计算优化的分布式执行优化方法及系统
CN110347884A (zh) * 2019-07-12 2019-10-18 深圳众赢维融科技有限公司 用于处理异常用户子图的方法和装置
CN110427471B (zh) * 2019-07-26 2022-10-18 四川长虹电器股份有限公司 一种基于知识图谱的自然语言问答方法及系统
CN111309989A (zh) * 2020-02-13 2020-06-19 平安科技(深圳)有限公司 基于图数据库的最短路径查询方法及相关设备
CN113553477B (zh) * 2020-04-23 2024-06-25 阿里巴巴集团控股有限公司 一种图的拆分方法和装置
CN116680451B (zh) * 2023-06-07 2024-06-11 浙江邦盛科技股份有限公司 一种基于图相似度进行合并的方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073708A (zh) * 2010-12-30 2011-05-25 东北大学 面向大规模不确定图数据库的子图查询方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928287B2 (en) * 2013-02-24 2018-03-27 Technion Research & Development Foundation Limited Processing query to graph database

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073708A (zh) * 2010-12-30 2011-05-25 东北大学 面向大规模不确定图数据库的子图查询方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Top-k子图模式匹配的海量数据挖掘算法的研究;何健;《中国优秀硕士学位论文全文数据库信息科技辑》;20140615(第6期);第I138-573页 *

Also Published As

Publication number Publication date
CN104392010A (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
CN104392010B (zh) 一种子图匹配的查询方法
Gupta et al. Top-k interesting subgraph discovery in information networks
CN103399902B (zh) 一种并行环境下的有向图可达性链表生成及查询方法
CN105515997B (zh) 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN104077297B (zh) 基于本体的查询方法及装置
CN102945249B (zh) 一种策略规则匹配查询树生成方法、匹配方法及装置
CN102394809B (zh) 一种多线程边界网关协议并行处理方法
CN103678550B (zh) 一种基于动态索引结构的海量数据实时查询方法
CN109791492A (zh) 流水线相关树查询优化器和调度器
CN105204920B (zh) 一种基于映射聚合的分布式计算作业的实现方法及装置
CN107317699A (zh) 一种云制造服务组合的动态蚁群快速优选方法
CN104504018B (zh) 基于浓密树和自顶向下的大数据实时查询优化方法
CN104102699B (zh) 一种聚簇图集合中的子图检索方法
Jansson et al. The complexity of inferring a minimally resolved phylogenetic supertree
CN107682395A (zh) 一种大数据云计算运行系统及方法
CN109992593A (zh) 一种基于子图匹配的大规模数据并行查询方法
CN102420812A (zh) 一种支持分布并行处理的Web服务自动QoS组合方法
CN103902715B (zh) Ip区间查找方法和装置
CN107633024A (zh) 多维属性最优点组的快速搜索方法
CN104881530B (zh) 一种基于优化工艺参数的滚齿干切加工方法
CN102750386A (zh) 适用于大规模实时数据流的查询处理方法
CN102737134A (zh) 适用于大规模实时数据流的查询处理方法
Gerstel et al. A new characterization of tree medians with applications to distributed sorting
CN104021169B (zh) 一种基于SDD‑1算法的Hive连接查询方法
CN107133281A (zh) 一种基于分组的全局多查询优化方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170711

Termination date: 20171223