프로그래밍 기초편 · 탐색과 의사결정
BFS와 DFS: Agent가 코드베이스에서 파일을 찾는 법
엔지니어링 심화편에서 Coding Agent는 “로그인 오류 원인 찾기”를 받으면 수백 개 폴더를 뒤집니다. 어디로? 이 층을 다 보고 내려갈까요, 단서 하나를 잡고 끝까지 파고들까요? 전혀 다른 두 성격—BFS(너비 우선)와 DFS(깊이 우선). 이번 강의는 같은 미로를 각각 한 번씩 걷게 해서 성격을 한눈에 보여 줍니다.
미로로 성격 보기 · 같은 맵, 두 가지 길
🏁는 출발, 🎯는 도착, 짙은 회색은 벽. 버튼마다 성격이 달라요—세 곳을 주목: 물감의 모양(BFS는 고리 물결, DFS는 뱀); 아래 카운터 둘; 마지막 초록 하이라이트 길—누가 더 짧고, 누가 더 많은 칸을 밟았을까요?
먼저 BFS—물결이 퍼지는 걸 보세요
BFS · 물결식 층층 쓸기
방문한 칸 수–
최종 경로 길이–
DFS · 외머리 뱀처럼 깊이
방문한 칸 수–
최종 경로 길이–
숫자 두 개가 이론 전부입니다. BFS는 77칸을 방문해야 도착—출발에서 거리 1, 2, 3…인 칸을 전부 적시니 그 넓이를 메모리에 올려야 해요; 하지만 거리 순으로 나아가니 도착에 닿는 길은 반드시 최단(23칸). DFS는 44칸만 보고도 도착, 메모리엔 지금 이 길만; 그런데 길은 37칸이라 최단보다 절반 넘게 돌아요—운이 나쁘면 막다른 골목에 박혔다 빠져나오기도(흐려진 칸이 백트래킹).
이게 AI랑 무슨 상관인가요?
미로 칸을 폴더와 웹페이지로 바꾸면, 두 성격이 바로 옆에 나타나요:
Coding Agent가 코드 찾기
먼저 ls로 최상위—그게 BFS 한 층 쓸기로 전역 감을 잡고; auth/가 수상하면 깊이 파고들며 DFS로 전환. 실제 Agent는 혼합 전략: 넓게 먼저, 깊게 나중, grep으로 점프도 합니다.
웹 크롤러
홈에서 출발해 홈이 링크한 페이지를 먼저 다 모은 뒤 “링크의 링크”—전형적인 BFS로 홈에 가까운 중요 페이지를 먼저 넣어요. DFS라면 링크 하나를 타고 포럼 999페이지에 박힐 수도.
「공통 친구」 추천
「알 수도 있는 사람」= 당신에서 BFS 두 층: 1층은 친구, 2층은 친구의 친구. 2걸음이 5걸음보다 앞—층수 자체가 친소예요.
전승은 없고 장면 매칭만 있어요. “최단 / 최근 / 가장 관련”이면 BFS, 메모리 비용을 감수; “쓸 만한 해를 먼저, 메모리는 빠듯”이면 DFS, 돌아갈 수 있음을 감수. 다음 강의의 탐욕·샘플링, 그다음 Beam Search도 이 「탐색 전략 스펙트럼」 위에서 자리를 고르는 일이에요.
이 강의가 전하고 싶은 것
- BFS 층층이 쓸기: 거리 고리마다 적셔 나가니 찾은 길은 반드시 최단—대가는 메모리에 깔린 넓은 장
- DFS 한 길을 끝까지: 메모리 절약, 해를 더 빨리 만나는 편, 하지만 최단 보장 없고 백트래킹도
- 방문 수 vs 경로 길이: 77/23 대 44/37—숫자 두 쌍이 두 성격의 장부 전부
- 실제 시스템은 섞어 써요: Agent는 먼저 ls 한 층(BFS), 수상한 폴더로 파고듦(DFS)
- 크롤러·공통 친구 추천도 그래프 탐색—미로는 가장 직관적인 한 장일 뿐