一种图算法友善的强连通图划分方法技术

技术编号:16270012 阅读:25 留言:0更新日期:2017-09-22 21:41
本发明专利技术公开了一种图算法友善的强连通图划分方法,包括以下步骤:将图数据分解成若干个集合;利用多源宽度优先搜索算法将大小超过给定阈值的集合进一步划分成多个搜索树;利用启发式算法将搜索树组装成多个子图;本发明专利技术提供的强连通图划分方法可将强连通图划分成多个子图,而且与其他以割边即子图之间的边最小化、子图大小均衡为目标的现有hash或METIS划分方法均不同,在划分强连通图时考虑了边的方向和图数据的结构使得划分后的子图内部连通度较好、子图大小相对均衡,从而能有效提高图算法对其处理时的效率,解决在内存大小受限的限定条件下如何将大型强连通图划分成多个大小大致相同、连通度较好的子图的问题。

【技术实现步骤摘要】
一种图算法友善的强连通图划分方法
本专利技术涉及大数据处理
,更具体地,涉及一种图算法友善的强连通图划分方法。
技术介绍
随着大数据时代的来临,图数据的规模快速增长并迅速超过了普通计算机的内存容量,为了对大规模图数据进行处理,研究人员提出了许多图划分方法将大规模图数据首先划分成若干个子图,使得每个子图能够装进内存,然后再依次将每个子图从磁盘载入内存并在其上运行图算法(这种处理方式称为核外图处理方式)。在此背景下,如何划分子图使得在核外环境下图算法能够在图数据上高效运行,是一个亟待解决的问题。现有的图划分方法有很多,比如hash划分方法和基于多层图粗化的METIS划分方法等。Hash划分方法根据需要划分的子图数目,按照对每个顶点编号取模的结果将其分配到相应的子图中,这种方法可使得子图大小均衡(即每个子图中顶点的数量相同),但完全忽略了顶点之间存在的相邻关系和图算法的具体特点(比如同一个顶点在某些图算法执行过程中状态变化频繁,而在其他图算法执行中状态变化很少)。METIS划分方法包括粗化、划分、细化三个阶段。在粗化阶段,采用启发函数通过多轮粗化将多个顶点融合成一个顶点,使得图规模迅速减小并将缩小后的图作为第二阶段的输入。在划分阶段,采用经典划分方法(比如Kernighan-Lin方法)将粗化后的图进一步划分成多个子图。在细化阶段,根据第二阶段的划分结果,将粗化图中的顶点逐步还原为原始图中的顶点。METIS针对无向图往往能取得较好的效果(比如子图之间的割边数目较小、各个子图的大小比较均衡),但缺点也很明显:(1)在划分之前需要将图数据完全载入内存并在运行过程中占用大量内存,当现实世界图规模越来越大时,这种方式对于有限的内存容量来说是不可接受的;(2)对有向图进行划分之前,需要将其转换成无向图,这导致有向图中边的方向信息丢失。还有一些划分方法采用宽度优先搜索来划分子图,但这些划分方法通常从图数据中随机选取顶点作为宽度优先搜索的起始点,而且最后仅仅根据搜索树大小来组装子图,这种方法忽视了图算法的具体特点和图结构的关系,造成图算法和图划分方法不适应并使得后续图算法在子图上运行时遇到消息传播缓慢、顶点状态变化频繁等问题。总体而言,现有的图划分方法存在以下不足:(1)对有向图划分时没有考虑边的方向信息;(2)划分时没有考虑现实世界图中巨型强连通分量的存在对图算法性能的影响;(3)划分时没有考虑不同类型的图算法所具有不同特点对图数据中顶点状态变化的影响。弱连通分量是指无向图中的一个子图(即顶点和边的集合),该子图中任意一个顶点都可通过无向边组成的路径到达子图中的其他顶点。有向图可通过忽略边的方向来找对应的弱连通分量。常用的弱连通分量寻找算法是基于最小标签传播实现的,即每个顶点将自己的标签发送给相邻顶点,并从收到的标签中选择最小的作为自己的标签,算法多次运行直到图数据中所有顶点的标签不再变化为止。强连通图(即强连通分量)是指有向图中的一个子图,该子图中任意一个顶点都可以通过有向边组成的路径到达其他顶点。在现实世界的图数据(简称为现实世界图)中往往存在很多的强连通分量,这些强连通分量中常有一个巨型的强连通分量,对于社交网络图而言,该巨型强连通分量的大小往往占整个图数据规模的80%左右,剩下的绝大部分都是小型强连通分量。由强连通分量的定义可知任意两个强连通分量之间边的方向都是单向的。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种图算法友善的强连通图划分方法,解决在限定条件下如何将大型强连通图划分为多个大小均匀、连通度好的子图的问题。为实现上述目的,按照本专利技术的一个方面,提供了一种图算法友善的强连通图划分方法,包括如下步骤:(1)将图数据划分成多个强连通分量的集合并将这些集合依次加入到第一队列Queueset中;(2)取出第一队列Queueset中的第一个集合;(3)判断该集合的大小是否小于给定的内存容量参数MC,如果是则进入步骤(4),否则进入步骤(5);(4)将该集合组装成一个子图;(5)用多源宽度优先搜索算法将该集合中部分顶点划分成多个搜索树,用弱连通分量算法将未被访问的顶点分解成多个弱连通分量,并将集合中的搜索树组装成多个子图;(6)判断第一队列Queueset是否为空,若是则结束,否则进入步骤(2)。优选地,上述的强连通图划分方法,其步骤(5)包括如下子步骤:(5.1)从集合的图数据中选取入度最大的Numroot个顶点作为根结点并从这些根结点同时开始进行宽度优先搜索,每次宽度优先搜索形成一个由顶点和边组成的搜索树,由所形成的搜索树构成一个搜索树集合;(5.2)判断图数据中未被访问的顶点总数是否小于给定阈值Numactive,如果是则进入步骤(5.3),否则进入步骤(5.1);(5.3)采用弱连通分量寻找算法将所有未被访问顶点划分成多个弱连通分量并加入到搜索树集合中;本步骤中的弱连通分量是顶点和边的集合,集合中顶点通过忽略边的方向互相可达;弱连通分量寻找算法可采用基于最小标签传播的算法来实现,该算法首先将图数据中每个顶点的编号作为该顶点对应的标签初始值;然后由每个顶点将自己的标签发送给相邻顶点,并从收到的标签中选择最小的作为自己的标签;多次运行上述步骤直到图数据中所有顶点的标签不再变化为止,由此拥有相同标签的顶点就属于同一个弱连通分量;(5.4)选择K个最大的搜索树作为K个子图的起始搜索树,并将这K个搜索树标记为已访问;其中,K根据给定的内存容量参数MC与搜索树集合的大小来确定;(5.5)在K个子图中选择最小的一个子图作为活跃子图;(5.6)从所有未被访问的搜索树中选择一颗与活跃子图连通度最大的搜索树作为第一搜索树treehigh;(5.7)在不超过内存容量参数MC的前提下,判断上述搜索树treehigh是否存在,若是则进入步骤(5.9),否则进入步骤(5.8);(5.8)增加一个新子图以及该子图对应的集合,选择一个最大的未被访问的搜索树加入到新子图中,将该搜索树标记为已访问,令K=K+1,进入步骤(5.10);(5.9)将搜索树treehigh标记为已访问并将其加入到活跃子图中,并进入步骤(5.10);(5.10)判断搜索树集合中是否存在未被访问的搜索树,如果是则进入步骤(5.5),否则结束。优选地,上述的强连通图划分方法,其步骤(5.1)包括如下子步骤:(5.1.1)初始化图数据;(5.1.2)选择入度最大的Numroot个未被访问顶点作为Numroot个对应宽度优先搜索的起始点,其中,Numroot是由用户指定的参数;(5.1.3)同时从上述Numroot个顶点开始进行宽度优先搜索,每次宽度优先搜索将遍历过程中遇到的顶点和边加入到对应的搜索树中并将该搜索树中的顶点标记为已访问,每次宽度优先搜索最多运行L次;当上述Numroot个宽度优先搜索遍历均停止之后,将这Numroot次宽度优先搜索形成的搜索树依次加入到搜索树集合Settree中;其中,L是用户指定的参数,使得形成的搜索树的最大规模不超过内存容量参数MC。优选地,上述的强连通图划分方法,其步骤(5.2)中,判断所述图数据中未被访问的顶点总数是否小于给定阈值Numactive,若是则进入步骤(5.3),否则进入步骤(5.1.2)本文档来自技高网
...
一种图算法友善的强连通图划分方法

【技术保护点】
一种图算法友善的强连通图划分方法,其特征在于,包括如下步骤:(1)将图数据划分成多个强连通分量的集合并将这些集合依次加入到第一队列中;(2)取出第一队列中的第一个集合;(3)判断该集合的大小是否小于给定的内存容量参数,如果是则进入步骤(4),否则进入步骤(5);(4)将该集合组装成一个子图;(5)用多源宽度优先搜索算法将该集合中部分顶点划分成多个搜索树,用弱连通分量算法将未被访问的顶点分解成多个弱连通分量,并将集合中的搜索树组装成多个子图;(6)判断第一队列是否为空,若是则结束,否则进入步骤(2)。

【技术特征摘要】
1.一种图算法友善的强连通图划分方法,其特征在于,包括如下步骤:(1)将图数据划分成多个强连通分量的集合并将这些集合依次加入到第一队列中;(2)取出第一队列中的第一个集合;(3)判断该集合的大小是否小于给定的内存容量参数,如果是则进入步骤(4),否则进入步骤(5);(4)将该集合组装成一个子图;(5)用多源宽度优先搜索算法将该集合中部分顶点划分成多个搜索树,用弱连通分量算法将未被访问的顶点分解成多个弱连通分量,并将集合中的搜索树组装成多个子图;(6)判断第一队列是否为空,若是则结束,否则进入步骤(2)。2.如权利要求1所述的强连通图划分方法,其特征在于,所述步骤(5)包括如下子步骤:(5.1)从集合的图数据中选取入度最大的Numroot个顶点作为根结点并从这些根结点同时开始进行宽度优先搜索,每次宽度优先搜索形成一个由顶点和边组成的搜索树,由所形成的搜索树构成一个搜索树集合;(5.2)判断图数据中未被访问的顶点总数是否小于给定阈值Numactive,如果是则进入步骤(5.3),否则进入步骤(5.1);(5.3)采用弱连通分量寻找算法将所有未被访问顶点划分成多个弱连通分量并加入到搜索树集合中;(5.4)选择K个最大的搜索树作为K个子图的起始搜索树,并将这K个搜索树标记为已访问;其中,K根据给定的内存容量参数与搜索树集合的大小来确定;(5.5)在K个子图中选择最小的一个子图作为活跃子图;(5.6)从所有未被访问的搜索树中选择一颗与活跃子图连通度最大的搜索树作为第一搜索树treehigh;(5.7)在不超过内存容量参数的前提下,判断上述搜索树treehigh是否存在,若是则进入步骤(5.9),否则进入步骤(5.8);(5.8)增加一个新子图以及该子图对应的集合,选择一个最大的未被访问的搜索树加入到新子图中,将该搜索树标记为已访问,令K=K+1,进入步骤(5.10);(5.9)将搜索树treehigh标记为已访问并将其加入到活跃子图中,并进入步骤(5.10);(5.10)判断搜索树集合中是否存在未被访问的搜索树,如果是则进入步骤(5.5),否则结束。3.如权利要求2所述的强连通图划分方法,其特征在于,所述步骤(5.1)包括如下子步骤:(5.1.1)初始化图数据;(5.1.2)选择入度最大的Numroot个未被访问顶点作为Numroot个对应宽度优先搜索的起始点,其中,Numroot是由用户指定的参数;(5.1.3)同时从所述Numroot个未被访问顶点开始进行宽度优先搜索,每次宽度优先搜索将遍历过程中遇到的顶点和边加入到对应的搜索树中并将该搜索树中的顶点标记为已访问,每次宽度优先搜索最多运行L次;当所述Numroot个宽度优先搜索遍历均停止之后,将这Numroot次宽度优先搜索形成的搜索树依次加入到搜索树集合Settree中;其中,L是用户指定的参数,使得形成的搜索树的最大规模不超过内存容量参数。4.如权利要求2或3所述的强连通图划分方法,其特征在于,所述步骤(5.2)中,判断所述图数据中未被访问的顶点总数是否小于给定阈值Numactive,若是则进入步骤(5.3),否则进入步骤(5.1.2);其中,阈值Numactive是由用户根据图数据中顶点总...

【专利技术属性】
技术研发人员:石宣化邵志远梅珍杰金海
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

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

1