一种大规模图数据表示方法技术

技术编号:15504998 阅读:60 留言:0更新日期:2017-06-04 00:44
本发明专利技术公开一种大规模图数据表示方法,其基于K

A large scale data representation method

The invention discloses a large scale graph data representation method based on K

【技术实现步骤摘要】
一种大规模图数据表示方法
本专利技术涉及大数据处理
,具体涉及一种大规模图数据表示方法。
技术介绍
图数据是指使用图来抽象表示数据实体以及它们之间的关系,数据实体表示为图中的顶点,数据实体之间的关系表示为图中的边。图数据是一个很宽泛的概念,主要的表现形式有网页图、社交网络图、生物信息图、语义Web以及知识图谱等。图数据正日益成为一种重要的处理对象。在大数据背景下,图数据的顶点规模往往会达到千万级别,而边数则会达到亿级别。当使用K2-tree表示大规模图数据时主要会存在以下两个问题:1)K2-tree对邻接矩阵是进行机械式的划分,而图数据中往往存在大量的集群结构,这种划分方式将会严重破坏集群结构,造成子矩阵之间通信频繁。由于将原本聚集大量值为1的元素的区域一部分划分至另外一个子矩阵,从而增加了表示值为1的元素所用的存储空间。2)由于K2-tree的高度是由图数据中的顶点数所决定,所以在表示大规模图数据时,K2-tree的高度会与图数据的顶点数成正比。由于K2-tree最底层中的L向量包含了邻接矩阵中单个元素的信息,因此从根节点向下访问到叶子层所需要的时间也会随着K2-tree高度的增加而增加。因此,K2-tree对图数据内在结构特性以及表示大规模图数据时的查询效率方面缺乏必要的考虑,其在紧凑性以及查询效率上仍有较大的改善空间。
技术实现思路
本专利技术所要解决的技术问题是现有使用K2-tree表示大规模图数据时存在查询效率低的问题,提供一种大规模图数据表示方法。为解决上述问题,本专利技术是通过以下技术方案实现的:一种大规模图数据表示方法,包括如下步骤:步骤1、以基于密度的聚类思想为指导,将图数据划分为规模不等的簇;步骤2、将簇以及未包含在簇范围内的部分所对应的子矩阵进行K2-tree表示;步骤3、将簇所对应K2-tree的L向量串联成一个全局L向量,并进行DACs编码;步骤4、将每一个需要查询的节点定位到对应簇的K2-tree中,再根据K2-tree的遍历规则进行查询。上述步骤1具体为:步骤1.1、将图数据抽象成邻接矩阵表示;步骤1.2、将邻接矩阵的第一行第一列的元素作为子矩阵的起点,沿邻接矩阵的主对角线拓展子矩阵的规模,每次拓展后子矩阵的宽度都增加1;步骤1.3、子矩阵拓展完成后,计算当前子矩阵的离群率φ和规模MinSize;步骤1.4、如果当前子矩阵的离群率φ小于等于设定的离群阈值,且当前子矩阵的规模大于等于设定的规模阈值,则将当前子矩阵作为一个簇处理;否则,返回步骤1.2,继续拓展当前子矩阵;步骤1.5、若当前子矩阵的最右下角元素位于第i行第i列,则选取邻接矩阵中第i+1行第i+1列的元素作为新子矩阵的起点,并重复执行步骤1.3和1.4,直到到达邻接矩阵中最后一行最后一列的元素;步骤1.6、将邻接矩阵中所有被簇包含的区域内的元素全部置为0。上述步骤2具体为:步骤2.1、使用数组记录每一个簇所包含行列号的区间;步骤2.2、对于每一个簇所对应的矩阵,先将该矩阵的规模扩充为K的幂次方,再将矩阵划分为规模相等的K2个子矩阵;若子矩阵中包含有值为1的元素,则将该子矩阵标记为1;否则,将该子矩阵标记为0;将划分前的矩阵作为根节点,则划分后的K2个子矩阵作为根节点的孩子节点,节点值则为标记的值;步骤2.3、将步骤2.2中标记为1的子矩阵继续按照步骤2.2中的划分方式进行K2划分,并根据子矩阵在父矩阵中的位置,按照由上到下,从左至右的顺序将子矩阵作为父矩阵的孩子节点;步骤2.4、重复步骤2.2和2.3,直到子矩阵只包含一个元素值;步骤2.5、重复步骤2.1-2.5,得到每个簇所对应的K2-tree,对于每个簇所对应的K2-tree,使用一个T向量来依次存储K2-tree中除最底层的所有节点的值,使用一个L向量来依次存储K2-tree的最底层叶子节点的值;步骤2.6、重复步骤2.1-2.6,得到整个邻接矩阵所对应的K2-tree。上述步骤3具体为:步骤3.1、使用一个数组记录每一个K2-tree所对应的L向量Li的长度信息及相对于L1的偏移信息;其中1≤i≤m,m为K2-tree的个数,也即簇的个数;步骤3.2、将L1、L2,…,Li串联成一个全局L向量global_L;步骤3.3,将global_L划分为多个块,每个块的长度为K2;统计每个块在global_L中出现的频率,出现频率越高的块则用一个越小的整数进行表示,从而将global_L表示为一个整数序列;步骤3.4,对步骤3.3产生的整数序列使用DACs进行编码处理,得到编码后的全局L向量D_global_L。上述步骤4具体为:步骤4.1、对于查询图数据中的一个顶点ni的所有直接邻居节点,其在对应的邻接矩阵中位于第i行,并确定该行所在的子矩阵被哪个K2-tree所表示;步骤4.2、当确定所要遍历的K2-tree后即按照K2-tree的遍历规则进行自顶向下的遍历;步骤4.3、当遍历到叶子层时不要直接访问叶子层,而是先记录该叶子的编号p和此时的列号偏移量q,然后根据每个K2-tree的L向量相对于L1偏移量deviation的数组来获得最终在global_L中的访问位置,最终的访问位置为deviation+p;步骤4.4、对编码后的全局L向量D_global_L中第deviation+p个位置处的整数值进行DACs解码成一个只含0和1的序列;步骤4.5、遍历步骤4.4中产生的序列,找出所有1的位置,若序列的第j个位置处有1,则顶点ni拥有一个直接邻居,且其标签为q+j。与现有技术相比,本专利技术提出了一种基于K2-tree和聚类思想的大规模图数据表示方法,其先采用了基于密度的聚类思想将图数据抽象成邻接矩阵表示形式,再在邻接矩阵的基础上进行聚类处理,从而使包含大量值为1的元素的集群结构被包含在簇中。相比于原始邻接矩阵,每个簇所对应的子矩阵的规模将大大减小,缩减K2-tree中进行自顶向下的遍历到叶子层所需要的时间,即有利于提高查询的效率。大量值为1的元素被包含在子矩阵中,并且将所有子矩阵对应K2-tree的L向量进行串联成一个全局性的向量global_L,并且使用了DACs编码,这将有效降低表示邻接矩阵中每个值为1的元素所耗用的空间,即提高了存储效率。本专利技术能够对包含亿万个节点和边的图数据进行高效、紧凑的表示和压缩,并且提供针对图数据中节点的直接和反向邻居查询操作。附图说明图1是一种大规模图数据表示方法的流程图。图2是图数据对应的有向图。图3是有向图对应的邻接矩阵表示。图4是对图数据内在特征的分析。图5是使用MATLAB对图数据对应邻接矩阵中值为1的元素分布情况的分析。图6是对图数据对应邻接矩阵进行聚类处理的方式。图7是邻接矩阵的K2-tree表示。图7(a)为邻接矩阵,图7(b)为邻接矩阵对应的K2-tree表示。图8是举例对一个有向图所对应的邻接矩阵进行聚类处理,并将所产生的簇使用K2-tree表示。图8(a)为原始邻接矩阵,图8(b)为邻接矩阵的第一个簇所对应的子矩阵及K2-tree表示,图8(c)为接矩阵的第二个簇所对应的子矩阵及K2-tree表示。具体实施方式一种大规模图数据表示方法,如图1所示,包括如下步骤:步骤1、以基于密度的聚类思想为指导,将图数据划本文档来自技高网...
一种大规模图数据表示方法

【技术保护点】
一种大规模图数据表示方法,其特征是,包括如下步骤:步骤1、以基于密度的聚类思想为指导,将图数据划分为规模不等的簇;步骤2、将簇以及未包含在簇范围内的部分所对应的子矩阵进行K

【技术特征摘要】
1.一种大规模图数据表示方法,其特征是,包括如下步骤:步骤1、以基于密度的聚类思想为指导,将图数据划分为规模不等的簇;步骤2、将簇以及未包含在簇范围内的部分所对应的子矩阵进行K2-tree表示;步骤3、将簇所对应K2-tree的L向量串联成一个全局L向量,并进行DACs编码;步骤4、将每一个需要查询的节点定位到对应簇的K2-tree中,再根据K2-tree的遍历规则进行查询。2.根据权利要求1所述的一种大规模图数据表示方法,其特征是,步骤1具体为:步骤1.1、将图数据抽象成邻接矩阵表示;步骤1.2、将邻接矩阵的第一行第一列的元素作为子矩阵的起点,沿邻接矩阵的主对角线拓展子矩阵的规模,每次拓展后子矩阵的宽度都增加1;步骤1.3、子矩阵拓展完成后,计算当前子矩阵的离群率φ和规模MinSize;步骤1.4、如果当前子矩阵的离群率φ小于等于设定的离群阈值,且当前子矩阵的规模大于等于设定的规模阈值,则将当前子矩阵作为一个簇处理;否则,返回步骤1.2,继续拓展当前子矩阵;步骤1.5、若当前子矩阵的最右下角元素位于第i行第i列,则选取邻接矩阵中第i+1行第i+1列的元素作为新子矩阵的起点,并重复执行步骤1.3和1.4,直到到达邻接矩阵中最后一行最后一列的元素;步骤1.6、将邻接矩阵中所有被簇包含的区域内的元素全部置为0。3.根据权利要求1所述的一种大规模图数据表示方法,其特征是,步骤2具体为:步骤2.1、使用数组记录每一个簇所包含行列号的区间;步骤2.2、对于每一个簇所对应的矩阵,先将该矩阵的规模扩充为K的幂次方,再将矩阵划分为规模相等的K2个子矩阵;若子矩阵中包含有值为1的元素,则将该子矩阵标记为1;否则,将该子矩阵标记为0;将划分前的矩阵作为根节点,则划分后的K2个子矩阵作为根节点的孩子节点,节点值则为标记的值;步骤2.3、将步骤2.2中标记为1的子矩阵继续按照步骤2.2中的划分方式进行K2划分,并根据子矩阵在父矩阵中的位置,按照由上到下,从左至右的顺序将子矩阵作为父矩阵的孩子节点;步骤2.4、重复步骤2.2和2.3,直到子矩阵...

【专利技术属性】
技术研发人员:常亮曾祥炫古天龙徐周波王荣
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西,45

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

1