osrm-backend
osrm-backend copied to clipboard
Compress routing graph
Currently, OSRM stores/loads the routing graph in a fairly naive adjacency list structure consisting of simple lists of edge and node data.
https://github.com/Project-OSRM/osrm-backend/blob/master/include/util/static_graph.hpp#L315-L320
There are a couple of papers that describe techniques for more efficiently compressing graph data structures, such as:
Compact Representations of Separable Graphs - https://www.cs.cmu.edu/~guyb/papers/BBK03.pdf
Log(Graph): A Near-Optimal High-Performance Graph Representation - https://spcl.inf.ethz.ch/Research/Performance/LogGraph/loggraph_full.pdf
There are several techniques described in these papers that we could implement in OSRM to reduce some data structure sizes significantly (in particlar, the .hsgr file).