Maintaining a $k$-core decomposition quickly in a dynamic graph is an important problem in many applications, including social network analytics, graph visualization, centrality measure computations, and community detection algorithms. The main challenge for designing efficient $k$-core decomposition algorithms is that a single change to the graph can cause the decomposition to change significantly. We present the first parallel batch-dynamic algorithm for maintaining an approximate $k$-core decomposition that is efficient in both theory and practice. Given an initial graph with $m$ edges, and a batch of $B$ updates, our algorithm maintains a $(2 + \delta)$-approximation of the coreness values for all vertices (for any constant $\delta > 0$) in $O(B\log^2 m)$ amortized work and $O(\log^2 m \log\log m)$ depth (parallel time) with high probability. Our algorithm also maintains a low out-degree orientation of the graph in the same bounds. We implemented and experimentally evaluated our algorithm on a 30-core machine with two-way hyper-threading on $11$ graphs of varying densities and sizes. Compared to the state-of-the-art algorithms, our algorithm achieves up to a 114.52x speedup against the best multicore implementation and up to a 497.63x speedup against the best sequential algorithm, obtaining results for graphs that are orders-of-magnitude larger than those used in previous studies. In addition, we present the first approximate static $k$-core algorithm with linear work and polylogarithmic depth. We show that on a 30-core machine with two-way hyper-threading, our implementation achieves up to a 3.9x speedup in the static case over the previous state-of-the-art parallel algorithm.
翻译:快速在动态图形中保持 $k$ 核心分解法是许多应用中的一个重要问题, 包括社交网络分析、 图形直观化、 中心度测量计算以及社区检测算法。 设计高效的 $k$ 核心分解算法的主要挑战是, 图形的单次修改可能导致分解发生重大变化。 我们展示了第一个平行批量动态算法, 以维持大约 $k$ 核心分解法, 这在理论和实践上都是有效的。 由于初始图表有 $ 的边缘, 以及 一批 $B$ 更新, 我们的算法在( 2 +\ delta) 中保持了 $( $ k- 核心度计算法 ) 。 对于所有脊椎( 任何恒定的 $\ delta > 0 ) 的解析算法, 在 $O( B\ log2 ) 的分解算法和 $ $ 的深度( parrequema) ( ) 。 我们的算法也保持了更低的离调方向方向方向方向方向方向,, 更低的值在前一列的 30 和实验中, 我们的算法中, 在最高级的算法中, 在最高级的算法中, 在最高级的算法中, 在最高级的算法中, 在最高级的值中, 在最高级的算法中, 30 上, 在最高级的算法中, 在最高级的算算法中, 上, 在最高级的算法中, 在最高级的算法中, 在最高级的算法中, 30, 在最高级的值中, 显示的是, 在最前一个比前一个比前一个比前的 最高级的次的次的递化的算法, 30, 和最高级的算法中, 30。