C++ 深度优先搜索算法

C++ 深度优先搜索算法,c++,algorithm,boost,depth-first-search,C++,Algorithm,Boost,Depth First Search,boost库中实现的深度优先算法只访问每个顶点一次 是否有办法停用此选项。我希望只要在任何顶点中有分支,就可以访问顶点 任何建议 编辑:图形是非循环的 希望可以访问顶点 任何地方只要有分支 顶点 当迭代器到达顶点处的分支时,您建议迭代器做什么 深度优先搜索只是这个问题的一个答案。还有一些 但你必须做出选择。这不是关闭DFS的问题。我认为这在设计上是不可能的。因为如果你的图包含循环(当你说顶点可以被多次访问时,它们就在那里),算法将以无止境的循环结束。如果你想枚举一个非循环图中的所有路径,那么我认

boost库中实现的深度优先算法只访问每个顶点一次

是否有办法停用此选项。我希望只要在任何顶点中有分支,就可以访问顶点

任何建议

编辑:图形是非循环的

希望可以访问顶点 任何地方只要有分支 顶点

当迭代器到达顶点处的分支时,您建议迭代器做什么

深度优先搜索只是这个问题的一个答案。还有一些


但你必须做出选择。这不是关闭DFS的问题。

我认为这在设计上是不可能的。因为如果你的图包含循环(当你说顶点可以被多次访问时,它们就在那里),算法将以无止境的循环结束。

如果你想枚举一个非循环图中的所有路径,那么我认为你不能轻易地修改深度优先搜索来实现这一点。有专门为此目的设计的算法,特别是:Rubin,F,“列举图中的所有简单路径”,电路与系统,IEEE学报,第25卷,第8期,第641-642页,1978年8月


如果您知道Floyd-Warshall算法,您可以很容易地修改它以计算矩阵中每个元素的路径列表,而不是最小距离,这将完成这项工作。上面的文章使用了一些位操作来加快运行速度。

您能举个例子吗?i、 一个顶点会被多次访问的情况?如果图有循环,这可能会永远循环。你能更具体地描述一下你的终止条件吗?这个图是非循环的。目的是计算路径数。