幅優先探索アルゴリズム:概要、重要性、およびアプリケーション
公開: 2020-12-23グラフは私たちの周りにあります。 グラフは、ノードとエッジの相互接続されたネットワークと考えることができます。 Facebookの友達、LinkedInのつながり、Twitter/Instagramのフォロワーがソーシャルグラフを構成します。 同様に、ポイントAからポイントBに移動する場合は、複数のルートを介して移動できます。これは、Googleマップで視覚化できます。
ポイントAからポイントBまでのこれらの複数のルートオプションもすべてグラフを構成します。 グラフは非常にユビキタスであるため、学界でも現実の世界でも同様に遭遇する最も一般的なデータ構造の1つです。 また、グラフで実行できる最も頻繁な操作の1つは、グラフの走査です。
グラフトラバーサルとは何ですか?
グラフトラバーサルは、グラフ内のすべてのノードに1回だけ速度と精度でアクセスする方法です。 これは、無限ループに巻き込まれることなく、訪問したノードのシーケンスを印刷できる高度なグラフ検索アルゴリズムです。 深さ優先探索、幅優先探索、 Djikstraのアルゴリズム、 A-Starアルゴリズムなど、多くのグラフ走査アルゴリズムがあります。
この記事では、幅優先探索アルゴリズム(BFS)について詳しく説明します。
グラフ構造
BFSの内部で詳細を確認する前に、上のグラフを使用して、いくつかのグラフ用語を理解しましょう。
ルートノード–トラバーサルプロセスを開始するノード。 簡単にするために、Aをルートノードと見なすことができます。

レベル–レベルは、ルートノードから等距離にあるすべてのノードのコレクションです。 したがって、ノードAがレベル0であると考えると、ノードBとCはレベル1であり、ノードD、E、およびFはレベル2です。ノードのレベル番号を決定するための簡単なヒューリスティックは、番号をカウントすることです。前記ノードとルートノードの間のエッジの数。 これは、ルートノードをレベル0に定義した場合にのみ機能することに注意してください。
親ノード–ノードの親ノードは、その1つ上のレベルにあり、隣接しているノードです。 これは、当該ノードの発信元のノードと考えることができます。 AはBとCの親ノードです。
子/子ノード–分岐し、親ノードに隣接するノード。 BとCはAの子ノードです
読む:トップ10のデータ視覚化技術
BFSは、ツリーまたはグラフを効率的に探索するためのグラフ走査アルゴリズムです。 アルゴリズムは、初期ノード(ルートノード)から開始し、次に、特定のブランチをそのブランチ内のすべてのノードまで下る深さ優先とは対照的に、幅優先方式で隣接するすべてのノードの探索に進みます。訪問されます。 簡単に言えば、グラフをレベルごとにトラバースし、そのレベルのすべてのノードにアクセスしてマークを付けるまで、レベルを下に移動しません。
これは先入れ先出し(FIFO)の原則に基づいて動作し、キューデータ構造を使用して実装されます。 ノードにアクセスすると、キューに挿入されます。 次に、それが記録され、そのすべての子ノードがキューに挿入されます。 このプロセスは、グラフ内のすべてのノードにアクセスして記録されるまで続きます。
上記のグラフのBFSアルゴリズムの詳細なキュー操作を見てみましょう。
()–キューを示します
[] –印刷出力を示します
- Aをキューに挿入します(a)
- Aを印刷し、BとCをキューに挿入します(cb)[a]
- Bを印刷し、その子ノードDとEをキューに挿入します(edc)[ba]
- Cを出力し、その子ノードFをキューに挿入します(fed)[cba]
- Dを出力し、その子ノードをキューに挿入します。 ありません。 (fe)[dcba]
- 子ノードFがすでにキューに挿入されているEを出力します。 (f)[edcba]
- Fを印刷します。[fedcba]
BFSアルゴリズムを重要にするもの
膨大なデータセットをすばやく検索する方法としてBFSを導入する理由は無数にあります。 開発者やデータエンジニアに好まれる特徴のいくつかは次のとおりです。
- BFSは、グラフ内のすべてのノードを効果的に探索し、それらすべてを探索するための最短パスを見つけることができます。
- グラフ全体をトラバースするために必要な反復回数は、他の検索アルゴリズムよりも少なくなります。
- キューを使用して実装されるため、そのアーキテクチャは堅牢で信頼性が高く、エレガントです。
- 他のアルゴリズムと比較して、BFSの出力は正確でエラーがありません。
- BFSの反復は、無限ループに巻き込まれるリスクを冒すことなく、スムーズに進みます。
チェックアウト:複製できるデータ視覚化プロジェクト

BFSアルゴリズムのアプリケーション
その単純さとセットアップの容易さのために、BFSアルゴリズムはさまざまな主要な現実の状況で広く使用されています。 いくつかの著名なアプリケーションを見てみましょう。
検索エンジンのクローラー–GoogleやBingのない世界を想像してみてください。 できません。 検索エンジンはインターネットのバックボーンです。 そして、BFSアルゴリズムは検索エンジンのバックボーンです。 これは、Webページのインデックス作成に使用される主要なアルゴリズムです。 アルゴリズムは、ソースページ(ルートノード)から移動を開始し、そのソースページ上のすべてのリンクを幅広にたどります。 各Webページは、グラフ内の独立したノードと考えることができます。
重み付けされていないグラフトラバーサル– BFSは、重み付けされていないグラフの最短パスと最小スパニングツリーを識別できます。 最短ルートを見つけることは、BFSが理想的に適しているエッジの数が最も少ないパスを見つけることだけです。 最小数のノードにアクセスすることで作業を完了できます。
GPSナビゲーション– BFSは、GPSシステムを利用して、開始点から隣接する可能性のあるすべての場所を表示し、A点からB点までシームレスにナビゲートできるようにします。

ブロードキャスト–ブロードキャストネットワーキングは、信号とデータを伝送するためのユニットとしてパケットを使用します。 BFSアルゴリズムは、これらのパケットを操作して、到達するはずのネットワーク内のすべてのノードに到達します。
P2Pネットワーク–トレントまたはその他のファイル共有ネットワークはP2P通信に依存しています。 BFSは、データ転送をより高速に実行できるように、最も近いノードを見つけるのに最適です。
また読む:データ視覚化の利点
結論
幅優先探索アルゴリズムであるエルゴは、現代のインターネットで最も重要なアルゴリズムの1つです。 うまくいけば、このブログは、検索アルゴリズムの探索における便利な出発点として役立つでしょう。
upGradでホストされているIIITBangaloreが提供するデータサイエンスのPGディプロマを選択することをお勧めします。ここでは、コースのインストラクターと1対1でクエリを取得できます。 理論的な学習に焦点を当てるだけでなく、実践的な知識を重要視します。これは、学習者が実際のプロジェクトに立ち向かう準備を整え、データサイエンスで高給の仕事を得るのに役立つインド初のNASSCOM証明書を提供するために不可欠です。
幅優先探索アルゴリズムを使用することの欠点は何ですか?
BFSには、「ブラインド」検索であるという欠点があります。つまり、検索スペースが大きい場合、検索パフォーマンスは他のヒューリスティック検索よりも劣ります。 バイナリファースト検索アルゴリズムが正しく機能するには、関連するすべての頂点をメモリに保存する必要があります。つまり、より多くのメモリを使用します。 もう1つの欠点は、ターゲットへのすべてのパスの検索深度がほぼ同じであっても、パスウェイが広範囲に及ぶことです。
BFSアルゴリズムはDFSアルゴリズムとどのように異なりますか?
BFSは、特にツリーの分岐係数が高い場合に、大量のメモリを使用します。 一方、DFSは、ツリーの深さが大きい場合、追加の近くのノードにアクセスするのに長い時間がかかる場合がありますが、スペースの複雑さは低くなります。 BFSは、指定されたソースに近い頂点を見つける場合にうまく機能します。 ソースから入手できないソリューションがある場合は、DFSを使用することをお勧めします。 BFSとは異なり、DFSではバックトラッキングが不可欠です。 BFSはツリーレベルに基づいてトラバースしますが、DFSはツリーの深さに基づいてトラバースします。
A-Starアルゴリズムはどのように機能しますか?
A-Starアルゴリズムは、開始状態と終了状態の間の最短パスを見つけるパスファインディング方法です。 これは、マップを含むさまざまな目的で使用され、ソース(初期状態)と宛先(最終状態)(最終状態)の間の最短距離を見つけるのに役立ちます。 ダイクストラ法と同様に、A-Star検索アルゴリズムは、開始ノードから目標ノードまでの最低コストのパスツリーを作成します。