Data Structures and Algorithms in C++ 4e (By 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 アルゴリズムを使用せずにセットをループして特定の頂点を操作できるということです。グラフ走査アルゴリズムが必要な理由と主な用途は何ですか?