본문 바로가기
부트캠프교육중/알고리즘

BFS, DFS

by 뭉지야 2023. 3. 16.
728x90

그래프의 탐색은 하나의 정점에서 시작하여 그래프의 모든 정점을 한번씩 방문(탐색)하는 것이 목적이다.
정점 탐색방법의 대표적인 두가지는 BFS와 DFS가 있다.
이 둘은 데이터를 탐색하는 순서만 다를뿐, 모든 자료를 하나씩 확인해 본다는 점은 같다.

DFS와 BFS는 모든 정점을 한 번만 방문한다는 공통점을 가지고 있지만, 사용할때의 장단점은 분명하기 때문에 해당하는 상황에 맞는 탐색 기법을 사용해야 한다.


BFS(Breadth-First Search)

-너비를 먼저 탐색하는 방법이다. 너비 우선 탐색이라고 한다.
-최단경로(주로 두 정점 사이의 최단 경로를 찾을때 사용한다.)
-한 경로를 끝까지 모두 다 탐색하는 처음 발견한 답이 최단 거리가 아닐 수 있지만, BFS는 현재 있는 노드에서 가까운 곳부터 탐색하므로 경로를 탐색하는 도중 가장 먼저 발견한 해답이 최단거리라는 보장이 된다.
-가까운 정점부터 탐색한다. 같은 레벨까지만. 그리고 더는 탐색할 정점이 없을때, 그 다음 레벨에 위치한 정점을 순서대로 방문한다.

 

 

DFS(Depth-First Search)

-깊이를 먼저 탐색하는 방법이다. 깊이 우선 탐색이라고 한다.
-한 정점에서 시작해서 다음 경로로 넘어가기 전에 해당 경로를 완벽하게 탐색할때 사용한다.(하나의 경로를 끝까지 탐색한후, 다음경로로 넘어가 탐색한다.)
-BFS보다 탐색 시간은 조금 오래 걸릴지라도 모든 노드를 완전히 탐색할수있다.


출처

코드스테이츠

728x90

'부트캠프교육중 > 알고리즘' 카테고리의 다른 글

시간복잡도  (0) 2023.04.05
알고리즘  (0) 2023.04.05
그래프(Graph)  (0) 2023.03.16
트리 순회  (0) 2023.03.15
이진트리, 이진탐색트리  (0) 2023.03.15