小编Ada*_*Max的帖子

什么时候在bfs或dfs中添加一个要访问的节点?

嘿,我一直在研究 BFS/DFS,我注意到它们中的许多都有轻微的修改,那就是当一个节点被添加到访问集中时。

在一种方式中,算法将从堆栈/队列中弹出节点,然后将其添加到访问集中。然后它将添加所有尚未访问过的邻居

在另一个实现中,节点不被添加到那里的访问集中。相反,它会将所有尚未访问过的邻居添加到堆栈/队列中,但在将这些邻居添加到堆栈/队列中时,它会将这些邻居添加到访问集中。

总而言之,在一种方法中,当它们弹出到堆栈/队列时,它们被添加到访问集中。在另一种方法中,当它们被添加到堆栈/队列时,它们被添加到访问集中。

我的两个问题是:两者有什么区别?我应该使用哪一个?

如果我只在弹出它时将其添加到访问中并且图中存在循环,我可以看到会发生一些问题,但我也不能 100% 确定这一点。任何帮助将不胜感激。

search graph-theory graph breadth-first-search depth-first-search

5
推荐指数
1
解决办法
2419
查看次数