devforin
걸어서 개발속으로
devforin
전체 방문자
오늘
어제
  • in world's
    • 끄적임
    • Oracle SQL
    • Python
    • Java
    • Algorithm
    • dev-tools tip
    • 기술면접정리

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 반복문
  • sql
  • 취준생
  • for문
  • SQL문법
  • 백엔드
  • 개발공부
  • While문
  • Oracle
  • python
  • 알고리즘
  • 공부
  • DB
  • if문
  • 오라클
  • 개발자
  • java
  • DATABASE
  • 개발
  • 소수판별

최근 글

티스토리

hELLO · Designed By 정상우.
devforin

걸어서 개발속으로

Algorithm #1 DFS / BFS 개념 정리
Algorithm

Algorithm #1 DFS / BFS 개념 정리

2022. 6. 30. 18:27

출처 - https://dev-splin.github.io/cs%28computer%20science%29/datastructure/DataStructure-Example-DFS-BFS/

DFS (깊이 우선 탐색, Depth-First Search)

"루트노드(혹은 다른 임의의 노드)에서 다음 분기(branch)로 넘어가기 전에, 해당 분기(branch)를 모두 탐색하는 방법. 탐색 후에는 다시 원점으로 돌아가 다른 분기를 탐색"

 

- 트리의 순회와 같이 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘들을 그래프의 탐색(search) 알고리즘이라고 한며,  깊이 우선 탐색(DFS; depth-first search)은 그래프의 모든 정점을 발견하는 가장 단순하고 고전적인 방법.

 

- 미로찾기를 예로 들면 최대한 한 반향으로 갈수 잇을때까지 나가다가 막다른 길이 나오면 가장 최근의 갈림길로 돌아가서 다시 한 방향으로 나가는 것을 반복하는 방식.

출처 https://developer-mac.tistory.com/64

 

- 특징

1) 자기 자신을 호출하는 순환 알고리즘의 형태.(재귀 or Stack)

2) 그래프 탐색 시 어떤 노드를 방문했는지 검사 필요. 검사하지 않으면 무한루프에 빠질 수 있음.

3) 최적의 경로를 찾다가 막다른 경로가 나오면 갈림길이 있는 노드로 돌아감.

4) 모든 노드를 다 방문 할 때 이 방법을 사용.

5) 너비 우선 탐색(BFS) 보다 간단하다. 하지만 너비 우선 탐색보다 속도가 느리다.

 

 

BFS (너비 우선 탐색, Bread-First Search)

"루트 노드(혹은 다른 임의의 노드)에서 시작한 인접 노드를 먼저 탐색하는 방법."

 

- 너비 우선 탐색(BFS; Breadth First Search)은 시작점에서 가까운 정점부터 순서대로 방문하는 탐색 알고리즘으로, 동작 과정이 직관적이여서 이해하기 쉽다.

 

 

- 특징

1) 시작 정점으로부터 거리가 가까운 정점의 순서로 탐색한다. (거리 1부터 2, 3 ,4순서대로...)

2) 그래프 탐색 시 어떤 노드를 방문했는지 검사 필요. 검사하지 않으면 무한루프에 빠질 수 있음.

3) 재귀적으로 동작하지 않음.

4) 방문한 노드들을 차례로 저장하고 꺼낼 수 있는 자료 구조인 Queue를 사용함.

5) FIFO ( First-In First-Out) 선입선출 원칙.

6) 두 노드 사이 최단 경로 혹은 임의의 경로를 찾고자 할 때 이 방법을 사용.

저작자표시 비영리 동일조건 (새창열림)

'Algorithm' 카테고리의 다른 글

Algorithm #2 에라토스테네스의 체(Sieve of Eratosthenes)  (1) 2022.06.30
    devforin
    devforin
    개발, 공부, 일상 기록을 위한 스케치북

    티스토리툴바