그래프 순회란?
•
그래프 순회(탐색)란 그래프 내의 모든 노드를 한 번씩 방문하는(살펴보는) 것이다.
•
비선형 자료구조인 그래프의 순회(탐색)은 시작 노드를 설정해 주어야 한다.
•
그래프 탐색 알고리즘
◦
깊이 우선 탐색 (DFS, Depth-Frist Search)
▪
현재 탐색 중인 노드를 기준으로 연결된 노드를 즉시 방문하는 방식
◦
너비 우선 탐색 (BFS, Breadth-First Search)
▪
시작 노드를 기준으로 거리가 가까운 노드를 먼저 방문하는 방식
깊이 우선 탐색 (DFS)
•
현재 탐색 중인 노드를 기준으로 연결된 노드를 즉시 방문하는 방식
•
시간 복잡도:
◦
: 노드의 개수
◦
: 간선의 개수
동작 방식
예제 코드 (재귀 함수를 이용한 구현)
너비 우선 탐색 (BFS)
•
시작 노드를 기준으로 거리가 가까운 노드를 먼저 방문하는 방식
•
시간 복잡도:
◦
: 노드의 개수
◦
: 간선의 개수
동작 방식
예제 코드 (재귀 함수를 이용한 구현)
원리 설명
내용 정리
•
그래프 순회 알고리즘으로 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)가 있다.
•
두 알고리즘 모두, 노드와 간선을 한 번씩 처리하기 때문에 시간 복잡도는 이다.
•
깊이 우선 탐색(DFS) vs 너비 우선 탐색(BFS)
◦
일반적인 그래프 순회(탐색)를 구현해야 할 때
▪
DFS와 BFS 모두 사용 가능
◦
시작 노드로부터 가까운 노드 순으로 방문해야 할 때
▪
DFS 불가능 / BFS 가능
•
그러나, 깊이 우선 탐색(DFS)를 공부해야 하는 이유
◦
그래프 탐색 응용 문제에서 DFS를 기반으로 코드를 작성해야 하는 경우가 종종 있음.