Engineering a Parallel $k$-Shortest Simple Paths Algorithm for Multicores
In recent decades, there has been a considerable interest in mining heterogeneous information from diverse sources in a holistic way. This information is often linked together in the form of a graph, where the vertices represent entities, edges represent direct relationships between these entities and the edge weights represent the strength of the relationship. In mining this graph, one is often interested in finding $k$-shortest loopless paths between two given vertices. As these information graphs continue to grow in size and the number of $k$-shortest path queries increase, there is an increasing need for a parallel $k$-shortest path algorithm to meet the application constraints. Even though the parallelization of $k$-shortest path problem has received considerable theoretical attention, no parallel implementation is known with near-linear work. In this paper, we address this critical gap by carefully engineering a $k$-shortest path implementation for shared-memory multicore architecture that has the total work of $O(k cdot m)$ for random graphs with random edge weights. As part of designing our $k$-shortest path implementation, we explore different design choices in the implementation of the parallel delta-stepping algorithm to compute single-source shortest paths on shared-memory multicore architectures. We find that there is no one implementation that is efficient in all cases - different implementations result in different running times, variance of running time and parallel speed-up.