BFS - ブロードス ウォーク


幅優先検索 (BFS)
BFS (幅優先検索、幅優先検索) - 単純なアルゴリズムと高度なアルゴリズムの両方でよく使用されるグラフ走査手法。幅優先検索は、ソース ノードから開始して徐々にソース ノードから離れていき、グラフの個々のレベルを段階的に実行することによって機能します。これはアニメーションで明確に示されています。
最も単純な BFS  を記述するには、最初から取得して最後まで配置できるデータ構造を操作でき、また保存できる必要があります。隣接リストの形式のグラフ (つまり、キュー付き)。
 
アルゴリズムの正式な説明
1) 検索を開始する頂点の番号を最初は空のキューに入れます。
2) キューの先頭から頂点 U を抽出し、別の配列で使用されるものとしてマークします。
3) キューの最後に、頂点 U, からのエッジを使用して到達でき、まだラベルが付けられていないすべての頂点を追加します。
4) キューが空の場合は、接続されたグラフのすべてのノードがスキャンされています。そうでない場合は、ステップ 2 に戻ります。
 
複雑さ
アルゴリズムは最悪の場合グラフのすべてのノードを訪問するため、グラフを隣接リストとして保存する場合、アルゴリズムの時間計算量は O(|V| + |E|) になります。ここで、 V はグラフの頂点のセット、E はエッジのセットです。言い換えると、アルゴリズムは number の最悪のケースでも機能します。エッジの数 + 頂点の数.

 

BFS (幅優先検索) はグラフ走査手法であり、単純なアルゴリズムと高度なアルゴリズムの両方でよく使用されます。幅優先検索は、ソース ノードから開始して徐々にソース ノードから離れていき、グラフの個々のレベルを段階的に実行することによって機能します。これはアニメーションで明確に示されています。
単純な BFS を作成するには、最初から取得して最後まで配置できるデータ構造であるキューを操作でき、グラフをフォームに保存できる必要があります。隣接リストの
 
アルゴリズムの正式な説明
1) 検索を開始する頂点の番号を最初は空のキューに入れます。
2) キューの先頭から頂点 U を抽出し、別の配列で使用されるようにマークします。
3) キューの最後に、頂点 U からのエッジを使用して到達でき、まだマークされていないすべての頂点を追加します。
4) キューが空の場合は、接続されたグラフのすべてのノードがスキャンされています。そうでない場合は、ステップ 2 に戻ります。
 
仕事の難しさ
最悪の場合、アルゴリズムはグラフのすべてのノードを訪問するため、グラフを隣接リストの形式で保存する場合、アルゴリズムの時間計算量は O(|V| + |E|) になります (V は集合)グラフの頂点の数、E はエッジのセットです。  ;
言い換えれば、アルゴリズムはエッジの数 + 頂点の数の最悪のケースでも機能します。

 

最短パスを復元するには、「先祖」の配列を作成します\(p[]\) 、各頂点について、この頂点に到達した頂点の番号を格納します。