-
BFS(Breadth-First Search) 알고리즘 구현하기 (자바스크립트)JavaScript 2023. 9. 30. 00:18
BFS는 최단 경로를 탐색하기 위해서 많이 사용되는 알고리즘으로, DFS와는 다르게 인접한 노드를 순서대로 방문하지만 각 인접 노드의 자식을 방문하는 건 나중에 이루어진다.
자바스크립트로 이를 구현해보면 다음과 같다.
// 그래프의 인접 리스트 표현 const graph = { A: ['B', 'C'], B: ['A', 'D', 'E'], C: ['A', 'F'], D: ['B'], E: ['B', 'F'], F: ['C', 'E'] }; function bfs(graph, startNode) { const visited = new Set(); // 방문한 노드를 저장하는 Set const queue = [startNode]; // 탐색할 노드를 저장하는 큐 visited.add(startNode); // 시작 노드 방문 처리 while (queue.length > 0) { const currentNode = queue.shift(); // 큐에서 노드를 하나 꺼냄 console.log(currentNode); // 현재 노드 출력 // 현재 노드의 인접 노드를 순회하면서 방문하지 않은 노드를 큐에 추가하고 방문 처리 for (const neighbor of graph[currentNode]) { if (!visited.has(neighbor)) { visited.add(neighbor); queue.push(neighbor); } } } } bfs(graph, 'A'); // 시작 노드 'A'에서 BFS 탐색 시작그래프로 표현되는 데이터에서는 위와 같이 queue을 사용하여 bfs를 구현할 수 있다.
먼저 인접한 노드들이 큐에 들어가기 때문에, 인접한 노드를 먼저 순회할 수 있는 알고리즘이다.
'JavaScript' 카테고리의 다른 글
자바스크립트 동적으로 객체 생성하기 (Computed Property Names) (0) 2023.10.05 URLSearchParams로 Url Query String 가져오기 (0) 2023.10.03 syntactic sugar in Javascript (Class와 Async Await) (0) 2023.09.18 import와 require의 차이 (1) 2023.09.15 소수 구하기 (에라토스테네스의 체) (0) 2023.09.01