BFS (1) - BFS (Breadth-First Search) 란?

2023. 7. 30. 18:42· Algorithm

BFS 알고리즘은 너비 우선 탐색이라는 의미를 갖고 있다. 말 그대로 가장 가까운 노드부터 탐색해가면서 탐색 범위를 넓혀 나가는 개념이다. DFS는 가장 깊은 노드까지 탐색하고 되돌아가서 다른 경로를 택하는 방법을 취한 것과는 반대로 동작한다는 뜻이다. 

BFS는 큐를 사용해서 선입선출 (FIFO) 의 방식을 사용한다. 인접 노드를 큐에 삽입하고 먼저 들어온 노드가 먼저 큐에서 나가게 되면서 인접한 노드부터 차례대로 탐색을 할 수 있는 것이다. BFS의 동작과정은 다음과 같다.

BFS 동작과정

  1. 탐색을 시작하는 노드를 큐에 삽입하고 방문 처리 한다.

  2. 큐에서 가장 앞에 있는 노드를 꺼내서 그 노드의 인접 노드 중 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리 한다.

  3. 과정2를 더 이상 반복할 수 없을 때까지 반복한다.

이 그래프를 BFS 알고리즘으로 탐색(순회) 한다고 가정해보자. 먼저 탐색 시작 노드를 V0로 설정했을 때, 탐색 순서는 다음과 같다.

0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7

또한 큐에 노드가 삽입되고 꺼내지는 과정은 아래와 같다.


큐를 사용해서 BFS 알고리즘을 구현해야 한다. 이 때 앞선 게시물(https://blogan99.tistory.com/20)을 참고하면 collections 모듈의 deque 라이브러리를 사용하여 큐를 구현하는 것이 이상적임을 알 수 있다.

이 때 BFS 방식의 탐색을 수행함에 있어서 모든 노드를 큐에 삽입하므로 시간복잡도는 O(N) 임을 알 수 있다. 

일반적인 경우 실제 수행 시간은 DFS보다 BFS 알고리즘이 더 짧다는 점만 기억해두자.

아래는 큐를 활용하여 BFS 알고리즘을 구현한 소스코드이다.

 

저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

BFS (2) - 실전문제 5.4) 미로 탈출  (0) 2023.08.01
DFS (2) - 실전문제 5.3) 음료수 얼려 먹기  (0) 2023.08.01
DFS (1) - DFS (Depth-First Search) 란?  (0) 2023.07.30
자료구조 (Data Structure) (6) - 그래프 표현 방식 : 인접 리스트 (Adjacency List)  (0) 2023.07.30
자료구조 (Data Structure) (5) - 그래프 표현 방식 : 인접 행렬 (Adjacency Matrix)  (0) 2023.07.30
'Algorithm' 카테고리의 다른 글
  • BFS (2) - 실전문제 5.4) 미로 탈출
  • DFS (2) - 실전문제 5.3) 음료수 얼려 먹기
  • DFS (1) - DFS (Depth-First Search) 란?
  • 자료구조 (Data Structure) (6) - 그래프 표현 방식 : 인접 리스트 (Adjacency List)
공대생안씨
공대생안씨
전자공학과 학부생의 코딩 일기
공대생의 코딩 일기전자공학과 학부생의 코딩 일기
티스토리
|
공대생안씨
공대생의 코딩 일기
공대생안씨
글쓰기
|
관리
전체
오늘
어제
  • All Categories (151)
    • Spring Boot (46)
      • JPA (7)
      • Lombok (2)
    • Java (21)
    • DevOps (3)
      • CI,CD (8)
    • Database (7)
      • MySQL (5)
      • MongoDB (1)
      • H2 (1)
    • Trouble Shooting (5)
    • FE (4)
    • IntelliJ (3)
    • Git (3)
    • Algorithm (41)

블로그 메뉴

  • 홈
  • 태그
  • Github

공지사항

인기 글

hELLO · Designed By 정상우.v4.2.2
공대생안씨
BFS (1) - BFS (Breadth-First Search) 란?
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.