본문 바로가기
개발/CodingTest

[자료구조] DFS와 BFS의 비교

by on_master 2024. 1. 23.

DFS vs. BFS: 그래프 탐색 알고리즘 비교

 

그래프 탐색은 그래프나 트리와 같은 자료구조에서 노드를 탐색하는 중요한 작업입니다.

 

이러한 탐색을 수행하기 위해 주로 사용되는 두 가지 알고리즘인 "깊이 우선 탐색 (DFS)""너비 우선 탐색 (BFS)"를 비교해보겠습니다.

 

 

[자료구조] DFS 이란?

깊이 우선 탐색 (DFS) 이란? 깊이 우선 탐색(DFS, Depth-First Search)은 그래프와 트리와 같은 자료구조에서 사용되는 탐색 알고리즘 중 하나입니다. 이 알고리즘은 어떤 시작 노드에서 출발하여 가능한

sonlife97.tistory.com

 

 

[자료구조] BFS 이란?

너비 우선 탐색 (BFS) 이란? 너비 우선 탐색(BFS, Breadth-First Search)은 그래프와 트리와 같은 자료구조에서 사용되는 탐색 알고리즘 중 하나입니다. 이 알고리즘은 시작 노드에서부터 인접한 모든 노

sonlife97.tistory.com

 

 

1. 탐색 순서

 

DFS (깊이 우선 탐색): DFS는 시작 노드에서 가능한 한 깊이 들어가며 탐색을 진행합니다. 현재 분기에서 더 이상 진행할 수 없을 때 다음 분기로 넘어갑니다. 따라서 깊은 곳을 먼저 탐색하고 나중에 돌아오는 방식입니다.

BFS (너비 우선 탐색): BFS는 시작 노드에서 인접한 모든 노드를 먼저 탐색하고, 그 다음 레벨의 노드로 이동합니다. 가까운 노드부터 탐색하여 너비를 우선으로 탐색하는 방식입니다. 

 



 

2. 데이터 구조

 

DFS: DFS는 주로 스택(stack)을 사용하거나 재귀 함수를 통해 구현됩니다. 현재 노드를 스택에 넣고, 다음 노드로 이동하며 스택에 계속 추가하고 빼는 방식으로 동작합니다.

BFS: BFS는 큐(queue)를 사용하여 구현됩니다. 시작 노드를 큐에 넣고, 먼저 들어온 노드부터 처리하며 다음 레벨의 노드를 큐에 추가합니다.



3. 활용 예시

 

DFS: 주로 경로 찾기, 그래프 순회, 연결 요소 탐색과 같이 깊이가 중요한 문제에 사용됩니다. 예를 들어, 미로 찾기나 깊이에 따른 경로 분석에 적합합니다.

BFS: BFS는 최단 경로 문제에 적합하며, 너비를 우선으로 탐색하기 때문에 최단 경로를 찾는 데 효과적입니다. 또한 네트워크 최적화, 친구 관계 분석 등 다양한 분야에서 활용됩니다.

 

4. 시간 복잡도

 

DFS: DFS의 시간 복잡도는 O(V + E) 입니다. 여기서 V는 노드의 수, E는 간선의 수를 나타냅니다.

BFS: BFS의 시간 복잡도 역시 O(V + E) 입니다. 노드와 간선의 수에 비례하여 동작합니다.

 

5. 고려 사항

 

DFS: DFS는 무한 루프에 빠질 수 있으며, 최단 경로 문제에는 적합하지 않을 수 있습니다. 따라서 문제의 특성에 따라 사용 시 주의가 필요합니다.

BFS: BFS는 최단 경로를 찾는 데 효과적이지만, 메모리 사용량이 더 크고 깊은 경로에는 적합하지 않을 수 있습니다.

두 알고리즘은 각각의 장단점이 있으며, 문제의 성격과 요구사항에 따라 적절한 알고리즘을 선택해야 합니다. DFS는 깊은 곳을 탐색하거나 연결 요소를 찾는 데 유용하며, BFS는 최단 경로 문제를 해결하는 데 특히 유용합니다.

'개발 > CodingTest' 카테고리의 다른 글

[자료구조] 삽입정렬이란?  (0) 2024.01.24
[자료구조] 선택정렬이란?  (0) 2024.01.24
[자료구조] BFS 이란?  (1) 2024.01.23
[자료구조] DFS 이란?  (1) 2024.01.23
[백준] 13305번 - 주유소 - 그리디 알고리즘  (1) 2024.01.22