- 发布日期:2025-03-23 01:09 点击次数:161
跟着迁移互联网、物联网等技巧的发展,庞杂新兴应用往时所未有的形态和速率产生并蓄积着多半数据,若何对这些数据进行分析并使用,仍是成为好多领域濒临的机遇与挑战,大数据(big data)期间仍是到来.2激萌系列010年海外超等筹划大会(Supercomputing Conference)为评估超等筹划机对大数据的处感性能,界说了新的排行法式Graph500[1],比较超等筹划机在图数据(graph data)上的处明智力.在大数据分析的经过中,图算作一种灵验刻画大数据的数据结构,上演着越来越伏击的变装,在互联网分析[2]、酬酢汇集分析[3]、推选汇集分析[4]等领域,好多筹划问题王人不错攻击为一个基于图的问题激萌系列,何况使用图上的关连算法来料理.在大范围图数据分析处理当用中,对包含亿万个节点和边的图数据进行高效、紧凑的示意和压缩,是现时的筹商热门之一.
在互联网分析中,将每一个页面对应图上的一个节点,将两个页面之间的贯串对应图上的一条有向边,从而将互联网攻击为一个有向的网页图(Web graph),通过对网页图的分析进行网页的排序.搜索引擎中使用的两种经典的网页排序算法Pagerank[5]和HITS[6],王人是基于筹划图上节点的出度和入度以及节点之间的联结关系等基本操作.在酬酢汇集(social network)分析中,将酬酢采聚会的实体和他们之间的关系攻击为相应的图数据.在酬酢汇集图的基础上,不错对酬酢汇集进行关连筹商,包括社区发现和伏击变装检测[7,8],以及信息传播模式分析[9,10,11]等.文献[12]提议的垃圾邮件检测法式不错归结为寻找强连通重量、集团陈设和筹划最小割等基于图的问题.一些常见的汇集挖掘算法,比如汇集结构和演化经过的发现王人是笔据基于图的深度优先搜索、宽度优先搜索、可达性、强连通性和弱连通性等基本算法和性质[13].
为了高效地支柱图数据上的基本算法和操作,需要联想一种数据结构来存储这个图,何况不错快速地作念一些图上的基本操作,比如查询给定的一个节点的通盘邻居或者判断两个节点之间是否联通等.传统的存储法式是遴选关联矩阵或者相连表,为了支柱快速的查询,浮浅将通盘关联矩阵或相连表加载到内存中.然而在试验应用中,这么的法式会濒临存储空间过大的问题.以酬酢汇集为例,笔据GlobalWebIndex[14]统计,2013年Facebook用户量仍是跨越11亿,平均每个东说念主的好友跨越100位,使用相连表来存储通盘用户的关系信息,需要接近1TB的存储空间;以互联网为例,笔据中国互联汇集信息中心(CNNIC)发布的《第29次中国互联汇集发展情景统计敷陈》[15],中国网页数目为866亿个,超贯串数目据猜测跨越1012,使用相连表来存储网页径直的贯串关系信息需要跨越16TB的存储空间.同期跟着用户量和信息量的快速增长,存储问题也只会变得越来越严峻.
针对大范围图数据存储空间过大的问题,现时主要从3个方面进行筹商:(1) 硬盘的存储价钱相干于内存横蛮常低廉的,不错使用外存储器存储图数据[16,17],然而由于硬盘的探询速率比内存探询速率慢4~6个数目级,导致查询产生较大的延时.不错通过优化图数据处理时的探询局部性,以减少磁盘的I/O次数,达到裁汰探询延时的主见.该技巧适用于探询局部性较好的图数据.(2) 使用分散式系统是料理大范围数据的灵验法式[18,19,20],将图数据分割为多个部分,分别存储在分散式系统中不同的筹划机内存中,然而由于图数据的耦合性较强,导致分散式系统的通讯代价较高,会使查询产生较大的延时.不错通过联想较好的图分割算法,使得分割后的不同子图范围均等何况子图之间的连通性较低,以裁汰通讯代价,较少延时.该技巧适用于易于分割的图数据.(3) 将图数据攻击为占用空间较小的压缩样式存放在内存中[21,22],同期不错支柱查询,查询的时辰增长为数倍于不压缩的样式,然而延时远小于前两种决议.该技巧适用于探询局部性较差或者耦合性较强不易分割的图数据.
关于上述3种料理大范围图数据存储空间过大的法式,本文主要筹议第3种,在保证查询时辰的前提下压缩存储空间.固然这种法式并不可料理通盘的问题,有些范围终点大的图数据可能压缩后依然不可一说念放到内存中,然而也不错通过压缩存储空间来改善另外两种法式的性能.关于硬盘存储的数据结构,淌若不错在保握探询局部性的前提下压缩存储空间,那么就不错减少硬盘读取次数,以栽种探询速率.关于分散式系统,压缩存储空间不错使用更少的处理节点来完成调换的任务,同期也不错减少处理节点之间的通讯代价.因此,对图数据压缩技巧的筹商是一项特别专诚旨的职责.
本文第1节主要给出图数据压缩技巧的问题刻画、关连界说以及现时边临的主要问题.第2节~第5节挨次先容4种压缩技巧,分别是基于传统存储结构的压缩技巧、网页图压缩技巧、酬酢汇集图压缩技巧和面向特定查询的图压缩技巧.第6节转头全文并指出一些将来的筹商场地.
1 问题刻画 1.1 图的基本意见与界说本文中使用G=(V,E)示意一个图,其中V示意图中节点集中、E示意图中边集中.使用n(n=|V|)示意节点的个数,m(m=|E|)示意边的个数.图数据浮浅遴选关联矩阵(adjacency matrix)和相连表(adjacency list)算作存储结构.按照图中的边是否有场地,图可分为有向图和无向图,图 1(a)为一个有向图的拓扑结构,图 1(b)和图 1(c)分别为该图对应的关联矩阵和相连表,表 1给出了有向图和无向图分别遴选关联矩阵和相连表两种存储结构所需要的存储空间复杂度.本文中将通盘图王人看作是有向图,图中的边王人看作有向边,因为无向图中的无向边不错攻击为这条边对应的两个节点之间的两条有向边.关于节点vÎV,uÎV使用e(v,u)ÎE示意图中v指向u的一条边.使用out(v)示意节点v指向的通盘节点的集中,out(v)={v|vÎV,e(v,u)ÎE},即节点v的外邻(out-neighbor).使用in(v)示意指向节点v的通盘节点的集中,in(v)={v|vÎV,e(u,v)ÎE},即节点v的内邻(in-neighbor).

Table 1 Comparison of directed and undirected graph space complexity using adjacency matrix and list matrix 表 1 有向图和无向图分别使用关联矩阵和相连表时的空间复杂度对比
从表 1中不错看出,这两种存储结构的存储代价特别腾贵,前边提到的跟着酬酢汇集等数据范围的陆续加多,存储空间过大问题阐扬得越来越严重.然而在试验应用中,图数据只需提供几种特定的查询就不错豪放需求,并不需要简直存储如斯阔绰空间的存储结构.比如查询一个图上是否包含一条一个节点指向另一个节点的旅途,以及最少经过几个节点就不错到达.关于这种查询,给定一个节点vÎV,只消能查询出out(v)的死亡,就不错使用dijkstra算法筹划出死亡.关于图数据上的查询,不错对原始存储结构进行压缩或者构造一种占用存储空间愈加小的结构来存储数据,在图上进行查询时,通过精真金不怕火的筹划就不错得到查询死亡,这种技巧被称为支柱查询的图数据压缩技巧.评价这种技巧浮浅包括两个方针:压缩率和查询时辰.压缩率示意压缩后的存储空间与图中边数的比,用bpe(bit per edge)示意;查询时辰示意判断给定两个节点之间是否存在边需要的时辰,单元浮浅为ms (microsecond).
1.2 图数据压缩技巧的发展历程及分类已知的最早进行支柱查询的图数据压缩技巧场地筹商的是文献[23],该文献中的法式将原图分割为多少子图,每个子图中的节点不错构造一个线性布局(linear layout)以豪放子图中节点之间的边互不相交,该法式需要O(gn) bit的存储空间(g示意图中子图的个数),对节点的邻居查询不错在O(g+tlog(n))时辰完成(t示意邻居的个数).之后,文献[24,25]对该算法进行了优化,将邻居查询的复杂度更正为O(g+t),同期不错支柱查询节点的度,也不错在O(g)时辰内查询两个节点是否相连.这些早期的算法,更多的是在表面上对压缩问题进行分析,在试验应用中并莫得终点好的后果.
从2000年起先,跟着汇集技巧的飞快发展,大范围图数据压缩技巧越来越受到东说念主们的深爱.文献[26,27,28]使用将原图分割的法式进行压缩,但均不可豪放较快的查询.文献[2,29]提议了一种笔据图中节点和贯串具有相似性的特色进行压缩的法式,文献[21,22]在此基础上提议了BV算法,该法式通过对网页图中的URL按照字典王法进行排序,由于王法相近的URL频频包含比较相似的邻居,应用这个性质,BV算法对网页图的压缩取得了特别好的后果.文献[30,31,32]先后对BV算法在存储空间和探询速率上作进一步优化.文献[33]提议了VNM算法,不错在不影响查询死亡的情况下将原图攻击为边数更少的图,再结合BV算法,不错进一步减少存储空间.文献[34]提议了AMN算法,将排序后的URL按照域(domain)进行分块,应用域内节点间关系的冗余,获取了较高的压缩率.
网页图不错通过精真金不怕火的节点排序对图数据进行压缩,但关于其他类型的图数据,举例酬酢汇集对应的图中节点,并莫得字典王法的意见,因此无法通过精真金不怕火的法式找到不错用以压缩的本性.文献[35]提议的FRS算法,界说了一种对图中的节点进行从头排序的法式,使排序后的节点也体现出和网页图近似性质,将重排序后的图再使用BV算法不错进行灵验的压缩.文献[36]提议了BFS算法,雷同遴选节点从头排序的法式,应用排序后相连表中相邻行的相反来存储图数据,以终端压缩的主见.文献[37,38]提议的DSM算法,通过发现图中的繁多图(dense graph),将原图分割为多个繁多图和一个疏淡图,对繁多图使用特殊的存储结构终端压缩.
通过发掘图数据的内在属性,不错对图数据进行压缩.但并不是通盘的图数据王人具有某种利于压缩的属性,而且发现这些属性也需要特别大的代价.因此径直压缩传统的图数据存储结构的法式也特别值得筹商.传统的图数据存储结构主要包括关联矩阵和相连表.文献[39]提议的K2树(K2-tree)算法,使用一种树形结构来存储关联矩阵,将全为0的子矩阵只用树中一个节点示意,由于关联矩阵中大多数元素为0,这种法式灵验地量入计出了存储空间.文献[40]笔据图数据对应的相连表构造一段字符序列,使用Re-Pair[41]和LZ78[42]算法对字符序列进行压缩,以达到压缩图数据的主见.
上头提到的压缩法式,在对数据进行压缩的时候,王人莫得探究在压缩后的数据上使用哪种形态进行查询.文献[43]提议的MPk算法针对需要同期豪放内邻和外邻查询的需求联想了一种特殊的存储结构,已有的算法淌若想要同期支柱内邻和外邻查询,需要把原始图和其对应的转置同期进行压缩,而这一法式不需要处理原始图对应的转置,何况对内邻和外邻的查询不错达到亚线性时辰复杂度.文献[44]提议的QPGC算法,针对可达性查询和图模式查询分别联想了不同的压缩法式,该算法通过特定的查询将原图攻击为一个新的比本来范围更小的图,再使用已有的压缩技巧进行压缩,不错进一步栽种压缩服从.
本文将图数据压缩技巧的筹商分为如图 2所示的4类:基于传统存储结构的压缩技巧、网页图压缩技巧、酬酢汇集图压缩技巧和面向特定查询的图压缩技巧.

传统的图数据存储结构主要包括关联矩阵,如图 1(a)所示,相连表如图 1(b)所示.关联矩阵使用矩阵示意图中各节点的关系,关于包含n个节点的图,图中的节点为V={v1,v2,…,vn},使用矩阵{aij}示意图中边的信息.矩阵中的值用0或者1示意,淌若aij为1,则示意E包含一条节点vi到节点vj的边e(vi,vj ),淌若aij为0,则示意莫得这么的边.相连表是一种链式存储结构,图中的每个节点vi对应着一个链adj(vi)={vi,1,vi,2,…,vi,ai},这个链中存储挨次存储着vi指向的通盘节点,其中vi,j<vi,j+1(1≤i≤n,1≤j<ai),adj(vi)中节点的个数为ai. 浮浅情况下,相连表比关联矩阵占用更少的空间,然而关联矩阵的探询速率快于相连表,是以针对不同的图数据和应用需求,这两种存储结构王人有着平常的应用.底下挨次先容基于关联矩阵和相连表的压缩技巧.
2.1 基于关联矩阵的压缩技巧在试验应用中,不论是网页图照旧酬酢汇集,使用关联矩阵存储时,产生的矩阵频频具有疏淡性.真实数据中边数远小于节点数,比如酬酢采聚会平均好友数只消约莫百东说念主,相干于数以亿计的总东说念主数而言横蛮常少的,网页图中更是如斯.应用关联矩阵的疏淡性,文献[39]提议了一种基于K2树的压缩技巧,取得了较好的后果.
K2树的每一层将关联矩阵分为K2个节点,树的高度为h=logkn.每个节点包含1bit数据:除了最底层,1示意里面节点,0示意叶子节点;最底层中,0或1示意该节点的值.最高层(艳丽为第0层)对应着根节点,它有K2个孩子在第1层.每一个孩子对应着一个节点,艳丽为0或者1.通盘的里面节点(艳丽为1)王人有K2个孩子,通盘的艳丽为0的节点和艳丽为1的叶子节点王人莫得孩子.构造K2树时,将原始矩阵分为K行K列个子矩阵后,每个子矩阵算作根节点的一个孩子,每个孩子是包含n2/K2个元素的矩阵.淌若孩子中淌若包含1,则陆续按照上述法式分为K行K列个子矩阵,算作这个孩子的孩子.淌若孩子中不包含1,一说念为0,则不再陆续分,这个孩子算作叶子节点.淌若子矩阵中只包含一个元素,则不论是1或者是0,王人罢手陆续分.每个节点的孩子按照它在父节点中的位置进行排列,从第1行起先,从左到右排列,然后是第2行,依此类推.关于生成的K2树,第0层为根节点,第1层包含K2个节点,挨次示意原始矩阵对应的部分,非最底层的0示意该位置对应的原始矩阵的元素王人为0,非最底层的1示意该位置对应的原始矩阵的元素中势必包含1,最底层的通盘节点艳丽的0或1对应着原始矩阵中元素的值.更大的K值对应的K2树的层数会更小,然而树中孩子的数目就会增多.

试验应用中,当关联矩阵中的n不即是K的多少次幂的时候,不错通过加多关联矩阵的行数和列数(新增的元素豪阔艳丽为0)来豪放条款.图 3给出了笔据图 1(b)中的关联矩阵在K=2时对应的K2树,矩阵中灰色部分为加多的全为0的行和列.生成的K2树不错使用两个位向量T和L来存储,位向量T挨次存储除最底层外的通盘节点,位向量L挨次存储最底层的通盘节点,如图 3中的位向量T和L.
使用K2树进行查询时,位向量T需要支柱两种操作rank(T,s)和select(T,s).rank(T,s)示意向量中前s位中包含1的个数,select(T,s)示意向量中第s位的值;位向量L只需要支柱select(L,s)操作.查询关联矩阵中元素aij的值不错通过多少次rank和select操作完成.select操作光显不错在常数时辰内完成,文献[23]证明使用荒芜的亚线性存储空间,rank操作也不错在常数时辰内完成,文献[39]中使用文献[45]提议算法存储位向量T,只需加多约5%的存储空间即可保证快速的rank和select操作.故使用位向量来存储K2树不错在减小存储空间的同期保证快速地查询.由于位向量只需要支柱select操作,文献[46]对位向量L使用文献[47]中提议的可径直探询的变长编码技巧DAC(direct access to variable-length code),DAC对位向量L进行压缩后select操作依然不错在常数时辰内完成.实验死亡标明,K2树对网页图的压缩率和查询时辰达到1.23bpe~3.22bpe和1.7μs~7.8μs,对酬酢汇集的压缩率和查询时辰达到11.73bpe~17.24bpe和5.9μs~15.81μs.
2.2 基于相连表的压缩技巧相连表中的每一滑王人示意一个节点的邻居集中,这些节点按照特定的王法排列,笔据文献[2,29]的分析,图数据中好多节点的邻居集中具有相似性,这就使得相连表中存储的信息产生了冗余,文献[40]提议了一种基于Re-Pair[41]的压缩算法,很好的应用这一特色对图数据进行压缩.
Re-Pair是一种基于短语的压缩算法,何况不错支柱快速的局部解压缩.该法式通过发现序列中的频频字符对,并使用新的象征来替换这个字符对,直到莫得可替换的字符对为止,已达到压缩的后果.序列T使用Re-Pair算法来压缩需要完成如下模范:
(1) 发咫尺序列T中最频频的模式ab;
(2) 加多一条章程s®ab到字典R中,其中s是一个新的莫得在T中出现过的象征;
(3) 使用s替换序列T中通盘的ab;
(4) 从第1步起先叠加,直到每一双字符在T中王人只出现1次.
将压缩完成的序列称为C,使用字典R不错快速地规复出C中苟且一个字符s:最初在R中找到s→s1s2这条章程,使用s1s2替换C中的s,并陆续在R中寻找s1和s2对应的章程,直到在R中找不到对应的章程.
文献[40]将相连表的存储结构进行了转换,以适用Re-Pair算法的压缩形态.关于图中的节点vi,与其相邻的节点记为adj(vi)={vi,1,vi,2,…,vi,ai},何况按照节点的序号进行排序.对每个节点vi加多一个象征示意相连表中每一滑的分隔,的值记为-vi.那么就不错将相连流露意成如下样式:
图 4给出了笔据图 1(c)中的相连表构造的T以及使用Re-Pair算法来对T进行压缩的经过.图 4中第1行示意生成的T,底下的每一滑示意加多一条章程到R中何况替换T中的字符,终末一滑裁撤加多的分隔符.使用一个数组Ptrs来记载每个节点对应的压缩后的数据中的肇始位置.在对节点vi进行邻居查询时,先通过数组Ptrs[i]和Ptrs[i+1]找到该节点对应的压缩数据的肇始和 断绝位置[Ptrs[i],Ptrs[i+1]),将该区间的数据按照上述法式进行解压缩即可.

使用Re-Pair算法进行压缩后的数据也适于存放在外部磁盘上,因为每次在查询时就不错算出所需数据位于压缩后数据的位置,然后再将这部分数据读到内存中进行解压即可.另外,由于每次加多章程,王人会产生荒芜的两个象征,也会使得R的范围越来越大,文献[48]中通过使用文献[49]提议了对R进行压缩的法式,不错使R的存储空间减少一半.实验死亡标明,Re-Pair算法对网页图的压缩率和查询时辰达到2.20bpe~3.93bpe和1.1μs~ 3.2μs,对酬酢汇集的压缩率和查询时辰达到14.84bpe~22.53bpe和4.2μs~7.3μs.
文献[40]提议Re-Pair算法的同期,还提议了一种基于LZ78[42]的压缩算法,LZ78算法的主要想想是在压缩息争压缩的经过中珍重一个字典:压缩时挨次从输入的字符序列中发现前缀(prefix),淌若前缀出咫尺字典中,则记载对应字典中的位置,淌若莫得出咫尺字典中,则输出前次记载的字典中位置和现时字符,并将现时前缀算作新的章程加入到字典中.
LZ78算法和Re-Pair算法不同的是,LZ78算法在压缩经过中将字典的信息也输出到了死亡中,字典不错在解压缩的经过生成,在存储压缩数据时并不需要存储字典,何况在解压时每次只需查询字典一次即可得到现时位置对应的原始数据,而Re-Pair算法需要查询字典屡次智力解压,故解压速率快于Re-Pair算法.然而LZ78算法在解压时必须从肇始位置起先,不然不可生成字典,是以在使用LZ78算法对相连表进行压缩时只可分别对每个节点的邻居集中进行压缩,这会导致每次压缩的数据范围变小,不可灵验应用数据间的冗余,这也适度了LZ78算法的压缩后果.在试验应用中,LZ78算法的压缩率不如Re-Pair算法,然而查询时辰略快于Re-Pair算法,实验死亡标明该算法对网页图的压缩率和查询时辰达到7.02bpe~12.97bpe和0.5μs~2.1μs,对酬酢汇集的压缩率和查询时辰达到18.29bpe~25.91bpe和4.0μs~7.1μs.
3 网页图压缩技巧第2节中先容的基于传统存储结构的压缩技巧主要应用图数据的外皮特色,对关联矩阵的压缩主要应用矩阵的疏淡性,对贯串表的压缩主要应用节点邻居集中的相似性.而在图数据的真实应用中,图数据示意的信息也包含内在的特色.举例网页图中吞并个域内的网页之间的贯串数比较多,而域之间的联结数就比较少.文献[21,22]通过分析网页图的贯串信息,发现笔据网页对应URL的字典王法对网页图进行排序后,字典序相近的网页包含的邻居集中相似的可能性更大.网页图具备以下两个特征:
· 土产货性:大多数贯串王人是域内(intra-domain)的,它们浮浅会指向字典序比较连合的页面.
· 相似性:在字典序中附近页面的邻居集中亦然相似的.
亚洲在线视频自拍精品文献[21,22]率先笔据这两种本性联想了BV算法,该法式不错通过调度参数终端压缩率和查询时辰之间的折中,以稳当不同的需求.最初,BV算法将通盘节点按照其对应URL的字典序进行排序,将排序后的节点从0起先艳丽,挨次艳丽为0,1,2,…,|E|-1,节点v的序号示意为index(v).其次,对苟且节点对应的外邻,使用序号在该节点之前的某个节点对应的外邻来示意.具体法式引入了正整数参数W,W示意参考范围,苟且节点v对应的out(v)使用排在v之前的W个节点中的某个节点u对应的out(u)来示意,其中,|out(v)Çout(u)|最大何况豪放index(v)-W≤index(u)≤index(v)-1,这时称u为v的参考节点.使用长度为|out(u)|的位向量来示意out(v)和out(u)之间的关系,第i个bit(1≤i≤|out(u)|)淌若为1则示意out(v)中包含out(u)中第i个节点,淌若为0则示意不包含.关于out(v)中包含然而out(u)中不包含的节点序列i1<i2<…<ik,挨次存储它们之间的相反i1,i2-i1,…,ik-ik-1.
BV算法允许节点屡次参考,比如v2为v3的参考节点,v1为v2的参考节点等等.关于k个屡次参考的节点序列vk,vk-1,…,v1,vi-1为vi的参考节点,k≥i≥2,这个节点序列称为参考序列,k为这个参考序列的长度.BV算法使用参数α来适度参考序列的最长长度,当α增大时,数据的压缩率就会栽种,同期查询速率下落,当α取无尽大时,压缩率达到最高,同期查询速率最慢.文献[30,31]在存储空间上对BV算法进行了优化,实验死亡标明当α=3时BV算法对网页图的压缩后果和查询时辰取得较好的均衡,压缩率达到2.04bpe~5.62bpe,同期查询时辰为2.3μs~ 4.2μs.
文献[33]结合BV算法提议了VNM(virtual node mining)算法.图数据在使用BV算法压缩前,先进行预处理,使用文献[50]中提议的发现完全二部图的法式寻找图中的二部图,在发现的完全二部图中加多一种新的节点,称为虚构节点(virtual node),这个完全二部图中出度大于0的节点均指向虚构节点,何况虚构节点均指向入度大于0的节点,并将二部图华夏有的边删去.这么不错灵验减少图中的边数,将攻击后的图再使用BV算法进行压缩,实验死亡标明,该算法对网页图的压缩率和查询时辰分别达到1.95bpe~2.90bpe和3.8μs~4 .5μs.
在发现通过土产货性和相似性不错对网页图进行很好的压缩后,由于吞并域内的URL更能体现出土产货性和相似性,文献[34]提议的AMN算法将URL排序后按照域分为多少块,对每一块再应用这两种本性分割为6种类型的子块来存储,该法式使压缩率进一步栽种.这6种类型的子块分别为:(1) 单元块(singleton block):由孤立的1构成;(2) 水平块(horizontal block):由水平方进取2个或2个以上一语气的1构成;(3) 垂直块(vertical block):有垂直方进取2个或2个以上一语气的1构成;(4) L型块(L-shaped block):由1个水平块和1个垂直块构成,它们分享位于左上角的1;(5) 矩形块(rectangular block):一说念由1构成的子矩阵,包含2行或2行以上以及2列或2列以上;(6) 对角块(diagonal block):从左上方到右下方包含2个或2个以上一语气的1.
图 5中的关联矩阵被分为多个不同类型的子块.其中,B1为水平块、B3为对角块、B5为矩形块、B6为垂直块、B8为L型块,剩余的子块B2,B4,B7,B9和B10为单元块.在发现这些子块的经过中,当某个元素不错同期属于多个子块时,遴荐包含1最多的子块,举例B6中的a40也不错和B7构成对角块,然而这个对角块中包含的1的个数为2,而B6包含1的个数为3.

按照上述法式发现通盘子块后,由于有单元块的存在,这些子块不错遮掩关联矩阵中通盘的1,对每个子块使用起先位置、类型和纬度构成的一个三元组特征来示意:起先位置为子块左上角元素的位置;类型为上述6种类型之一;维度为子块的范围,关于水平块、垂直块和对角块,纬度使用1个数值来示意,L型块和矩形块使用两个数值来示意,单元块忽略维度值.举例,B1使用((0,1),horizontal,5)示意,B2使用((0,9),singleton,1)示意,B5使用((2,4),rectangular,(3,5))示意,B8使用((7,1),L-shaped,(3,4))示意.这6类子块中除了单元块,均体现出了Web图的土产货性和相似性,是以使用这些三元组来代替关联矩阵中的1进行存储不错灵验减少存储空间,实验死亡标明,该法式对网页图的压缩率不错达到1.71bpe~2.78bpe,查询时辰达到2.38μs~28.72μs.
AMN算法固然取得了很好的压缩后果,然而其压缩经过复杂,在试验应用中关于一些范围比较大的图数据需要较长的压缩时辰.文献[51]提议的K2-Partitioned算法使用分块与K2树结合的想想,压缩时辰、压缩率和探询速率在试验应用中均具有较好的后果.
K2-Partitioned算法使用了一种盘算战术将图分割为t+1个子图,分别记为G1,G2,…,Gt+1,前t个子图节点和边互不相交,终末一个子图为原始图G删除这t个子图对应的边后的剩余图,然后再对这t+1个子图使用K2树进行压缩.这么作念会带来3方面的上风:
(1) 关于每一个子图对应的K2树的高度会减小,这会栽种查询的速率;
(2) 在查询速率变快的同期,并不会吃亏压缩率,因为原图中大多边王人属于吞并个域,而对图进行分割时,吞并个域内的节点会尽量地分在吞并个子图中;
(3) 剩余图会变成一个特别疏淡的图,也不错很好的阐扬K2树的性能,并不需要太大的空间就粗略存储.
对图进行分块的法式遴选一种盘算战术:将字典序中属于调换域的节点挨次加入现时子图,直到现时子图范围大于M(关于不同的数据M的取值也会不同)或者现时节点不属于现时子图中大多数节点所在的域,再接着创建新的子图.通过这种法式构建的子图,有90%把握的边粗略包含在前t个子图中,剩余图只是包含10%把握的边.实验死亡标明该算法对网页图的压缩率达到2.11bpe~4.00bpe,查询时辰达到1.0μs~2.3μs.
4 酬酢汇集图压缩技巧由于网页图按照URL字典序排序后当然地就不错体现出按域分类的特征,然而好多应用,比如酬酢汇集对应的图数据,并不不错径直对其中的节点进行排序.然而酬酢汇集也包含着近似于网页图体现的本性,举例吞并个社区内的好友关总计目比较多,而社区之间的好友关总计目就比较少.那么若何笔据这些本性对节点排序,使得排序后的节点序列体现出近似网页图的相似性和土产货性,便成为东说念主们筹商的要点.
文献[35]中的FRS算法率先提议了对酬酢采聚会的节点进行排序的法式,应用杰卡德相似总计(Jaccard similarity coefficient)将排序问题界说为寻找一种排列形态p,使得的值最小,其中p(v)示意
节点v在排序后的序诸君置.文献[52]证明求解这种排序的最优解是NP难的,笔据文献[53]给出了近似解的求解法式,终末将排序后的节点结合BV算法对网页图压缩的法式对酬酢汇集进行压缩.实验死亡标明该算法对酬酢汇集的压缩率和查询时辰分别达到13.48bpe~15.82bpe和2.4μs~4.4μs.
文献[36]笔据对酬酢采聚会的节点进行从头排序的想想提议了BFS(breadth first search)算法,使用宽度优先搜索对节点进行排序,应用排序后相连表中相邻行之间的数据冗余进行压缩.BFS算法包含参数l,将相连表相邻的每l项辞别为一块,每块只记载第1项的邻居集中,其余项记载与上1项的邻居集中的相反,这么不错通过调度l的大小来终端探询速率与存储空间的调度,通过实验证明,当l=4时压缩后果和查询时辰取得较好的均衡,对酬酢汇集的压缩率达到11.23bpe~17.84bpe,同期查询时辰为6.4μs~40.8μs.
文献[54]也提议了一种对节点进行排序的法式,界说了结构相似度的意见,以为两个节点的结构相似度为这两个节点邻居集中的错乱和并集元素个数的比值,并通过深度优先搜索每次优先遍历与现时节点结构相似度最高的节点,最终按照遍历的王法对节点重排序.重排序之后的图对应的关联矩阵中1元素的位置会愈加汇聚,再使用K2树对关联矩阵进行压缩,更多的1元素会被分割到吞并个K2树节点中.比较不进行重排序径直使用K2树,重排序之后不错使K2树节点减少30%~40%.
对节点重排序是为了将关系密切的节点集中排到连合的位置,再应用排序后的序列体现出的土产货性和相似性进行压缩.淌若不错径直找到关系密切的节点集中,笔据土产货性和相似性,这些节点和它们之间的边构成的图会是一个繁多图,对这个繁多图进行特殊的压缩处理,雷同不错终端存效的压缩.
文献[37]提议的DSM(dense subgraph mining)算法,使用与第3节中VNM算法相似的发现完全二部图的法式.然而在酬酢汇集试验应用中发现图中多半节点并不包含在某些完全二部图中,如图 6(a)中4、5和6、7节点不错构成完全二部图,而1、2、3节点却不在职何完全二部图中.于是该算法在图中的每个节点上加入自环(loop),再使用VNM算法中发现完全二部图的法式,终末将未包含在完全二部图中的节点的自环删去,就不错将图 6(a)攻击为图 6(b)的样式,将原图中的通盘边王人包含在这个完全二部图中,同期该算法将这个完全二部图使用一个位向量B和一个节点序列X来示意其中节点的关系,如图 6(c)所示.

在试验应用时,DSM算法最初从图中发现尽量多的完全二部图,浮浅不错将图中90%以上的边包含其中,再将第i个完全二部图对应位向量Bi,与节点序列Xi拼接为刻绘画通盘完全二部图的位向量B=B1B2…BN和节点序列X=X1X2…XN.对位向量B和节点序列X使用文献[55,56]提议的压缩法式存储并提供查询.对图中莫得被包含在完全二部图中边构成的剩余图,使用K2树来压缩存储.文献[38]对DSM算法在完全二部图发现以及存储结构方面作念了进一步优化,并通过实验证明DSM算法对酬酢汇集的压缩率达到8.41bpe~13.04bpe,同期查询时辰为7.6μs~11.8μs.
5 面向特定查询的图压缩技巧好多应用在使用图数据时,随机只使用很少的一种或者几种查询形态,比如内邻或外邻查询、可达性(reachability)查询和图模式(graph pattern)查询等.针对这些不同查询的特色,不错使用特殊的压缩法式,以使查询愈加速速高效.文献[43]针对内邻和外邻查询联想了MPk(multi-position linearization of degree k)算法,文献[44]提议的QPGC(query preserving graph compression)算法针对可达性查询和图模式查询将原图简化为范围更小的图,在这个图的基础上依然不错遴选已有的压缩技巧.
已知的大多算法频频只可支柱外邻查询,淌若需要查询内邻,则需要更多的时辰或空间代价,文献[43]提议的MPk算法很好地料理了这一问题,在不需要荒芜存储空间的情况下同期支柱快速的内邻和外邻查询.该法式遴选了一种近似于欧拉旅途的法式,淌若原图中存在一条欧拉旅途,即为图中存在一条每个边遍历一次且仅遍历一次的旅途,淌若不存在,加多尽量少的边以完成欧拉旅途,然后将这条旅途上的节点挨次排序,这个序列中部分节点可能会出现屡次,关于每个节点使用两个bit来示意这个节点与两侧节点的关系.
图 7为MPk算法笔据图 1(a)中的图构造的存储结构,图中还存在着一些边,它们指向调换节点的下一个位置,淌若节点莫得出现叠加,则指向该节点自己.在该结构的基础上,还需要荒芜存储每个节点对应在该结构中的肇始位置.使用该结构进行内邻或者外邻查询时,最初找到要查询节点的肇始位置,查询该节点和两侧节点的关系,再通过指向该节点下次出现位置的边陆续遍历同期查询和两侧节点的关系,直到跳转回肇始位置,即可得到该节点通盘的内邻和外邻.

在试验应用时,每个节点不仅不错记载与两侧相邻的1个节点的关系,也不错使用2k个bit记载与两侧最连合的k个节点的关系,这么固然加多了每个节点的存储空间,然而不错示意更多的边以减少节点的数目,是以关于不同的图数据需要考中不同的k值.实验死亡标明MPk算法对酬酢汇集进行压缩时,k浮浅考中10~40,压缩率达到8.48bpe~17.02bpe,同期查询时辰为8.0μs~12.9μs.
跟着新应用的发展,尤其是酬酢汇集的兴起,对图的查询不单是有邻居查询或者判断边是否存在,还产生了一些比较复杂的查询形态,比如可达性查询或者图模式查询.淌若依旧使用本来的压缩法式,在压缩数据的基础上再附加算法来筹划,会导致速率下落.文献[44]中提议的QPGC算法针对这两种查询形态,对图G进行化简生成G¢何况在查询时并不需要将G¢规复为G,只需要将查询和查询死亡进行转换即可.
关于可达性查询,QPGC算法将图G中通盘具有到达该节点的集中和该节点不错到达的节点集中调换的节点归为一类,何况在G¢中使用1个节点来示意.图 8(a)中给出了图G以及笔据可达性查询攻击后的图G¢,图G中节点A和节点E不错到达的节点集中王人为{B,C,D},不错到达节点A和节点E的集中王人为空集,是以不错将节点A和节点E归为一类.在查询一双节点是否可达时 ,只需查询这对节点在G¢中对应的节点是否可达即可.

关于图模式查询,使用文献[57]提议的节点互模拟关系(bisimulation relation),关于节点类型调换的两个节点u和v,淌若u和v合适以下两个条款之一,那么u和v是互模拟关系.这两个条款分别是:
(1) u和v的类型调换何况out(u)和out(v)王人为空集;
(2) 关于每一个节点u¢(u¢Îout(u)),王人存在节点v¢(v¢Îout(v)),豪放u¢和v¢为互模拟关系,反之亦然.
将图G中通盘具有互模拟关系的节点归为一类,在G¢中使用一个节点来示意,图 8(b)中给出图G以及笔据图模式查询攻击后的图G¢.图G中C1与C2光显为互模拟关系;由于out(B1)和out(B2)分别为{C1}和{C2},故B1与B2也为互模拟关系;out(A2)和out(A3)分别为{B1,C1}和{B2,C1},调换的节点当然豪放互模拟关系,是以A2与A3为互模拟关系;然而out(A1)为{B1},out(A2)和out(A3)中的C1无法在out(A1)中找节点和其酿成互模拟关系,故A1无法与其他节点酿成互模拟关系.
文献[44]对以上两种攻击形态的正确性给出了严格的证明,并证明这种压缩法式与以往的压缩法式存在的不同之处在于,已有的压缩技巧王人不错和该算法同期使用,因为不错使用这些已有的压缩技巧对攻击后的图G¢进行压缩.实验死亡标明,笔据可达性查询进行攻击后的图相干于原图范围约莫减小95%,查询时辰相干于原图约莫减小98%,笔据图匹配查询进行攻击后的图相干于原图范围约莫减小57%,查询时辰相干于原图约莫减小70%.
除了网页图和酬酢汇集,越来越多的新领域使用图来刻画和分析数据,举例语义挖掘(semantic mining)中的语义网(semantic Web)[58],以及生物信息学中的转录汇集(transcription network)[59]、卵白质相互作用汇集(protein-protein interaction network)[60]和代谢汇集(metabolic network)[61]等.这些新的应用场景对图数据进行分析时产生了好多新的何况比较复杂的查询形态,不同的查询形态之间的相反也比较大,关于这些需求浮浅需要联想有针对性的压缩法式以达到较好的压缩后果.文献[62]对语义挖掘中两种典型的应用场景联想了两种压缩战术:等效压缩(equivalent compression)和依赖压缩(dependent compression),取得了较好的后果.文献[63]笔据转录采聚会节点之间的相互关系,将多个节点攻击为一个强节点(power node),多条边攻击为一条强边(power node),减少了图中节点和边的数目,不错灵验简约存储空间.
6 图数据压缩技巧比较与将来发展 6.1 图数据压缩技巧比较在试验使用中,对图数据进行压缩时算法在压缩率和查询时辰方面阐扬出不同后果,本节笔据公开的真实数据集测试上述代表性算法,并分析、对比其性能.
表 2列举了测试中使用的真实网页图数据和酬酢汇集数据,其中LJ-1数据来自于斯坦福大学SNAP[64] (Stanford Network Analysis Package Project),其尾数据均来自于米兰大学LAW[65](Laboratory for Web Algorithmics).表 2分别刻画了这些数据集的节点数、边数、节点数与边数的比值和该数据集在其网站的文献名.表 3和表 4分别列举了不同算法对网页图数据和酬酢汇集数据的压缩率和查询时辰.关于不错获取源代码的算法,列举了在长入的实验环境下进行的测试死亡,其中K2-tree,Re-Pair,LZ78,K2-Partitioned和MPk算法的源代码来自智利大学FCWGR[66](Fast Compact Web Graph Representations Project),BV和FRS算法的源代码来自WebGraph框架[67] (WebGraph framework),BFS算法的源代码来自提议该算法的文献[36]作家Guido Drovandi的个东说念主网站[68],算法中的参数均使用在压缩和探询之间取得较好折中时的树立.测试使用的实验环境为Red Hat Enterprise Linux 6.0 Server 64位操作系统,系统树立为Intel(R) Core(TM) i7-3820处理器,32GB内存.关于无法获取源代码的算法,列举了关连文献中在调换数据集下的测试死亡,VNM算法的测试死亡来自文献[33],AMN算法的测试死亡来自文献[34],DSM算法的测试死亡来自文献[69].表 3中的“-”示意无法获取该算法在现时数据下的测试死亡.

Table 3 Comparison of different compression algorithms over Web graph 表 3 不同算法对网页图的压缩后果对比
Table 4 Comparison of different compression algorithms over social network 表 4 不同算法对酬酢汇集的压缩后果对比
由于未能获取QPGC算法的源代码,何况也未能在关连文献中找到该算法使用表 2中数据的测试死亡,故未列举该算法与其他算法在调换测试数据下的性能对比.提议该算法的文献[44]分别使用网页图、酬酢汇集、论文引证关系图(citation map)和P2P汇集(peer-to-peer network)等多组图数据测试该算法在进行可达性查询和图匹配查询时的压缩率和查询时辰.文献[44]中的实验标明笔据可达性查询进行攻击后的图所占的存储空间平均比较原图空间减少约95%,同期查询时辰减少约98%,笔据图匹配查询进行攻击后的图所占的存储空间相干于原图范围减小约57%,同期查询时辰减少约70%,关于吞并类型的测试数据,压缩后的查询时辰浮浅跟着图数据的范围加多而变慢.
通过对比不同算法阐扬出的压缩率与查询时辰,对每类技巧进行转头分析得到如下论断:
(1) 基于传统存储结构的压缩技巧不需要对图中的节点进行排序,K2树算法的压缩后果好于Re-Pair算法和LZ78算法,但Re-Pair算法和LZ78算法的查询时辰较快.K2树算法不但不错支柱外邻查询还不错支柱内邻查询,而Re-Pair算法和LZ78算法只可支柱外邻查询.Re-Pair算法和LZ78算法支柱局部解压缩,压缩后的数据适于存放在外部磁盘上.
(2) 网页图压缩技巧中,BV不错调度压缩率和查询时辰的关系,在压缩率和查询时辰方面王人阐扬出较好的性能.当图中包含较多完全二部图时,使用VMN算法对图数据进行处理后,压缩率不错进一步栽种.AMN算法的压缩率较高,然而开动化经过复杂,范围较大的图需要的预处理时辰较长,对有些数据集查询时辰较长.K2-Partitioned算法的预处理经过精真金不怕火,不错较快地进行数据压缩,同期查询时辰较短.
(3) 由于酬酢汇集与网页图数据特色的不同,对酬酢汇集进行压缩的后果差于对网页图的压缩后果.在酬酢汇集图压缩技巧中,FRS算法对酬酢采聚会节点排序后,使用BV算法进行压缩,在压缩率和查询时辰两方面的性能王人较好.DSM算法在图中包含边较多的繁多子图时压缩率较高,然而查询时辰慢于FRS算法.
(4) 面向特定查询的图压缩技巧中,QPGC会改造图的结构,何况改造之后的图无法例复,只消关于特定的查询比如可达性查询和图模式查询,智力使用QPGC.而MPk不改造图的结构,当外邻查询和内邻查询的速率同期要求较高时比较妥贴使用这种法式.
6.2 将来发展对处理图数据时濒临的存储空间过大的问题,不错通过外部存储器存储、分散式处理以及使用构造支柱查询的压缩结构等形态来料理,然而由于磁盘探询速率以及图数据的耦合性较强等原因导致前两种决议容易产生查询延时较大等问题,而遴选第3种决议即图数据示意与技巧不错在保证查询速率的同期缩减存储空间.
本文分别从基于传统存储结构的压缩技巧、网页图压缩技巧、酬酢汇集图压缩技巧和面向特定查询的图压缩技巧4个方面脱手,分析了图数据压缩技巧的筹商近况并注意先容了不同方面在试验应用中取得后果较好的典型算法.通过分析发现,针对不同的图数据,遴选不同的技巧或者多种技巧相结合智力产生较好的后果,浮浅先将图数据进行预处理,减少图中的数据冗余或者诊治图的结构,再对处理后的图遴选合适的压缩结构,淌若有特殊的查询需求,还不错针对这种需求进行优化.
对网页图进行压缩的筹商仍是比较练习,在压缩率和查询时辰两方面王人取得了较好的后果.现阶段筹商比较火热的是针对酬酢汇集进行压缩的技巧,将来更多的筹商可能会遴选模式识别以及机器学习等方面的技巧来更好地分析酬酢采聚会的信息冗余,以终端更好的压缩后果.面向特定查询的图压缩技巧最近才引起东说念主们的可贵,然而跟着图数据应用越来越广激萌系列,会产生好多特殊的查询形态,关于这些查询,传统的法式可能后果并不睬想,而遴选特殊的处理形态则会产生特别好的后果,是以对该技巧的筹商也会愈加受到东说念主们的深爱.
- 激萌系列 还看啥春晚 光这些采集电影的片名就够你笑一晚2025-04-14
- 男同 做爱 信阳市政务大数据中心、信阳市公安局行政审批服务科(公安专区)调理开展防暴救急处突培训行为2024-12-14