1. Depth-First Search (깊이우선검색)
뿌리노드(root)가 되는 노드(node)를 먼저 방문한 뒤,
그 노드의 모든 후손노드(descendant)들을 차례로 (보통 왼쪽에서 오른쪽으로) 방문한다. (= preorder tree traversal)
- DFS 알고리즘
2. Back Tracking (되추적)
어떤 노드의 유망성(promising, 답이 나올 가능성이 있는 노드)을 점검한 후,
유망하지 않다고 판정되면 그 노드의 부모노드로 돌아가서(backtrack)
다음 후손노드에 대한 검색을 계속 진행하는 과정이다.
- 되추적 알고리즘의 개념
되추적 알고리즘은 깊이우선검색(DFS)을 실시하는데,
유망하지 않은 노드들은 검색을 하지 않으며 유망한 노드에 대해서만 그 노드의 자식노드를 검색한다.
- 진행 절차
ㄱ. 깊이우선검색(DFS)을 실시한다.
ㄴ. 각 노드가 유망한지를 점검한다.
ㄷ. 만일 그 노드가 유망하지 않으면, 그 노드의 부모노드로 돌아가서 검색을 계속한다.
- Backtracking 알고리즘
3. DFS 예
- 4-Queens Problem
4개의 Queen을 서로 상대방을 위협하지 않도록 4 × 4 chess판에 위치시키는 문제이다.
서로 상대방을 위협하지 않기 위해서는 같은 행이나, 같은 열이나, 같은 대각선 상에 위치하지 않아야 한다.
- Graph Coloring
m-coloring: 지도에 m가지 색으로 색칠하는 문제이다.
m개의 색을 가지고, 인접한 지역이 같은 색이 되지 않도록 지도에 색칠하는 문제이다.
'Algorithm' 카테고리의 다른 글
백준 10828번: 스택 (0) | 2018.07.17 |
---|---|
백준 1260번: DFS와 BFS (0) | 2018.04.18 |
BFS (Breadth-First Search) (0) | 2018.04.12 |
백준 1003번: 피보나치 함수 (0) | 2018.04.10 |
Dynamic Programming (다이나믹 프로그래밍) (1) | 2018.04.10 |