neo4j-contrib / neo4j-graph-algorithms

Efficient Graph Algorithms for Neo4j
https://github.com/neo4j/graph-data-science/
GNU General Public License v3.0
772 stars 194 forks source link

Algorithm: All Pairs- / Single Source Shortest Path #80

Open mknblch opened 7 years ago

mknblch commented 7 years ago

A Single Source Shortest Path algorithms calculates a path between a pair of nodes whose summed weights are minimal. A common algorithm used is Dijkstra. All Pairs Shortest Path on the other hand calculates a shortest path forest containing all paths between the nodes in the graph. An algorithm to solve this is Floyd Warshall or Parallel Johnson's algorithm.

Progress

Requirements

(Outgoing)RelationshipIterator & Weights

Data structured involved

ToDo

benchmark

Implement benchmark on big graph

parallelization

Parallizing All Pairs Shortest Path might be easy using Dijkstra on each thread for a different node. An easy approach for Single Source SP may use two threads. One starting at the start-node, one at the end-node. The first wins. More

evaluation

mknblch commented 7 years ago

Another paper with an alternative approach to parallel SSSP: http://www.cc.gatech.edu/~bader/papers/ShortestPaths-ALENEX2007.pdf

mknblch commented 7 years ago

Also https://arxiv.org/pdf/1604.02113v1.pdf