我正在阅读与C++ 4e中的数据结构和算法中的图相关的材料(作者:Adam Drozdek)。在他实现图形广度优先搜索中,伪代码如下:图遍历算法的用法
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算法的情况下对特定顶点进行操作。为什么我们需要一个图遍历算法,主要用途是什么?
所以遍历算法的目的不是主要访问一些顶点,而是探索不同顶点之间的关系,对吗? – Vschon
可以这样说。但是,当你访问顶点时,你也可以调用一些函数。也许我想为所有顶点分配一个优先级,它们越接近,优先级越高。因此,我做了一个BFS并在每个节点访问中调用一个函数。该功能分配优先级。 当你到达树时,你会看到有多个应用程序也可用于各种树遍历(预订,按序和后序)。 – Radu
现在对我来说更有意义,谢谢! – Vschon