Question

I implemented an obstacle avoidance algorithm in Matlab which assigns every node in a graph a potential and tries to descend this potential (the goal of the pathplanning is in the global minimum). Now there might appear local minima, so the (global) planning needs a way to get out of these. I used the strategy to have a list of open nodes which are reachable from the already visited nodes. I visit the open node which has the smallest potential next.

I want to implement this in C++ and I am wondering if Boost Graph has such algorithms already. If not - is there any benefit from using this library if I have to write the algorithm myself and I will also have to create my own graph class because the graph is too big to be stored as adjacency list/edge list in memory.

Any advice appreciated!

Was it helpful?

Solution

boost::graph provides a list of Shortest Paths / Cost Minimization Algorithms. You might be interested in the followings: Dijkstra Shortest path, A*.
The algorithms can be easily customized. If that doesn't exactly fit your needs, take a look at the visitor concepts. It allows you to customize your algorithm at some predefined event point.

Finally Distributed BGL handles huge graph (potentially millions of nodes). It will work for you if your graph does not fit in memory.

You can find good overview of the Boost Graph Library here. And of course, do not hesitate to ask more specific question about BGL on stackoverflow.

OTHER TIPS

To my mind, boost::graph is really awesome for implementing new algorithms, because it provides various data holders, adaptors and commonly used stuff (which can obviously be used as parts of the newly constructed algorithms).

Last ones are also customizable due to usage of visitors and other smart patterns.

Actually, boost::graph may take some time to get used to, but in my opinion it's really worth it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top