- Breadth-First Search, Graph의 가까운 Node부터 탐색하는 방식
- Queue 기반으로 동작하며, Graph 레벨별로 탐색
- 가까운 노드부터 탐색하기 때문에 최단 경로를 보장
- 사용처 : 최단 경로 탐색, 소셜 네트워크의 친구 추천(n촌 관계), 네트워크 브로드캐스트 등
- 시간 복잡도 : O(V + E), V는 노드 수, E는 간선 수
- 공간 복잡도 : O(V)
function bfs(graph, current, visit) {
let queue = []
queue.push(current)
visited[current] = true
while (queue.length) {
const first = queue.shift()
for (let i=0; i < graph[first].length; i++) {
const value = graph[first][i]
if (!visited[value]) {
queue.push(value)
visited[value] = true
}
}
}
}
let visited = Array(8).fill(false)
let graph = [[], [2,3,8], [1,7], [1,4,5], [3,5], [7], [2,6,8], [1,7]]
bfs(graph, 0, visited)