本文由北京大学信息科学技术学院高可信度软件技术(MOE)重点实验室的Yingxia Shao、Bin Cui、Lin Ma、Junjie Yao、Ning Xu和香港科技大学的Lei Chen发表。

在本文中,提出了一个有效的并行解决方案,称为PSgL,以解决大规模图上的subgraph listing问题。PSgL是一种并行迭代subgraph listing框架,它具有良好的图友好性,是在基本图操作的基础上设计的。此外,还引入了一些优化技术来平衡工作负载和减少中间结果的大小,从而进一步提高了PSgL的性能。

Subgraph Listing是一种在数据图中遍历所有与模式图(Pattern Graph)同构的子图实例。

在PSgL中,影响subgraph listing性能有:①工作量平衡问题和②巨大规模的子图实例问题

解决第一个问题,设计了一些分配策略:1、随机分配策略(random distribution strategy)。2、轮盘法分配策略(roulette wheel distribution strategy)。3、负载感知分配策略(Workload Aware Distribution Strategy)。

解决第二个问题,首先打破模式图的自同构(Automorphism Breaking of the Pattern Graph),接着通过代价模型选取一个好的初始模式点(Initial Pattern Vertex Selection),最后设计了一个轻量级边索引来尽早排除无效的子图实例(Pruning Invalid Partial Subgraph Instance)。


前期提到的关键概念:
幂律图(Power-law Graph) 其度数分布服从幂次定律的图。度数为d的顶点的概率:Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors,参数γ是正的常数,控制度分布的偏向程度,较低的γ表明更多的顶点是高度的,即更大的倾斜。

随机图(Random Graph) 随机生成的图,大多数顶点的度数都在平均值附近。

有序图(Ordered Graph) 有序图是一个无向图,对顶点的局部有序进行手动分配。
有序:
1、对于Vd中任意的vd与ud,如果deg(vd) < deg(ud),vd < ud。
2、如果deg(vd)=deg(ud),并且vd的顶点id更小,则vd < ud。
性质:nb的分布比原来的度分布更加倾斜,而ns更加平衡。

局部子图实例(Partial subgraph instance) 是一个数据结构,记录Gp到Gd的映射,由Gpsi表示。

一个模式图的自同构(Automorphism of a Pattern Graph) 是模式图的顶点排列,不同排列,仍为同构的图


枚举期间的所有部分子图实例形成一个树,称为Gpsi树,如下图所示:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors
在Gpsi树中,最初的枚举任务从上到下被划分为更细粒度的子任务(子树)。我们还注意到除了其生成路径中的实例之外的部分子图实例彼此独立。因此subgraph listing问题可以使用分治法解决。


PSgL负责并行地构造模式图的Gpsi树,由两个阶段组成:

  • 初始化阶段

    • 每个数据顶点创建一个Gpsi只包含数据顶点和所选初始模式顶点的一个顶点映射对。这些Gpsi构成了局部子图实例的初始集,并以一个一级Gpsi树作为起点。
  • 扩展阶段

    • 这是框架的核心过程。在一个迭代中,当分治法发生时,每个Gpsi在一个特定的worker上独立地扩展,并生成更细粒度的Gpsi。如果不是完整的子图实例,则根据分发策略将新的Gpsis发送给下一个worker。当之前接收到的Gpsis被处理,新的Gpsis被相应的工人接收时,迭代就结束了。直到框架中没有Gpsi,这个阶段才会结束。

扩展子图实例的算法:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors

处理vp点的邻居的算法:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors


任务的总代价:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors

三个影响性能的因素:

  1. 迭代次数(被证明为有界,|MVC| <= S <= |Vp|-1)
  2. 工作负载平衡
  3. Gpsi的数量

优化技术分为两类:负载平衡的部分子图实例分发策略;减少部分子图实例的数量。

①负载平衡的部分子图实例分发策略:

Workload Aware Distribution Strategy 描述如下:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors

Roulette Wheel Distribution Strategy 描述如下:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors

Random distribution strategy:
随机分布策略是随机选择一个Gpsi的灰色顶点。它将平衡一个worker处理的Gpsi的数量。

②减少部分子图实例的数量:

从三个方面提出了三种独立的机制:

1)Automorphism Breaking of the Pattern Graph
为模式图分配了一个偏序集,这不仅可用于打破模式图的自同构,还可以修剪部分子图实例。
选取一个好的偏序集的启发式方法:在每一次迭代中,选择含有度较高的顶点的等价顶点集进行分割。

2)Initial Pattern Vertex Selection
基于代价模型选取初始模式点
对于普通模式图的算法描述:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors
时间复杂度为O(|Vp| × |Ep|)

对于环和团:
最好的初始模式顶点是一个遍历顺序,该遍历顺序最小化局部子图实例的总数。
对于幂率图,选取的最佳初始模式点可以显著地增强性能。对于随机图则不能增加很多

3)Pruning Invalid Partial Subgraph Instance
白顶点候选集的质量提高,有助于减少无效的部分子图实例的数量
伪代码描述如下:
Parallel Subgraph Listing in a Large-Scale Graph Categories and Subject Descriptors


后面是实验验证,就不再赘述

相关文章: