Dynamic Connectivity is a fundamental algorithmic graph problem, motivated by a wide range of applications to social and communication networks and used as a building block in various other algorithms, such as the bi-connectivity and the dynamic minimal spanning tree problems. In brief, we wish to maintain the connected components of the graph under dynamic edge insertions and deletions. In the sequential case, the problem has been well-studied from both theoretical and practical perspectives. However, much less is known about efficient concurrent solutions to this problem. This is the gap we address in this paper. We start from one of the classic data structures used to solve this problem, the Euler Tour Tree. Our first contribution is a non-blocking single-writer implementation of it. We leverage this data structure to obtain the first truly concurrent generalization of dynamic connectivity, which preserves the time complexity of its sequential counterpart, but is also scalable in practice. To achieve this, we rely on three main techniques. The first is to ensure that connectivity queries, which usually dominate real-world workloads, are non-blocking. The second non-trivial technique expands the above idea by making all queries that do not change the connectivity structure non-blocking. The third ingredient is applying fine-grained locking for updating the connected components, which allows operations on disjoint components to occur in parallel. We evaluate the resulting algorithm on various workloads, executing on both real and synthetic graphs. The results show the efficiency of each of the proposed optimizations; the most efficient variant improves the performance of a coarse-grained based implementation on realistic scenarios up to 6x on average and up to 30x when connectivity queries dominate.
翻译:动态连接是一个基本的算法图问题,其动机是社交和通信网络的广泛应用,并用作各种其他算法的构件,例如双连接和动态最小覆盖树状问题。简言之,我们希望在动态边缘插入和删除中保持图形的连接组件。在相继案例中,这个问题从理论和实践角度都得到了很好的研究。然而,对于这一问题的高效并存解决办法,我们所了解的要少得多。这是我们本文中处理的差距。我们从用来解决这一问题的经典数据结构之一,即Euler Tour树开始,我们的第一个贡献是非阻塞的单一作者执行。我们利用这一数据结构来获得动态连接的第一个真正同时的概括,这保留了相继对应方的时间复杂性,但在实践中也是可变换的。为了实现这一目标,我们依靠三个主要技术。首先,确保连接查询,通常以真实世界工作量为主的,是非阻塞的。第二个非三端技术在现实化的逻辑上扩展了上面的精度分析,通过不断更新的精度分析,使得整个连通性结构能够改变整个连通性结构。我们无法将整个连通性运行。