我正在阅读与 C++ 4e 中的数据结构和算法中的图形相关的材料(作者:Adam Drozdek)。在他的 Graph Breadth First Search 实现中,伪代码如下:
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 算法。为什么我们需要一个图遍历算法,主要用途是什么?