728x90
깊이 우선 탐색은 깊은 것을 우선적으로 탐색하는 알고리즘입니다.
last in first out구조의 스택을 사용해 구현할 수 있습니다.
우선 1을 방문 처리해 스택에 넣어줍니다.
스택에서 최상단 노드를 확인하고(여기서는 1이겠죠.)
연결된 노드가 있다면 그 노드를 스택에 넣어줍니다.
만약 방문하지 않은 연결된 노드가 없다면 마지막으로 들어온 것부터 하나하나 꺼내면서 위의 과정을 반복합니다.
이 과정을 연결된 모든 노드를 한 번씩 살펴볼 때까지 반복합니다.
1에 방문합니다.
그러면 스택에 1이 들어갑니다.
[1]
이제 1과 인접한 수중 가장 작은 2를 방문하고 스택에 넣어줍니다.
[2,1]
2와 인접한 수중 가장 작은 3을 방문하고 스택에 넣어줍니다.
[3,2,1]
위와 같은 과정을 반복하면
[6,3,2,1]
[7,6,3,2,1]
7까지 방문할 수 있습니다.
7은 방문하지 않은 연결 노드가 없습니다.
스택에서 가장 최근에 들어간 노드부터 빼기 시작합니다.(last in first out)
[6,3,2,1]
6,3은 7과 마찬가지입니다.
2는 4가 남아있습니다.
이제 [4,2,1]이 남고
[5,4,2,1]이 됩니다.
5는 방문하지 않은 연결된 노드가 없습니다.
4,2,1 역시 마찬가지이죠.
이제 다 빠지게 됩니다.
방문 순서는 1-2-3-6-7-4-5입니다.
이렇듯 연결된 노드 중 가장 깊은 곳까지 탐색합니다.
728x90
'기타 > algorithm' 카테고리의 다른 글
합집합(union find) 알고리즘 (0) | 2021.01.28 |
---|---|
[알고리즘] BFS(너비 우선 탐색), DFS(깊이 우선 탐색) 비교 (0) | 2021.01.27 |
[알고리즘] 선형 큐 문제점 및 한계 (0) | 2021.01.25 |
큐와 덱, 1021번 회전하는 큐 풀이 (0) | 2020.11.13 |
손익분기점 1712번 백준 풀이 (0) | 2020.11.10 |