直感BFSとDFS:アルゴリズムの基礎
I.はじめに
私たちの最初の接触 BFSの 時間とDFSは、データ構造クラスの観点から「グラフ・トラバーサル」でなければなりません。私たちは、多くの場合、バイナリツリートラバーサルを使用する場合ブラシの問題があるBFSとDFSを。彼らの実装では、私が貼り付けコードを行ってきました震えるませんが、非常に簡単です。
「コードを見ることができます見てみたい:深さのバイナリツリー安全オファー(三〇から八)を証明するためにこのトピックでは、BFSとDFSを使用して解決することができます」。だから、最後にこれらの二つの「散歩」配列の違いは何ですか?
この記事では、単純に任意のコードを伴わない、それらとそれぞれのアプリケーションの違いについて何かを言うだろう。私たちは、例えば、「マップをトラバース」、記述されています。
第二に、違い
幅優先探索アルゴリズムが(幅優先-検索、BFSと省略)、それが使用されるキュー検索アルゴリズムの作品。簡単に言えば、その検索処理と同様の「石が波紋、湖に投げ込ま」。
深さ優先探索アルゴリズム(DFSと略記深さ優先-Searchは、) 、の使用である再帰的な検索アルゴリズムの作品。簡単に言えば、その検索処理とは似ている「振り返るていないレンガの壁がヒットしません」。
BFSは、キューに焦点を当てているが、DFSの焦点は再帰的です。これは、彼らの間に本質的な違いです。
典型的な例は、以下に示すように、規定は一歩行くことができ、赤色端を表し、緑色は出発点を表し、灰色の壁を表し、そしてのみ上下又は右に行くことができます。赤色の最短経路に緑色を求めます。
上記の問題について、BFSとDFSの結果が得られ、両者の差が複雑に違いがあるということです。私はこの問題は、より良いBFSアルゴリズムであることを伝えることができます。
BFSイラスト:
キュー内の各点について、出発点から、上記のように、点の周り横断しなければなりません。だから、BFSの検索処理と「湖に投げた石、波紋は、」で、すなわち「幅優先探索アルゴリズム」「広さ」の原点に非常に似ています。
DFSイラスト:
上記のように横断方向を変更します一方向のすべてのポイントの最初の、出発点から、示さ......だから、DFS検索処理ととして「つまり、非常によく似た「レンガの壁をヒットしない、背中を見ていません」深さ優先探索アルゴリズムの深さ」「中」の原点。
第三に、要約
さて、あなたはトラバーサル順序をプリントアウトした場合に見に行く、マップを輝くしたいことがあり、それは明らかではありませんか?
最後には、そのアプリケーションの指示の下です。
BFSは、すべての問題、高いスペース効率の解決策を探している間DFS「最適解は、に見出される」ことを特徴とする単一の最短経路を見つけるために、及び最適解は、必ずしも記録されるべきではない見つけるために使用しましたそして、検索を完了するので、通常の状況下では、深い検索は、(剪定概念が百度を喜ば)非常に効率的な剪定が必要です。
PS:あなたは読者がそれらをよりよく理解したい場合はBFSとDFSアルゴリズムは、非常に重要であり、それはOJまたはLeetcode上のタイトルマッチに関連する研修いくつかを見つけることをお勧めします、我々はあなたに世界のさまざまな種類を提供します。