In a C++ project, we are trying on an important Boost Graph traffic-related to launch several simulations of Dijkstra for the shortest path between two nodes.
The graph has 18 000 vertices and 40 000 edges. Loading the graph takes roughly 200ms, and a Dijkstra run 50ms.
But time start to be an issue, so we want to lower those times. We are looking at several options :
Use heuristics of the Dijkstra algorithm like :
- Bi-directional Dijkstra
- A* search
Pre-processing the graph like clustering operations, to reduce the number of node and vertices loaded, and thus reducing the loading time :
- Hierarchical clustering
- Markov cluster algorithm
So the question is in two parts :
What is the best/easier method to implemented a graph clustering ? (if it is using the boost library, it would be easier to implement for us). With references, examples of code that could use ?
What is the best Dijsktra-like algorithm to use in this kind of scenario ?
If you have any information about those two inquiries, it will be much appreciated.
Thank you.