Algorithm
[알고리즘] ch05. DFS,BFS
도토오오리
2023. 8. 10. 16:46
<이것이 코딩테스트다 with 파이썬> 책 내용을 바탕으로 작성된 글입니다.
DFS(Deep First Search)
- 깊이 우선 탐색 알고리즘
- 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘
** 먼저 그래프(Graph)의 기본 구조를 알아야 함!
그래프(Graph)
간선, 노드로 구성됨
동작 방식
- 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다.
- 스택 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다.
- 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다.
** ‘방문 처리’는 스택에 한번 삽입되어 처리된 노드가 다시 삽입되지 않게 체크하는 것을 의미한다. 방문 처리를 함으로써 각 노드를 한번씩만 처리할 수 있다.
BFS(Breadth First Search)
- 너비 우선 탐색 알고리즘
- 가까운 노드부터 탐색하는 알고리즘
- 큐(선입선출) 자료구조 사용
동작 방식
- 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다.
- 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않는 노드를 모두 큐에 삽입하고 방문 처리를 한다.
- 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다.
DFS vs BFS
DFS | BFS | |
동작 원리 | 스택 | 큐 |
구현 방법 | 재귀 함수 이용 | 큐 자료구조 이용 |