我正在阅读C++ 4e中与图有关的数据结构和算法(由Adam编写)。在图宽度优先搜索的实现中,psuedo代码如下所示:
BFS():
for all vertices u
num(u) = 0
edges = null
i = 1
while there is a vertex v such that num(v) is 0
num(v)++
enqueue(v)
while queue is not empty
v = dequeue()
if num(u) is 0
num(u) = i++
enqueue(u)
attach edge(v,u) to edges
output edges基本上,在图的实现中,我们已经保留了一组所有的顶点和一组边。在BFS中,该算法首先枚举该集合中未访问的每个顶点,以遍历完整的图。
我的问题是:由于我们已经将所有顶点存储在一个集合中,所以我们可以在集合中循环来操作特定的顶点,而无需使用BFS算法。为什么我们需要一个图遍历算法和什么是主要用途?
发布于 2014-03-27 14:45:16
BFS和DFS有很多用途。
想给你一个BFS的想法:
发布于 2014-03-27 14:49:47
例如,当递归遍历树时,通常会隐式使用DFS。
https://stackoverflow.com/questions/22690790
复制相似问题