淘先锋技术网

首页 1 2 3 4 5 6 7

近几年的图组件挖掘(Graph Gattern Mining)软件优化算法状况

——最近在做图论相关加速器的研究,对近期的GPM软件优化算法做了调研,现在整理后顺便写成一篇小文章。

本次调研的目的是为了了解学术上单机GPM算法的现状,并探索将单机计算拓展到分布式计算的潜力。带着上述目的,我调查了近几年的论文,其中对我价值最大的文章是《In-Memory Subgraph Matching: An In-depth Study》1。这篇文章总结了截止到2020年6月为止的存内子图匹配算法。

问题描述

图组件挖掘(Graph Pattern Mining,后面统一简称GPM)指的是根据给定查询Q和数据图G,输出embedding函数集FF表示所有能够从Q映射到G的embedding函数f的集合。典型的应用有三角形计数、k-clique计数、子图匹配和k-motif计数等等。

input: query Q, data graph G
output: embedding function set F

GPM问题建模思路是将GPM的过程视为搜索树,树的深度为Q中节点数量,树中level i 的节点具有i+1个匹配节点。
图片来源:《FlexMiner: A Pattern-Aware Accelerator for Graph Pattern Mining》

算法分类

后面会提到的算法有Graphflow、EmptyHeaded、GpSM、CECI、Clasgow、STwig、GSI、CFL、DAF,后面只会进行简单的介绍,想深入了解的朋友可以搜索相关论文查看。

按照搜索树的搜索顺序,GPM算法可分为sequential型和parallel型,sequential型的搜索顺序和DFS相同,占用内存空间小;parallel型的搜索顺序类似BFS,消耗大量内存,天然适合分布式计算。

sequential型算法有:Graphflow、EmptyHeaded、GpSM等
parallel型算法有:CECI、Clasgow、STwig等

按照枚举的方法,GMP算法可分为direct-enumeration型、indexing-enumeration型和preprocessing-enumeration型。direct-enumeration型指的是直接进行枚举的算法;indexing-enumeration型指的是在图加上索引的前提下进行枚举,有文章讲到使用这类枚举会产生错误2;preprocessing-enumeration型是使用额外的辅助结构进行枚举,使用这种枚举类型的算法通常能取得比其它算法更好的性能。

总结

现在不存在一个能吊打一切的GPM算法,在不同的情况下(大规模/小规模图,稀疏/稠密图,不同规模的查询)存在不同的最快算法。
现有算法存在拓展性不足,时间开销高等问题。初步结论是有做GPM加速器的潜力。

硬件加速器方面

在GPM专用加速器领域,近期有FlexMiner(2021)、Gramer(2020)、TireJax(2019)。(其中Gramer宣称自己是第一个graph mining accelerator
后面会对这几个专用加速器做一个调查。


  1. Shixuan Sun and Qiong Luo. 2020. In-Memory Subgraph Matching: An In-depth Study. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD’20), June 14–19, 2020, Portland, OR, USA. ACM, New York, NY, USA, 16 pages. https://doi.org/10.1145/3318464.3380581 ↩︎

  2. Jinsoo Lee, Wook-Shin Han, Romans Kasperovics, and Jeong-Hoon Lee. 2012. An in-depth comparison of subgraph isomorphism algorithms in graph databases. In PVLDB. ↩︎