【发布时间】:2012-08-14 06:01:03
【问题描述】:
Boost:graph 库的大多数示例通过调用 boost 的深度优先搜索实用程序来执行深度优先搜索。在创建顶点和边之后,在图上调用 DFS 以深度优先的方式遍历整个图,如果我们有与之关联的访问者方法,它将调用访问者方法来执行一个操作,对于遍历的每个节点。
我正在寻找的是一种在图上维护迭代器的方法,当客户端调用“next()”时,迭代器将移动到下一个顶点,而不是一次性遍历图遍历到 DFS 并在再次调用 next 时,迭代器将移动到 DFS 指示的下一个顶点。
有没有使用 boost:graph 执行上述操作的示例?
谢谢
【问题讨论】:
-
如果我没记错的话,人们对可中断的 DFS 很感兴趣。您可能还可以编写一个 DFS 迭代器。适应迭代器框架可能有点痛苦,但并非不可能。
-
@pmr - 感谢您的回复。以空间为代价解决此问题的另一种方法是在执行 DFS 时将顶点推入队列,然后 next() 只会将下一个元素从队列中取出。
标签: c++ boost graph iterator depth-first-search