너비 우선 탐색
출발 노드에서 한 걸음, 두 걸음 떨어진 노드를 차례로 찾아 나갑니다. 줄 서기 하나만 지키면 최단 거리가 저절로 나옵니다.
이번 회차, 내 속도로.
기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 11로 돌아옵니다.
난이도·관심 주제 고르기
1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.
이렇게 다녀와요 1단계 · 약 12분
- 출발 · DAY 11BFS·큐·거리
- 1. 관심 주제FIFO·LIFO·방문 표시추가 05 · 새 추가 수업
- 복귀 · DAY 11원래 회차 이어가기
- FIFO·LIFO·방문 표시 · 11·12회차에서 큐와 스택의 상태 변화가 헷갈렸다면, 작은 나무 모양 그래프로 한 줄씩 따라가 봅니다.
선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.
핵심 개념
너비 우선 탐색(breadth-first search, BFS)은 출발 노드에서 가까운 노드부터 층층이 방문합니다. 출발 노드를 거리 0으로 표시하고, 그 이웃을 거리 1로, 이웃의 아직 방문하지 않은 이웃을 거리 2로 표시하는 식입니다. 물결이 퍼지듯 한 층을 모두 처리한 뒤에 다음 층으로 넘어갑니다.
순서를 지키는 도구가 큐(queue)입니다. 큐는 먼저 넣은 것을 먼저 꺼내는 줄(FIFO)입니다. ① 출발 노드에 방문 표시를 하고 큐에 넣습니다. ② 큐 맨 앞의 노드를 꺼냅니다. ③ 그 노드의 이웃 중 방문 표시가 없는 노드에 ‘꺼낸 노드의 거리+1’을 적고, 표시한 뒤 큐 뒤에 넣습니다. ④ 큐가 빌 때까지 ②와 ③을 반복합니다. 넣을 때 표시해야 같은 노드가 큐에 두 번 들어가지 않습니다.
가중치가 없는 그래프에서 BFS가 노드에 처음 붙인 거리는 출발 노드로부터의 최단 홉 거리입니다. 가까운 층을 모두 처리한 뒤에야 다음 층을 열기 때문입니다. 노드와 엣지를 한두 번씩만 보므로 계산량은 N+E에 비례합니다. 다만 엣지마다 가중치가 다르면 홉 수가 적은 경로가 비용도 작다는 보장이 없으므로 13회차의 다익스트라 알고리즘을 씁니다.
작은 예제로 따라가기
민수에서 출발하면 큐 [민수]에서 민수를 꺼내 지아·서준에 거리 1을 적고, 큐는 [지아, 서준]이 됩니다.
지아를 꺼내면 새 이웃은 하린(거리 2)뿐이라 큐 [서준, 하린]이 되고, 서준의 이웃은 모두 표시되어 있어 큐 [하린]이 됩니다. 하린을 꺼내 도윤(거리 3)을 넣습니다.
이어서 도윤에서 유나·태오(거리 4), 유나에서 보라(거리 5)를 넣습니다. 방문 순서는 민수, 지아, 서준, 하린, 도윤, 유나, 태오, 보라이고 민수와 보라의 최단 거리는 5입니다.
직접 실험해 보기
시작 노드를 하나 고르고 ‘다음 단계’를 누를 때마다 큐에서 빠지고 들어오는 노드와 거리 badge를 확인하세요. 하린에서 시작하면 거리가 3인 사람이 누구인지도 찾아보세요.
BFS로 한 층씩 넓혀 가기
큐 (앞 → 뒤)
이웃은 가나다 순으로 큐 뒤에 넣습니다. 무가중 그래프에서 BFS 거리 = 최단 홉 거리.
이번에는 직접 풀어 보세요
정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.
힌트 보기
첫 단계에서 큐는 [하린, 유나, 태오]가 됩니다. 하린을 꺼낼 때 지아와 서준이 들어갑니다.
풀이와 비교하기
방문 순서는 도윤, 하린, 유나, 태오, 지아, 서준, 보라, 민수입니다. 거리는 도윤 0, 하린·유나·태오 1, 지아·서준·보라 2, 민수 3입니다.
풀이와 확인 표시는 이 브라우저에 저장됩니다.
오늘 이해한 것과 다시 볼 것
계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.
메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.오늘의 이해 확인
BFS에서 큐 대신 ‘가장 나중에 넣은 노드를 먼저 꺼내는’ 구조를 쓰면 무엇이 깨질까요?
완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1
더 깊이 읽기
예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.
Network Science, Chapter 2: Graph TheoryBarabási (2016)NetworkX TutorialNetworkX이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.