在boost库中实现的深度优先算法只访问每个顶点一次 .
是否有任何解决方法可以停用此选项 . 我希望只要在任何顶点有分支,就可以访问顶点 .
任何建议......
EDIT: 图表是非循环的 .
如果你想枚举非循环图中的所有路径,那么我认为你不能轻易修改深度优先搜索来做到这一点 . 有专门为此目的设计的算法,特别是:Rubin,F . ,“列举图中的所有简单路径”,Circuits and Systems,IEEE Transactions on,vol.25,no.8,pp.641-642,1978年8月 .
如果你知道Floyd-Warshall算法,你可以很容易地修改它来计算矩阵的每个元素中的路径列表,而不是最小距离,这将完成工作 . 上面的文章使用了一些位操作来使这个运行更快一些 .
想要在任何顶点都有分支时可以访问顶点 .
你建议迭代器到达顶点的分支时做什么?
深度优先搜索只是这个问题的一个答案 . Here是其他一些人 .
但你必须选择一些东西 . 这不是关闭DFS的问题 .
我认为这在设计上是不可能的 . 因为如果你的图形包含循环(并且你有它们,当你说,顶点可以被访问多次)时,算法将以无限循环结束 .
3 回答
如果你想枚举非循环图中的所有路径,那么我认为你不能轻易修改深度优先搜索来做到这一点 . 有专门为此目的设计的算法,特别是:Rubin,F . ,“列举图中的所有简单路径”,Circuits and Systems,IEEE Transactions on,vol.25,no.8,pp.641-642,1978年8月 .
如果你知道Floyd-Warshall算法,你可以很容易地修改它来计算矩阵的每个元素中的路径列表,而不是最小距离,这将完成工作 . 上面的文章使用了一些位操作来使这个运行更快一些 .
你建议迭代器到达顶点的分支时做什么?
深度优先搜索只是这个问题的一个答案 . Here是其他一些人 .
但你必须选择一些东西 . 这不是关闭DFS的问题 .
我认为这在设计上是不可能的 . 因为如果你的图形包含循环(并且你有它们,当你说,顶点可以被访问多次)时,算法将以无限循环结束 .