深さ優先と幅優先でディレクトリ探索

ツリーやグラフ状のデータを探索する方法に深さ優先探索幅優先探索があります。両者の違いとプログラムの実装方法を見ていきます。

- 目次 -

スポンサーリンク

探索方法の違い

深さ優先幅優先 の探索方法の違いを簡単に説明するとこうなります。

ツリー状のデータ A ~ H があるとします。

ツリー

このデータを深さ優先と幅優先で探索すると、探索の順番は以下のようになります。

深さ優先
深さ優先
深い階層を優先して辿っていく
幅優先
幅優先
同じ階層をすべて辿ってから次の階層へ

深さ優先 は、階層の深いデータが見つかればそちらをどんどん掘り進めていきます。幅優先 は、同じ階層のデータをすべて探索し終えるまで次の階層へ行きません。

ディレクトリ探索

ディレクトリ探索の処理を深さ優先、幅優先で実装してみます。python を使います。

ディレクトリは下記のように作ってあります。

深さ優先

深さ優先探索は 再帰呼び出し で行います(再帰呼び出しについて)。

結果

幅優先

幅優先探索は、キュー を使って処理します。

結果

再帰呼び出しを使わずに深さ優先

再帰呼び出しを使わずに深さ優先で探索することもできます。

方法

幅優先探索でキューを使いましたが、キュースタック に置き換えると深さ優先探索になります。

結果

スタックは先入れ後出しで動くため、再帰呼び出しのケースと順番が異って出力されます。

スポンサーリンク
その他の記事

コメントはお気軽に