The aim of the SSSP algorithm is to find the shortest path between a given node and all other nodes in the graph. It is also based on Dijkstra's algorithm, but enables parallel execution by packaging nodes into buckets and processing each bucket individually. Parallelism is governed by the bucket size, itself determined by the delta parameter. When setting delta=1, SSSP is exactly equivalent to using Dijkstra's algorithm, meaning no parallelism is used. A value of delta that is too high (greater than the sum of all edge weights) would place all nodes in the same bucket, hence canceling the effect of parallelism.
The procedure in the GDS library is called deltaStepping. Its signature is as expected:
CALL gds.shortestPath.deltaStepping.stream(graphName::STRING, configuration::MAP)
Its configuration, however, is slightly different:
- startNode: The node from which all shortest paths will be computed
- relationshipWeightProperty: The usual relationship...