В 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' }