SCAN (Structural Clustering Algorithm for Networks) is a well-studied, widely used graph clustering algorithm. For large graphs, however, sequential SCAN variants are prohibitively slow, and parallel SCAN variants do not effectively share work among queries with different SCAN parameter settings. Since users of SCAN often explore many parameter settings to find good clusterings, it is worthwhile to precompute an index that speeds up queries. This paper presents a practical and provably efficient parallel index-based SCAN algorithm based on GS*-Index, a recent sequential algorithm. Our parallel algorithm improves upon the asymptotic work of the sequential algorithm by using integer sorting. It is also highly parallel, achieving logarithmic span (parallel time) for both index construction and clustering queries. Furthermore, we apply locality-sensitive hashing (LSH) to design a novel approximate SCAN algorithm and prove guarantees for its clustering behavior. We present an experimental evaluation of our algorithms on large real-world graphs. On a 48-core machine with two-way hyper-threading, our parallel index construction achieves 50--151$\times$ speedup over the construction of GS*-Index. In fact, even on a single thread, our index construction algorithm is faster than GS*-Index. Our parallel index query implementation achieves 5--32$\times$ speedup over GS*-Index queries across a range of SCAN parameter values, and our implementation is always faster than ppSCAN, a state-of-the-art parallel SCAN algorithm. Moreover, our experiments show that applying LSH results in faster index construction while maintaining good clustering quality.
翻译:由于 SCAN 用户通常会探索许多参数设置以找到良好的组合, 值得预先计算一个能加快查询速度的指数。 本文展示了一种实用的和可以想象的高效的平行的基于指数的 SCAN 质量算法, 以GS*- Index 为基础, 最近的序列算法。 对于大图表来说, 相继的 SCAN 变异器速度极慢, 令人望而生畏, 而平行的 SCAN 变异器无法在不同 SCAN 参数设置的查询中有效地共享工作。 由于 SCAN 用户经常探索许多参数设置以寻找良好的组合, 因此值得预先计算一个能加快查询速度的指数。 本文展示了一种基于 GS*- Index 的实用和快速的 SCAN 。 在使用整整分排序的 Asyronticle 工作上, 我们的平行的 SCAN 度算法运行速度比S- holdal- descriction S.