BFS - algorithm[3]

BFS - algorithm[3]

생성일
May 13, 2024 02:59 AM
Description
알고리즘에 사용되는 BFS에 대해 알아봅니다.
Tag
Algorithm

BFS(Breadth First Search)

다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘
notion image
 
BFS는 그래프라는 자료구조에서 모든 노드를 방문하기 위한 알고리즘이다.
 

Example

사진에서 파란색들을 모두 방문해야 한다.
사진에서 파란색들을 모두 방문해야 한다.
  1. 시작하는 칸을 큐에 넣고 방문했다는 표시를 남김
  1. 큐에서 원소를 꺼내어 그 칸에 상하좌우로 인접한 칸에 대해 3번을 진행
  1. 해당 칸을 이전에 방문했다면 아무 것도 하지 않고, 처음으로 방문했다면 방문했다는 표시를 남기고 해당 칸을 큐에 삽입
  1. 큐가 빌 때까지 2번을 반복
모든 칸이 큐에 1번씩 들어가므로 시간복잡도는 칸이 N개일 때 O(N).
 

잘못 구현한 경우

  1. 시작점에 방문했다는 표시를 남기지 않는다.
  1. 큐에 넣을 때 방문했다는 표시를 하는 대신 큐에서 빼낼 때 표시를 남겼다.
  1. 이웃한 원소가 범위를 벗어났는지에 대한 체크를 잘못했다.
큐에서 빼낼 때 방문했다는 표시를 남기게 되면 같은 위치가 큐에 여러 번 들어가게 된다.