求有向图中两点间所有路径
问题的本质是遍历图,基本的遍历有BFS和DFS,其实这两种遍历算法boost graph里都有提供,但是如果用其提供的算法得到两点间所有路径,就比较困难,所以下面是我自己实现的算法,一个是DFS的递归实现,另一个是DFS的非递归实现.
DFS 递归版
typedef boost::graph_traits<graphtype>::vertex_descriptor vertex_t;
void AllPaths(vector<vector<vertex_t> >& res, vector<vertex_t> previous, vertex_t curr, vertex_t des){
for(unsigned int i = 0; i < previous.size(); ++i ){
//寻找是否有环
if(previous[i] == curr){
return ;
}
}
previous.push_back(curr); //加入路径
if(curr == des){ //找到一条路径