DFS Algorithm Depth-First-Search
깊이 우선 탐색 알고리즘
깊이 우선 탐색 알고리즘은 그래프 완전 탐색 기법 중 하나로, 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후, 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다.
특징
- 재귀 함수로 구현
Stack
자료구조 활용
- 시간 복잡도 :
O(V + E)
시간 복잡도 표현 방법
구현 순서
1. DFS
를 시작할 노드를 정한 후 사용할 자료구조 초기화하기
2. 스택에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드 다시 스택에 삽입하기
- 스택에서 노드
pop
하여 해당 노드의 인접 노드 스택에 저장
node 1
를 꺼낸 후, 인접 노드 node 2, 3
을 스택에 저장
3. 스택 자료구제 값이 없을 때까지 반복하기
- 1 ~ 2 번 순서를 스택 자료구조에 값이 없을 때까지 반복한다. 대신, 이미 다녀간 노드는 방문 배열을 바탕으로 재삽입하지 않도록 한다.
node 3
를 꺼내면, 인접 노드 node 4
를 스택에 저장 및 방문 배열 체크
node 4
를 꺼내면, 인접 노드 node 6
를 스택에 저장 및 방문 배열 체크
node 6
를 꺼내면, 인접 노드가 없기 때문에 스택 저장 없음
node 2
를 꺼내면, 인접 노드 node 5, 6
이지만, 이미 node 6
은 방문했기 때문에 node 5
만 스택에 저장 및 방문 배열 체크
DFS
실행 순서
구현
출처