求有向图中两点间所有路径
问题的本质是遍历图,基本的遍历有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){ //找到一条路径

本文介绍了如何在有向图中使用DFS算法寻找两点间的全部路径,包括递归和非递归两种实现方式。递归版本可能会导致栈溢出,而非递归版本通过辅助栈避免了这个问题。
最低0.47元/天 解锁文章
858

被折叠的 条评论
为什么被折叠?



