도구스개발

그래프 탐색(DFS·BFS) 순서 계산기

간선 목록과 시작 정점을 넣으면 DFS와 BFS의 방문 순서, BFS 거리, 발견·완료 시각, 연결 요소 개수를 계산합니다. 역방향 간선으로 사이클이 있는지도 함께 알려 줍니다.

간선 목록 (한 줄에 하나)

«A B»는 A와 B를 잇는 간선입니다. 화살표(->)나 쉼표로 써도 되고, 한 줄에 셋 이상 적으면 사슬로 읽습니다.

비우면 이름이 가장 앞선 정점에서 시작합니다.

DFS 방문 순서 (깊이 우선)

A → B → D → C → E

BFS: A → B → C → D → E

정점이웃 (보는 순서)DFS 발견DFS 완료BFS 거리
AB, C1100
BA, D291
CA, D451
DB, C, E382
ED673
연결 요소 (방향 무시)1개
시작점에서 못 가는 정점없습니다
사이클이 있는가있습니다
트리 간선4개
역방향 간선1개
둘의 차이는 «다음에 갈 곳을 어디에 담느냐»뿐입니다. DFS는 스택이라 가장 나중에 담은 곳으로 가 한 갈래를 끝까지 파고들고, BFS는 큐라 가장 먼저 담은 곳으로 가 가까운 곳부터 훑습니다. 그래서 BFS의 방문 순서는 시작점에서 가까운 순이고, 간선에 가중치가 없을 때는 그 거리가 곧 최단거리입니다. 위 표의 «BFS 거리»가 그 값입니다.
이웃을 보는 순서가 방문 순서를 가릅니다. 한 정점에 이웃이 여럿이면 어느 쪽을 먼저 보느냐에 따라 결과가 통째로 달라져, 교재의 답과 다른 이유가 대개 이것입니다. 이 계산기는 언제나 이름이 앞서는 이웃부터 봅니다(숫자는 숫자 크기대로). 위 표의 «이웃» 열이 실제로 보는 순서입니다.
역방향 간선이 있어 사이클이 있습니다. DFS 도중 «아직 나오지 않은 조상»으로 가는 간선이 역방향 간선이고, 그것이 곧 돌아오는 길이 있다는 증거입니다. 발견·완료 시각을 함께 보면 간선을 종류별로 가를 수 있습니다 — 아직 안 가 본 곳으로 가면 트리 간선, 이미 끝난 자손으로 가면 순방향, 이미 끝난 다른 가지로 가면 교차 간선입니다. 무방향 그래프에서는 모든 간선이 트리 아니면 역방향 간선입니다.
DFS의 완료 순서를 뒤집으면 위상 정렬이 되고, BFS는 가중치 없는 최단경로를 줍니다. 가중치가 있으면 BFS로는 부족해 다익스트라 같은 방법이 필요합니다 — 가까운 이웃이 언제나 «가장 싼» 이웃은 아니기 때문입니다.

사용 방법

  1. 1간선을 한 줄에 하나씩 넣습니다. «A B»는 A와 B를 잇는 간선입니다.
  2. 2무방향인지 방향이 있는지 고릅니다.
  3. 3시작 정점을 넣으면 DFS·BFS 방문 순서와 BFS 거리가 나옵니다.
  4. 4발견·완료 시각과 간선 종류에서 사이클이 있는지 확인합니다.

자주 묻는 질문

다음에 갈 곳을 어디에 담아 두느냐가 다릅니다. DFS는 스택이라 가장 나중에 담은 곳으로 가 한 갈래를 끝까지 파고들고, BFS는 큐라 가장 먼저 담은 곳으로 가 가까운 곳부터 훑습니다. 그래서 BFS의 방문 순서는 시작점에서 가까운 순이고, 간선에 가중치가 없을 때는 그 거리가 곧 최단거리입니다.

한 정점에 이웃이 여럿일 때 어느 쪽을 먼저 보느냐에 따라 순서가 통째로 달라지기 때문입니다. 규약을 정하지 않으면 답이 여러 개가 됩니다. 이 계산기는 언제나 이름이 앞서는 이웃부터 보며(숫자는 숫자 크기대로), 결과 표의 «이웃» 열이 실제로 보는 순서입니다.

탐색 도중 «아직 나오지 않은 조상»으로 가는 간선(역방향 간선)이 하나라도 있으면 사이클이 있습니다. 돌아오는 길이 있다는 뜻이기 때문입니다. 무방향 그래프에서는 방금 온 길을 되돌아보는 것은 세지 않아야 하며, 이 계산기는 그것을 걸러 냅니다.

간선을 종류별로 가르는 데 씁니다. 아직 안 가 본 곳으로 가면 트리 간선, 아직 안 나온 조상으로 가면 역방향, 이미 끝난 자손으로 가면 순방향, 이미 끝난 다른 가지로 가면 교차 간선입니다. 순방향과 교차 간선은 방향 그래프에만 나옵니다.

한 정점에서 탐색을 끝냈는데 아직 안 가 본 정점이 남으면, 남은 곳에서 다시 시작하기를 되풀이합니다. 그 횟수가 연결 요소의 개수입니다. 방향 그래프에서는 «시작점에서 갈 수 있는 곳»과 «연결되어 있음»이 다른 이야기라, 이 계산기는 방향을 무시하고 센 값을 보여 줍니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 이웃은 언제나 이름이 앞서는 것부터 봅니다. 다른 규약을 쓰면 방문 순서가 달라지지만 둘 다 옳은 DFS·BFS입니다.
  • 발견·완료 시각은 시작점에서 못 가는 정점까지 모두 훑어 채웁니다. 그래야 간선 종류를 빠짐없이 셀 수 있습니다.
  • 같은 간선을 여러 번 적어도 한 번으로 봅니다. 자기 자신을 가리키는 간선은 그 자체가 사이클입니다.
  • BFS 거리는 간선 수로 잰 값입니다. 간선마다 가중치가 다르면 이 값은 최단거리가 아니며, 다익스트라 같은 방법이 따로 필요합니다.
  • 방향 그래프의 강한 연결 요소(SCC)는 여기서 세지 않습니다. 표시되는 연결 요소는 방향을 무시했을 때의 값입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.