深度优先搜索算法

时间:2011-01-08 20:10:48

标签: c++ algorithm boost depth-first-search

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

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

任何建议......

编辑:图表是非循环的。

3 个答案:

答案 0 :(得分:0)

  

希望可以访问顶点   每当有任何分支时   顶点。

你建议迭代器到达顶点的分支时做什么?

深度优先搜索只是这个问题的一个答案。 Here是其他一些人。

但你必须选择一些东西。这不是关闭DFS的问题。

答案 1 :(得分:0)

我认为这在设计上是不可能的。因为如果你的图形包含周期(并且你有它们,当你说,顶点可以被访问多次)时,算法将以无限循环结束。

答案 2 :(得分:0)

如果你想枚举非循环图中的所有路径,那么我认为你不能轻易修改深度优先搜索来做到这一点。有专门为此目的设计的算法,特别是:Rubin,F。 ,“列举图中的所有简单路径”,电路与系统,IEEE Transactions on,vol.25,no.8,pp.641-642,1978年8月。

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