一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向大型异构信息网络的子图检索方法

2023-03-19 13:03:20 来源:中国专利 TAG:


1.本发明涉及一种子图检索方法,具体涉及一种面向星型模式异构信息网络的子图查询方法。


背景技术:

2.异构信息网络(也称为异质图)是一种由不同类型的实体(节点)和不同类型的关系(边)组成的网络,这里的不同类型的边同时也代表着不同的语义关系。一个异构信息网络是一个有向图并且有一个节点类型映射函数和一个边类型映射函数其中每个节点v∈v都属于一个节点类型且每条边e∈e都属于一个边类型(也称为关系)同时满足给定一个异构信息网络以及相应的映射和它的模式是一个定义在节点类型和边类型(也称为关系)上的有向图,也就是说,
3.一条元路径是一条定义在异构信息网络模式上的一条路径,它被形式化表示为或者(a1a2…al 1
),这里是的长度,且
4.给定一个异构信息网络和一个正整数k,的一个是一个最大的相连的节点集合使得其满足这里中节点的类型为连接的类型。给定一个异构信息网络一个顶点v∈v以及一条元路径该节点的core number(表示为),是存在一个且包含v的最大的k。
5.有一种典型的异质图叫做星型模式异质图,星型模式通常有一个基本类型和几个属性类型,分别作为中心节点和尾部节点。相应地,异质图中基本类型的节点扮演了枢纽节点的角色,并且与属性类型节点相连。子图检索问题已经被研究了很长时间。目前主要有两类网络子图检索问题,分别是子图检测和子图搜索。
6.早期的子图检测工作主要通过基于链接的分析来检测这些子图。然而,这些工作大部分都只针对拥有相同类型节点的同质图。最近的一些工作专注于在异质图上生成聚类或者子图,这些工作根据子图中节点的类型可以被大致分成两类。第一类致力于检测聚类,这些聚类都包含多种类型的对象。第二类则致力于生成包含某种特定类型对象的聚类。
7.子图搜索致力于找到包含一个或者多个查询节点的紧密相连的子图。为了度量一个子图的结构聚合度,人们通常使用一些紧密子图模型,比如k-core模型、k-truss模型、k-clique模型以及k-edge connected component模型。尽管子图搜索问题已经被广泛地研究,大部分现有的工作只关注于传统的同质图,很少有工作关注于异质图上的子图查询。为了在异质图上制定有效的子图查询模型,研究者将子图查询的模型扩展到异质图上。然而,目前所有的这些现有工作都存在一些限制,比如,它们要么需要用户指定一条元路径,或者
需要用户给出关系约束,这对于不熟悉异质图的用户来说是一个巨大的挑战。因此,如何在异质图上不指定这些约束并有效地进行子图查询,是一个开放的问题。


技术实现要素:

8.为了克服现有的异质图上子图搜索工作的局限性,本发明提供了一种面向大型异构信息网络的子图检索方法。该方法研究星型模式异质图上的子图问题,而不要求用户指定一条元路径或者给出关系约束,提供了一种高效的在线和基于索引的解决方案。
9.本发明的目的是通过以下技术方案实现的:
10.一种面向大型异构信息网络的子图检索方法,包括如下步骤:
11.步骤一、索引构建
12.先在异质图的模式图上根据元路径的嵌套关系构建一颗元路径树,之后从元路径树的根节点出发,按照深度优先的顺序构建所有mc-tree的顶点,具体步骤如下:
13.步骤一一、获得所有有效元路径的集合其中:为异构信息网络模式上的一条元路径,为节点类型,为边类型;
14.步骤一二、从中选择最短的元路径并且通过调用buildmetapathtree从开始构建元路径树,其中,在buildmetapathtree中,按照下述的深度优先顺序构建元路径树:每次buildmetapathtree的调用中,遍历去查找元路径使得并且对于每一条建立一个新的索引顶点将添加到索引顶点的孩子列表中,让成为的父亲顶点并且递归地建立的孩子顶点;
15.步骤一三、通过调用buildcmnode根据深度优先的顺序构建cm-tree的每一个顶点,其中,在buildcmnode中,按照下述的深度优先顺序从元路径树的根出发构建每一个cm-tree的顶点:对于每个顶点,首先获取p-graph然后使用线性时间复杂度的算法进行k-core分解得到所有节点的core number接下来,遍历中的所有节点并且将根据节点v的core number将其加入到哈希表中去,对于的键中的每一个core number k,还需要删除一些节点,这些节点在的并集中,这里以此来避免冗余存储,建完后,遍历当前顶点的孩子列表并且调用buildcmnode来递归建立孩子顶点。
16.步骤二、设计ψ-nmc算法
17.步骤二一、给定一个星型模式异质图中的一个同类型查询节点集合q,一个正整数k,一条元路径以及元路径集合ψ、ψ1、ψ2,利用存储在哈希表中的ψ
1-nmc和ψ
2-nmc求交集得到一个小的节点集合v用于定位ψ-nmc;
18.步骤二二、检查节点集合是否包含查询节点,如果不包含,那么表明不存在一个符合要求的ψ-nmc,对于每一条对于v中的每一个节点找到至多k个邻居,如果不能找到k个邻居,将该节点v加入候选集合s中等待删除,与此同时,关于不同的使用一个哈希表来记录每个节点的邻居集合φ,得到一个不合格的待删除的节点集合s;
19.步骤二三、通过调用函数deletevertex删除s中的节点并且更新从v中删除s中的每一个节点,并且对于ψ中的所有递增地为v的邻居找到新的邻居,如果对于v的
某些邻居无法找到k个邻居,将这些节点放入s中;
20.步骤二四、关于ψ中的每一条可以得到一个v'作为包含q的每一个连通分量的交集,v\v'中的节点被加入s中,并使用v'来更新v;
21.步骤二五、重复步骤二二~二四直到对于ψ中的所有元路径而言,v是一个连通分量;
22.步骤三、基于索引的ψ-nmc计算
23.步骤三一、对于ψ中的每条调用函数indexsinglecore得到具体步骤如下:
24.步骤三一一、初始化一个空集合v来存储core number大于或者等于kde节点;
25.步骤三一二、对于以及它的每一个被嵌套元路径将中的所有节点放入v中,这里k'大于或者等于k;
26.步骤三一三、如果查询节点集合q不是v的一个子集,表示不存在一个同时函数返回空;
27.步骤三一是、在上计算连通分量并且得到上计算连通分量并且得到表示限制在节点集合v和相应的边集合上的异质图
28.步骤三二、计算所有的交集并且计算ψ-nmc;
29.步骤四、子图查询
30.步骤四一、生成元路径集合并且初始化c=1以及一个哈希表对每一个ψ存储相应的子图,候选元路径集合(每个各自包含了中的一条元路径)也将被初始化,使得其中每个元路径集合包含一条来自的元路径,通过ψ中所有元路径的长度之和对每一个进行升序排序;
31.步骤四二、初始化一个集合存储有效的包含c条元路径的元路径集合,对于每一个个通过函数indexnmc验证ψ-nmc的存在,对于每一条indexnmc在cm-tree的帮助下得到一个计算所有的交集,并且调用函数fastnmc来计算ψ-nmc,如果ψ-nmc存在,使用来记录ψ和它相应的子图,并且基于调用函数genvalidcan生成一系列有效的元路径集合以此降低需要计算的b
ψ
的数量,那么ψ-nmc就是所要找的唯一的一个子图,为了减少不必要的候选集合验证,将中所有的元路径集合放入并且将它们从中移出,在中所有的候选集合都被检查完后,通过函数gencan生成新的包含c 1条元路径的元路径集合,并且c的值增加1,当中没有新的候选集合需要被验证时,输出中的所有ψ-nmcs作为最终的子图。
32.相比于现有技术,本发明具有如下优点:
33.本发明提出了一种新颖的空间高效的索引结构cm-tree,并基于cm-tree开发了一系列相关算法,分别是基于索引的元路径候选集合剪枝策略、优化的候选集合验证顺序、早停策略。利用这三种优化方法再加上提出的计算ψ-nmc的快速算法,有效提升查询算法的时间效率。
附图说明
34.图1为一个星型模式的异质图示例,(a)一个异质图,(b)异质图模式图;
35.图2为通过三条元路径得到的三个
36.图3为元路径树和相应的cm-tree,(a)元路径树,(b)cm-tree;
37.图4为mkc压缩策略示例,(a)同质图,(b)压缩举例;
38.图5为生成查询流程;
39.图6为子图紧凑度比较结果;
40.图7为子图成员相似度比较结果;
41.图8为语义丰富度比较结果;
42.图9为关系亲密度比较结果;
43.图10为三种查询算法的效率评估结果,(a)pubmed,(b)imdb,(c)dblp,(d)foursquare;
44.图11为在线查询算法的扩展性测试结果,(a)pubmed,(b)imdb,(c)dblp,(d)foursquare;
45.图12为案例分析子图可视化。
具体实施方式
46.下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
47.本发明提供了一种面向大型异构信息网络的子图检索方法,所述方法提出了从星型模式异质图上寻找包含一个查询节点集合q的子图,使得子图的所有节点都有相同的类型并且有紧密的关系。本发明称其为星型模式异质图上的子图搜索问题,也称为cssh问题。为了实现上述目标,本发明需要解决如下两个关键问题:(1)如何在一个子图内给相同类型的节点的关系建模。(2)如何找出包含q的最合适的子图。
48.对于第一个问题,使用模型(一个最大节点集合满足其中的每个节点都有至少k个通过元路径相连的邻居)对于建模一个同类型节点的子图是有效的,因为两个节点之间的一条有限长度的元路径很好地展现了它们的语义关系(比如,表示两个作者共著论文的关系)。
49.对于第二个问题,对于一个查询节点集合q,共享更多元路径的子图直观上能够更好地捕捉它们之间的紧密关系。比如,在图1(a)中,让q={a3,a4}并且k=3(即每个节点有至少三个邻居)。显然,作者a3和a4可以通过两条不同的元路径和和相连,并且因此存在两个不同的包含q的社区,分别是和分别用和表示。节点集合可以同时构成一个和一个所以它是比和更合适的包含查询节点的社区。因此,找到一个子图,它可以共享最多的元路径,其中每一条元路径都可以得到一个包含查询节点的是一个很好的想法。尽管如此,因为不同的元路径的语义存在嵌套关系,简单地最大化共享的元路径的数量可能并不能找到有着
最紧密关系的子图。在图1(a)中,比如,考虑元路径和前者表示两位作者合著了一篇论文,后者表示两位作者在同一个出版物上发表了论文。显然,在dblp网络中,如果两个作者能够满足关系那么他们自然而然地能满足关系因为两个合著论文的作者必定有论文发表在同一个出版物上。这同时也表明和的语义存在嵌套的关系,因此简单地对包含q的子图最大化共享的元路径的数量是不合理的。幸运的是,存在嵌套关系的元路径可以很容易地从异质图的模式上检测到。因此,在仔细地考虑cssh问题表述中的上述问题,本发明提出寻找一个节点集合,该集合最大化了共享的不存在嵌套关系的元路径数量,使得对于每一条元路径它们都可以构成一个包含q的这保证了得到的子图可以很好地捕获查询节点所具有的丰富的语义关系。
50.总体来讲,在很多异质图上在线算法的表现很好,但是在处理一些大规模异质图上仍然不够高效。在一个百万规模的异质图上(比如dblp),回应一个cs查询需要耗时接近0.5分钟,如果查询频繁发生,那么开销是十分巨大的。为了解决这个问题,本发明提出了一种新颖的空间高效的索引,依赖于两个关键发现:首先,在实际中频繁使用的元路径的长度往往是有限的,因为过长的元路径会导致较弱的关系。其次,在计算不同查询的时候存在大量的对于core的重复计算。由于有意义的元路径的数量通常是有限的,可以提前计算好它们的并且将它们紧凑地组织成一个树状结构,称之为core meta-path tree(或者称为cm-tree)。基于cm-tree,本发明提出了一个有着优雅剪枝技术的查询算法。接下来,将首先给出cm-tree的总览,之后给出索引的构建算法,最后展示基于索引的查询算法。
51.一、索引总览
52.首先引入一个引理作为本算法的基础。
53.引理1(反单调性)
54.给定一个星型模式异质图中的一个同类型查询节点集合q,一个正整数k以及一个元路径集合ψ,如果存在一个包含q的ψ-nmc,则对于任意子集肯定存在一个包含q的ψ'-nmc。
55.1、的嵌套关系
56.cm-tree索引是建立在一个关键的发现的基础上的,即分别对于参数k和参数的发现的基础上的,即分别对于参数k和参数是互相嵌套的:
57.(1)对于参数k≥1,这里中节点的类型为连接的类型。如引理2所示。
58.(2)对于参数给定两条元路径和如果那么
59.引理2:
60.给定一个星型模式异质图一个正整数k和一条元路径一个正整数k和一条元路径是嵌套的。也就是说,对于任意必定存在一个满足
61.通过仔细考虑嵌套的性质,可以通过利用meta-path-based compression(mc)压缩方法和k-core-based compression(kc)压缩方法将所有的core组织到一个树状索引中。
62.(2)mc压缩策略
63.考虑图3(a)中的树,它将所有连接着目标类型的元路径根据它们的嵌套关系组织成了一棵树。元路径树中的每一个顶点都有一个父亲顶点(除了根顶点)和一个孩子顶点列表(除了叶子顶点),其中,父亲顶点中对应的元路径是所有其孩子顶点对应的元路径的被嵌套元路径。当k固定时,父亲顶点中的一定被孩子顶点中的所包含。因此,为了节省空间开销,对于每一个孩子顶点,仅仅存储那些没有被它的父亲顶点所存储的节点。
64.(3)kc压缩策略
65.除了mc策略,还可以利用不同k值下,core的嵌套性质。根据引理2,对于某条元路径径因此,对于每一条元路径,可以使用一个哈希表来记录每个节点对应的core number,其中core number是最大的k值,满足
66.(4)mkc压缩策略
67.要注意的是,如果只使用mc策略,对于不同的k值,索引会包含冗余的节点。类似地,如果只使用kc策略,对于被嵌套的元路径,索引也会包含冗余的节点。幸运的是,这两项策略可以同时使用,因此可以得到一个高效的索引压缩策略,称之为meta-path and k-core-based compression(mkc)。
68.具体地,对于每条元路径使用来表示所有中的节点的集合。要注意的是,在一个异质图中,可能会存在多个因为一个core必定是一个连通分量。基于引理2,对于有基于引理2,有因此,显然有:
[0069][0070][0071]
(5)cm-tree
[0072]
为了应用mkc策略,使用元路径树作为cm-tree的骨干。对于每一个cm-tree顶点存储一个哈希表,它的键是core number,值是相应core number的节点集合。根据式(1)和式(2),可以发现总是包含和为了降低空间开销,令顶点中映射core number的集合为:
[0073][0074]
接下来进一步用例子来解释mkc策略。
[0075]
例子:
[0076]
图4(a)展示了两个由元路径和得到的这里显然,是的子图。图4(b)展示了两个图的mkc压缩过程。因为是另外5个core的子集,所以首先将这个core的节点放入到中。接下来对于和它们包含了中的所有节点。对于和仅存储{e},因为e是唯一一个不在中,但被另外两个core包含的节点。其它的cm-tree顶点的构建方式也类似。
[0077]
除了哈希表,每一个cm-tree顶点也需要存储它的父亲和孩子列表。简而言之,包含三个要素:
[0078]
·
map:将core number映射到相应的节点集合上;
[0079]
·
parent:的父亲顶点;
[0080]
·
childlist:的一系列孩子顶点。
[0081]
图3(b)展示了所有三个同质图的cm-tree索引,它的骨干是图3(a)中的元路径树。基于cm-tree,以下可以被本发明之后的查询算法所利用的关键操作,可以高效地进行。
[0082]
·
core finding.给定一个正整数k和一条元路径找到一个属于的节点集合。
[0083]
二、索引构建
[0084]
因为元路径树是cm-tree的骨干,所以需要先在异质图的模式图上根据元路径的嵌套关系来构建一颗元路径树。之后,从元路径树的根节点出发,按照深度优先的顺序开始构建所有mc-tree的顶点,因为根据公式(3),孩子顶点中哈希表的构建依赖于父亲顶点的构建结果。
[0085]
表1所示算法1展示了cm-tree的构建算法。首先获得所有有效元路径的集合(第3行)。之后从中选择最短的元路径(第4行),并且通过调用buildmetapathtree来从开始构建元路径树(第6行)。最后,通过调用buildcmnode来根据深度优先的顺序构建cm-tree的每一个顶点(第7行)。
[0086]
在buildmetapathtree中,按照下述的深度优先顺序来构建元路径树。每次buildmetapathtree的调用中,遍历去查找元路径使得并且(第10-14行)。对于每一条建立一个新的索引顶点(第12行),将添加到的孩子列表中,让成为的父亲顶点(第13行)并且递归地建立的孩子顶点(第14行)。
[0087]
在buildcmnode中,按照下述的深度优先顺序从元路径树的根出发来构建每一个cm-tree的顶点。对于每个顶点,首先获取p-graph(第16行),接着使用线性时间复杂度的算法进行k-core分解来得到所有节点的core number(第17行)。接下来,遍历中的所有节点并且将根据节点v的core number将其加入到哈希表中去(第18行)。对于的键中的每一个core numberk,还需要删除一些节点,这些节点在的并集中,没有其他要求,这里以此来避免冗余存储(第19-20行)。建完后,遍历当前顶点的孩子列表并且调用buildcmnode来递归建立孩子顶点(第21行)。
[0088]
表1 cm-tree构建算法伪代码
[0089][0090]
引理3:
[0091]
给定一个星型模式异质图和一个元路径集合cm-tree需要花费的空间,这里ti是被相连的类型的节点的总数。
[0092]
证明:
[0093]
如果只使用kc压缩策略,那么对于每一条存储ti个节点。对于mkc压缩策略,根据式(3),当不是索引的根顶点时,每一条存储少于ti个节点,所以引理3成立。
[0094]
引理4:
[0095]
算法1时间复杂度为
[0096]
证明:
[0097]
计算所有的需要花费的时间。从一个同质图上计算一个k-core只需花费线性时间。因此,引理4成立。
[0098]
三、基于索引的查询算法
[0099]
1、计算ψ-nmc的算法
[0100]
本节将给出一个包含两个步骤的用于计算ψ-nmc的朴素算法。第一步,对于每条从获得一个这样便可以得到一个同质图集合集合中的每个图都包含了所有具有目标节点类型的节点,但有着不同的边集。第二步,通过不断地从每一个中删除度数小于k的节点,来在所有同质图上同时计算k-cores,直到每个图中的所有节点都有至少k个邻居。本发明称该算法为homnmc。
[0101]
表2所示算法2展示了具体细节。给定一个ψ,首先依靠ψ中的元路径计算同质图集合(第2-3行)。接着,令v为每一个中包含q的每一个连通分量的交集(第5行)。然后,不断地从v中删去节点,如果该节点在某个中的度小于k(第6-7行)。重复上述过程直至v只包含一个连通分量(第4-8行)。最后,将v作为ψ-nmc返回(第9行)。
[0102]
表2计算ψ-nmc朴素算法伪代码
[0103][0104]
引理5:
[0105]
算法2的时间复杂度为这里m表示所有中边数的最大值,c表示循环中迭代的数量,ni表示在中第i个节点类型的节点数量,b
i,i 1
表示与中第i个节点类型的节点相连的第i 1个节点类型的节点的最大数量。
[0106]
尽管homnmc的时间复杂度接近于所有同质图的大小线性关系,但它的开销
仍然是非常大的,因为构建这些同质图需要花费大量的时间和空间,占据了整个算法的大部分开销。为了提升效率,本发明通过以下两个观察优化了homnmc。
[0107]
(1)本发明发现,给出已经提前算好的ψ-nmcs(|ψ|=c),可以很快地计算ψ'-nmcs(|ψ'|=c 1)。
[0108]
(2)受到一个计算的算法的启发,本发明发现对于每一个具有目标类型的节点来说,并不需要找到它的所有邻居,因为只需要知道该节点在(k,ψ)-nmc中是否有k个邻居即可。
[0109]
为了利用第一个观察,下面引入引理6。
[0110]
引理6:
[0111]
给定一个星型模式异质图和两个元路径集合ψ1、ψ2,如果ψ
1-nmc和ψ
2-nmc都存在,那么
[0112]
算法3展示了具体细节。首先,根据引理5利用存储在中的ψ
1-nmc和ψ
2-nmc求交集来得到一个小的节点集合v用于定位ψ-nmc(第3行)。然后,检查节点集合是否包含查询节点,如果不包含,那么表明不存在一个符合要求的ψ-nmc(第4行)。之后,对于每一条对于v中的每一个节点找到至多k个邻居(第8行)。如果不能找到k个邻居,将该节点v加入s中等待删除(第9行)。与此同时,关于不同的使用一个哈希表来记录每个节点的邻居集合φ(第10行)。现在可以得到一个不合格的待删除的节点集合s。接下来,首先通过调用函数deletevertex删除s中的节点并且更新(第12行),该算法可以从v中删除s中的每一个节点,并且对于ψ中的所有递增地为v的邻居找到新的邻居。如果对于v的某些邻居无法找到k个邻居,将这些节点放入s中。之后,关于ψ中的每一条可以得到一个v'作为包含q的每一个连通分量的交集(第13行)。v\v'中的节点被加入s中,并使用v'来更新v(第14-15行)。上述步骤不断重复直到对于ψ中的所有元路径而言,v是一个连通分量(第16行)。
[0113]
表3计算ψ-nmc快速算法伪代码
[0114][0115]
2、被嵌套元路径集合
[0116]
有了cm-tree索引的帮助,本发明在计算ψ-nmc的快速算法的基础上,提出了一种基于索引的用于解决cssh问题的快速查询算法。具体地,首先引入一个新颖的概念:被嵌套元路径集合。之后,设计了剪枝和早停策略来降低需要验证的候选集合的数量。更进一步地,为了验证每一个元路径集合,本发明使用cm-tree来快速地将ψ-nmc定位到一个较小的节点子集中。接下来,首先引入被嵌套元路径集合的概念。
[0117]
定义1:被嵌套元路径集合(nested meta-path set)。
[0118]
给定一个包含n条元路径的集合ψ的被嵌套元路径集合是另外一个元路径集合满足存在使得
[0119]
比如,令且那么,是和的一个被嵌套元路径集合。接下来,将展示在一个元路径集合和它的被嵌套元路径集合之间同样存在嵌套关系。
[0120]
引理7:
[0121]
给定一个星型模式异质图一个正整数k,一个元路径集合ψ和它的被嵌套元路
nmc满足ψi(1≤i≤n)是所有ψj(1≤j≤n且i≠j)的被嵌套元路径集合,那么ψ
i-nmc就是本发明所要得到的子图。
[0137]
证明:
[0138]
根据元路径的集合非嵌套性,如果ψ-nmc是最终的子图,那么不存在一个ψ'-nmc,满足这里因此,如果存在一个ψ
i-nmc并且ψi是所有ψj(1≤j≤n且j≠i)的被嵌套元路径集合,那么即使ψ
j-nmc存在,由于集合非嵌套性,它仍然不是最终需要的子图。基于同样的理由,对于从ψi生成的、包含更多元路径的元路径集合,它们也不可能得到一个最终需要的子图。因此,引理9成立。
[0139]
6、基于索引的ψ-nmc计算
[0140]
为了验证每一个候选元路径集合ψ,需要计算ψ-nmc。在cm-tree的帮助下,根据下述推论,可以通过求的交集来将core定位到一个较小的集合范围内,这里
[0141]
推论:
[0142]
给定一个星型模式异质图一个正整数k以及一个元路径集合ψ,有
[0143]
接下来介绍如何基于cm-tree进行ψ-nmc的计算。
[0144]
函数indexnmc将mc-treek,元路径集合ψ以及查询节点集合q作为输入。简而言之,表4所示算法包含两步。首先,对于ψ中的每条调用函数indexsinglecore来得到(第2-3行)。然后,计算所有的交集并且计算ψ-nmc(第4-5行)。
[0145]
在函数indexsinglecore中,首先初始化一个空集合v来存储core number大于或者等于kde节点(第8行)。之后对于以及它的每一个被嵌套元路径将中的所有节点放入v中,这里k'大于或者等于k(第9-11行)。在那之后,如果查询节点集合q不是v的一个子集,这表示不存在一个同时函数返回空(第12行)。最后,在上计算连通分量并且得到(第13-14行),这里表示限制在节点集合v和相应的边集合上的异质图
[0146]
表4基于cm-tree的ψ-nmc计算算法伪代码
[0147][0148]
引理10:
[0149]
函数indexsinglecore的时间复杂度为
[0150]
证明:
[0151]
在最坏的情况下,需要遍历cm-tree一个顶点中的所有节点。同时,在最坏的情况下,cm-tree的一个顶点需要存储n1个节点。因为对于一条长度为l的元路径来说,它最多有有条被嵌套元路径。所以遍历cm-tree中的所有节点需要耗费的时间。除此之外,为了在同质图上计算一个连通分量,需要耗费的时间。因此,引理10成立。
[0152]
引理11:
[0153]
表4所示算法4的时间复杂度为这里δ表示函数fastnmc的时间复杂度。
[0154]
证明:
[0155]
需要调用|ψ|次函数indexsinglecore,而函数indexsinglecore对于ψ中的每条需要耗费的时间。除此之外,它需要调用函数fastnmc来计算ψ-nmc。因此,引理11成立。
[0156]
7、查询算法
[0157]
简而言之,本发明提出了一个基于索引的查询算法。首先生成元路径集合(第1行)并且初始化c=1以及一个哈希表对每一个ψ存储相应的子图(第2行)。也将被初始化,使得其中每个元路径集合包含一条来自的元路径(第3行)。之后在循环中,根据引理,通过ψ中所有元路径的长度之和对每一个进行升序排序。下一步,初始化一个集合来存储有效的包含c条元路径的元路径集合(第6行)。对于每一个通过函数indexnmc来验证ψ-nmc的存在(第8行)。具体地说,对于每一条indexnmc在cm-tree的帮助下得到一个计算所有的交集,并且调用函数fastnmc来计算ψ-nmc。如果ψ-nmc存在,使用来记录ψ和它相应的子图(第10行),并且基于调用函数genvalidcan来生成一系列有效的元路径集合以此来降低需要计算的b
ψ
的数量。那么ψ-nmc就是所要找的唯一的一个子图,整个算法也在此结束(第12行)。为了减少不必要的候选集合验证,将中所有的元路径集合放入并且将它们从中移出(第13-14行)。在中所有的候选集合都被检查完后,通过函数gencan生成新的包含c 1条元路径的元路径集合(第15行),并且c的值增加1。当中没有新的候选集合需要被验证时,整个循环结束(第17行)。最后,输出中的所有ψ-nmcs作为最终的子图(第18行)。
[0158]
表5基于索引的查询算法伪代码
[0159]
[0160][0161]
引理12:
[0162]
算法5的时间复杂度为这里δj表示函数fastnmc的时间复杂度。
[0163]
证明:
[0164]
在表5所示算法5中,它会调用次函数indexnmc,并且函数indexnmc对于每一个ψj花费的时间。因此,引理12成立。
[0165]
四、基于索引的有效候选集合生成
[0166]
本节将介绍如何基于引理7来生成一系列有效的候选元路径集合
[0167]
表6所示算法6展示了具体细节。函数genvalidcan将有效元路径集合ψ和cm-tree作为输入。算法6返回一系列有效元路径集合满足对于中的每条存在一个ψ'-nmc。简而言之,对于ψ中的每条通过搜索cm-tree,使用一个哈希表来存储所有的这里是的被嵌套元路径(第2-8行)。之后调用函数gencombination来生成一系列的有效元路径集合(第9行)。
[0168]
在函数gencombination中,首先从ψ中选择一条并且再找到一条满足(第12-16行)。如果没有找到|ψ|条元路径,那么继续选择ψ中的下一条(第19行)。否则,
使用这些选择的元路径组合成一个包含|ψ|条元路径的元路径集合ψ'并且将其添加到中(第17-18行)。
[0169]
表6基于cm-tree的有效候选集合生成算法伪代码
[0170][0171]
实施例1:
[0172]
本实施例使用四个真实的星型模式异质图:pubmed、imdb、dblp、foursquare。这四个数据集的数值统计情况包括节点数量、边数量、节点类型数量以及边类型数量,如表7所示。
[0173]
表7数据集统计情况
[0174][0175]
四个数据集的来源分别为:
[0176]
pubmed:https://github.com/yangji9181/hne
[0177]
imdb:https://www.imdb.com/interfaces/
[0178]
dblp:https://www.aminer.cn/citation
[0179]
foursquare:https://sites.google.com/site/yangdingqi/home/foursquare-dataset
[0180]
pubmed是一个基因、疾病、化学物质以及物种网络,从pubmed中构建而成。imdb包含了从2000年来的电影评分记录,它有四种类型的节点,分别是作者、导演、编剧以及电影。dblp包含了计算机科学领域的出版记录,它的节点类型为作者、论文、出版物和主题。foursquare包含了美国的登记记录,包含四种类型的节点,分别是记录、用户、出版物、分类。
[0181]
对于每个数据集,收集一个元路径集合并且它包含的元路径的数量如表7所示。与现有的工作一致,选择所有长度最多为4的元路径。对于每个数据集,生成200条查询。为了生成一条查询,流程图如5所示,遵循fangy.yangy.zhang w.et al.effective and efficient community search over large heterogeneous information networks[j].proceedings of the vldb endowment,2020,13(6):854-867.中的方法,随机选择一条元路径然后收集core number大于或者等于6的一些节点,这里所选节点集合的|q|的值的范围为2到5,其中2为默认值,保证了一个查询中的每一个节点,都存在一个有意义的子图包含该节点。默认情况下,将k值设置为6。在接下来报告的结果中,除非有特别说明,否则每一个数据点都是这200条查询的平均结果。本发明的所有算法皆是使用java进行实现,实验环境为intel(r)xeon(r)gold 6226r 2.90ghz cpu 256gb内存的服务器,操作系统为ubuntu。
[0182]
1、算法有效性评估:
[0183]
(1)子图紧凑型
[0184]
为了评估子图的子图紧凑度,一个常用的评估指标是diameter,即一个子图的子图中任意一堆节点之间最短距离的最大值。为了使得其能够作用于异质图上的子图,本发明使用即连接两个节点的的路径实例的最小数量(比如,两个仅被一条的实例相连的节点之间的为1)。本发明将比较cssh查询与csh查询。具体地说,首先运行每一个cssh查询并且得到元路径集合为ψ的子图。之后,对于每条在相同的q值和k值的情况下,运行csh查询来得到子图。图6显示了在四个数据集上cssh查询和csh查询得到的子图的平均diameter值。显然,cssh查询得到的子图比csh查询得到的子图有着更小的diameter值,因此本发明的基于ψ-nmc的子图有着更紧凑的结构并且它们的节点有着更紧密的关系。
[0185]
(2)子图成员相似度
[0186]
本发明通过pathsim来评估子图成员的相似性。具体来说,首先通过cssh和csh查询来得到子图,其中cssh查询的设置与前一个实验的设置类似,之后分别对这些子图中的每一对节点计算pathsim值。图7展示了在四个数据集上的pathsim的平均值。显然,本发明的基于ψ-nmc的子图相比较csh查询中基于的子图有着更高的相似度,因此,本发明的cssh查询能够更好地捕获子图成员之间的相似性。
[0187]
(3)语义丰富度
[0188]
为了评估子图的语义丰富度,本发明统计了子图共享的元路径的数量,同时改变查询节点集合包含的节点数量,即|q|。值得注意的是,在本实验中,子图共享的元路径的数量不是简单的ψ包含的元路径的数量;相反地,对于一个子图ψ-nmc,本发明不仅统计ψ中所有元路径的数量,还统计另一类元路径,满足ψ中的元路径是它们的被嵌套元路径。比如,在dblp中,如果ψ={apa},那么统计的元路径的数量为3,因为{apa}被嵌套于{apvpa}和{aptpa}中。图8展示了平均结果。总体而言,随着|q|的增大,共享元路径的数量在减少,因为一个更大的|q|意味着更少的可以包含其中的节点。
[0189]
(4)关系亲密度
[0190]
为了评估子图成员的关系紧密度,在变化|q|时,计算元路径集合ψ中的元路径的平均长度。图9展示了相关结果。显然,随着|q|增大,元路径的平均长度也在增加,意味着关系亲密度在变弱。这是因为对于一个更大的|q|,需要更长的元路径来构成包含q的ψ-nmc。
[0191]
2、算法效率评估:
[0192]
本节将评估在线算法和基于索引的查询算法的效率,分别用naiveonline、fastonline、indexquery表示。具体地说,朴素在线算法naiveonline和快速在线算法fastonline分别使用homnmc和fastnmc来计算ψ-nmc。分别从查询算法的效率和可扩展性测试评估。
[0193]
(1)在线和基于索引的查询算法效率
[0194]
图10展示了在改变k的情况下,查询算法的效率结果。显然,fastonline比naiveonlie快至多两个数量级,因为对于每一个目标类型的节点,homnmc需要找到所有它的邻居,而fastnmc只需要找到一小部分即可。与此同时,随着k的增大,fastonline的运行时间也不断增加,因为一个更大的k意味着需要找到更多的邻居,而naiveonlie的运行时间基本保持不变,因为该算法的主要时间开销来自构建同质图。除此之外,基于索引的查询算法比naiveonlie快了超过两个数量级,并且比fastonline快了至多一个数量级,表明本发明的cm-tree在加速查询上是有效的。
[0195]
(2)可扩展性测试
[0196]
对于每个数据集,本发明随机选择它们20%,40%,60%,80%以及100%的节点并且分别通过这些节点得到五个子图。之后,使用两个在线查询算法来运行cssh查询,平均效率结果如图11所示。总体而言,它们的时间开销随着图中节点的数量线性增加,展现出了良好的可扩展性。
[0197]
实施例2:
[0198]
本发明在一个有着50663个节点及88986条边的小型dblp网络上运行了一个cssh查询和两个csh查询(从原始网络中随机抽取)。在cssh查询中,将查询节点集合设置为q=
{jiawei han,jeffrey xu yu,yizhou sun}并且k=4。这样可以得到一个子图,满足sun}并且k=4。这样可以得到一个子图,满足其中且图12可视化了该子图,在两个csh查询中,本发明使用了相同的查询节点集合并且分别制定查询元路径为和因为这两个查询得到子图相对较大,无法将它们可视化。所以本发明将这三个子图相关的数值统计展示在了表8中。
[0199]
表8在小型dblp网络上的案例分析结果
[0200][0201]
显然,本发明的cssh查询得到的子图有着最小的子图大小,因为它需要同时满足和的语义关系。除此之外,本发明的cssh查询得到的子图有着最大的pathsim值和最小的diameter值,因此它更加紧凑并且有着更高的子图成员相似度。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献