GeeksforGeeks

Breadth First Search

BFS は Breadth First Search の略で、グラフの最短経路を見つける頂点ベースのテクニックです。 先入れ先出しのQueueデータ構造を用いる。 BFSでは、一度に1つの頂点が選択され、それが訪問されマークされると、その隣接頂点が訪問されキューに格納される。
Ex-

 A / \ B C / / \ D E F

出力は:

A, B, C, D, E, F

Depth First Search

DFS は Depth First Search の略で、辺ベースの技術です。 スタックデータ構造を使用し、2つの段階を実行します。最初に訪問した頂点はスタックにプッシュされ、次に頂点がない場合は訪問した頂点がポップされます。NO

BFS DFS

BFS は Breadth First Search、

DFS は Depth First Search。

BFS (Breadth First Search) では Queue データ構造により最短経路を求めることができる。

DFS(Depth First Search)はStackデータ構造を使う。 BFSは重みのないグラフでシングルソース最短経路を求めるのに使える。BFSではソース頂点から最小のエッジ数で頂点に到達するからだ。 DFSでは、送信元から送信先の頂点に到達するために、より多くの辺を通過する可能性がある。 BFSは与えられた送信元に近い頂点を探すのに適している。 BFSはすべての隣接点を最初に考慮するので、ゲームやパズルで使われる決定木には適さない。 DFS はゲームやパズルの問題に適している。 決定を行い、その決定を通るすべての経路を探索する。 そして、この決定が勝利の状況をもたらすならば、我々は停止する。 BFSの時間計算量は、隣接リストを使う場合はO(V + E)、隣接行列を使う場合はO(V^2)(Vは頂点、Eは辺を表す)となる。 DFSの時間計算量も、Adjacency Listを使った場合はO(V + E)、Adjacency Matrixを使った場合はO(V^2)となります(Vは頂点、Eは辺)。

二分木トラバーサルでの違いについてBFSとDFSも参照して下さい。

実践タグ:

コメントを残す

メールアドレスが公開されることはありません。