JavaScriptでBFS(幅優先探索)を実装する方法


まず、BFSアルゴリズムの基本的な考え方を理解しましょう。BFSでは、始点となるノードから始めて、隣接するノードを順番に訪れます。次に、訪れたノードの隣接ノードをキューに追加します。このプロセスを繰り返し、キューが空になるまで続けます。

以下は、JavaScriptでBFSを実装するシンプルな例です。

function bfs(graph, startNode) {
  const queue = [startNode];  // キューを作成し、始点ノードを追加する
  const visited = new Set();  // 訪れたノードを格納するためのセットを作成する
  visited.add(startNode);  // 始点ノードを訪れたとしてマークする
  while (queue.length > 0) {
    const currentNode = queue.shift();  // キューからノードを取り出す
    console.log(currentNode);  // ノードを表示する(または他の処理を行う)
    const neighbors = graph[currentNode];  // 隣接ノードを取得する
    for (const neighbor of neighbors) {
      if (!visited.has(neighbor)) {
        queue.push(neighbor);  // 訪れていない隣接ノードをキューに追加する
        visited.add(neighbor);  // 訪れた隣接ノードをマークする
      }
    }
  }
}
// グラフの例
const graph = {
  A: ['B', 'C'],
  B: ['D'],
  C: ['E'],
  D: ['F'],
  E: [],
  F: []
};
// BFSの実行例
bfs(graph, 'A');

この例では、グラフをオブジェクトとして表現しています。各ノードはキーとして表現され、値として隣接するノードの配列が与えられています。bfs関数は、グラフと始点ノードを受け取り、BFSアルゴリズムを実行します。ノードを訪れるたびに、コンソールに表示することもできます。

このコード例を参考にしながら、自身のプロジェクトや問題にBFSアルゴリズムを適用してみてください。