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 |