[アルゴリズムベース]深度優先探索(DFS)


復帰は毎回難しい.
遅ればせながら復帰する☆

DFSとは?😲



これは親ノードから最も深い子ノードまで探索する方法である.
DFSの図はグラフで、JSでもグラフを描く必要があるかもしれませんが、「再帰」を使って簡単に解くことができます.

頭の中で分かった🤖

function DFS(x){
  if(x===1) return;
  else{
    console.log(x);
    DFS(x-1);
    console.log(x+1);
  }
}

DFS(4);
これらの関数を実行すると、どのような出力値が表示されますか?

スタックに入れると気持ちがいいと思います.
どの程度実行されるかを考慮して、スタックで繰り返し実行します.
(関数を宣言するときにスタックを作成します.スタックには領域変数、パラメータ、および戻りアドレスが含まれます.)
耳の中で、一番大切なのはいつ出るかを考えることです.
考えなければ、いつまでも仲直りする.

この場合に使うと役に立ちます


サンプル問題|
自然数Nが与えられたときに、要素の1からNまでの集合のすべての部分集合を出力するプログラムを作成してください.

まだ実用化されていないかもしれませんが、
覚えてろ!DFS=適当に止まるところはどこですか!