Open tmfrlrkvlek opened 2 years ago
그래프의 탐색 기법으로 BFS(Breadth First Search)는 너비 우선 탐색, DFS(Depth First Search)는 깊이 우선 탐색입니다. 그래프 탐색은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것을 의미합니다. BFS는 간선의 모든 가중치가 같을 때 최단 거리를 구하는 알고리즘으로, 시작 정점을 기준으로 가까운 정점을 먼저 방문합니다. 큐를 이용하여 선입선출의 원칙으로 탐색합니다. DFS는 루트 노드에서 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방법으로 자기 자신을 호출하는 순환 알고리즘의 형태입니다.
그래프를 탐색하는 방법에는 대표적으로 BFS와 DFS가 있습니다.
DFS
Depth First Search의 줄임말로 정점의 자식들을 먼저 탐색하는 방식이다.
스택 또는 재귀함수로 구현한다.
BFS
Breath Frist Search의 줄임말로 정점에서 시작해 인접한 노드를 먼저 탐색하는 방법.
주로 두 노드 사이의 최단경로를 찾고 싶을때 사용
큐를 이용해 구현한다
BFS DFS 둘다 N은 노드, E는 간선일때, 인접리스트의 경우 O(N+E)의 시간복잡도를, 인접 행렬의 경우 O(N^2)의 시간 복잡도를 가진다