Поиск в ширину в JavaScript: реализация и пример

В JavaScript приведен пример реализации алгоритма поиска в ширину:

function breadthFirstSearch(graph, startNode) {
  const visited = new Set();
  const queue = [startNode];
  while (queue.length > 0) {
    const currentNode = queue.shift();
    visited.add(currentNode);
    const neighbors = graph[currentNode];
    for (let neighbor of neighbors) {
      if (!visited.has(neighbor)) {
        queue.push(neighbor);
        visited.add(neighbor);
      }
    }
  }
  return visited;
}

Эта реализация использует структуру данных очереди для отслеживания узлов, которые необходимо посетить. Он начинается с startNodeи исследует своих соседей по одному уровню за раз, пока не будут посещены все доступные узлы.

Чтобы использовать эту функцию, вам необходимо предоставить график, представленный в виде списка смежности. Ключи объекта graphпредставляют узлы, а соответствующие значения представляют собой массивы соседних узлов.

Пример использования:

const graph = {
  A: ['B', 'C'],
  B: ['A', 'D'],
  C: ['A', 'E'],
  D: ['B'],
  E: ['C']
};
const startNode = 'A';
const result = breadthFirstSearch(graph, startNode);
console.log(result); // Output: Set { 'A', 'B', 'C', 'D', 'E' }