Integral-Weight SSSP (weighted BFS)
#
Problem Specification#
Input, a weighted graph with integral edge weights, and a source, . The input graph can either be undirected, or directed.
#
OutputOutput: , a mapping where is the shortest path distance from to in and if is unreachable.
#
Algorithm ImplementationsOur GBBS implementation implements the weighted breadth-first search (wBFS) algorithm, a version of Dijkstra's algorithm that is well suited for low-diameter graphs with small positive integer edge weights. Our implementation uses the bucketing interface from Julienne [1]. The idea of our algorithm is to maintain a bucket for each possible distance, and to process them in order of increasing distance. Each bucket is similar to a frontier in BFS, but unlike BFS, when we process a neighbor of a vertex in the current bucket , we place in bucket .
The code for our implemenation is available here.
#
Cost BoundsThe algorithm runs in work and depth. Please [1] and [2] for details.
#
Compiling and RunningThe benchmark can be compiled by running:
It can then be run on a test input graph in the uncompressed format as follows:
It can then be run on a test input graph in the compressed format as follows:
#
References[1] Laxman Dhulipala, Guy Blelloch, and Julian Shun
Julienne: A Framework for Parallel Graph Algorithms using Work-efficient Bucketing
Proceedings of the ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), pp. 293-304, 2017.
[2] Laxman Dhulipala, Guy Blelloch, and Julian Shun
Theoretically Efficient Parallel Graph Algorithms Can Be Fast and Scalable
Proceedings of the ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), pp. 393-404, 2018.