깊이/너비 우선탐색(DFS/BFS) 참고

한장정리

Untitled

백트래킹 Backtracking

백트래킹은 해결책에 대한 후보 구축하다 가능성이 없다고 판단되는 후보를 포기(backtrack)해 정답을 찾아가는 알고리즘으로 제약 충족 문제에 유용하다.

DFS에서는 항상 백트래킹이라는 단어가 나온다

백트래킹은 DFS보다 좀 더 광의의 의미를 갖는다.

백트래킹은 탐색을 하다가 더 갈 수 없으면 왔던 길을 되돌아가 다른 길을 찾는다는데서 유래했다. 백트래킹은 DFS와 같은 방식으로 탐색하는 모든 방법을 뜻하며, DFS는 백트래킹의 골격을 이루는 알고리즘이다.

이또한 주로 재귀로 구현한다.

Untitled

Untitled

다음과 같이 가능성이 없는 후보는 즉시 포기하고 백트래킹하는 방식으로 트리의 불필요한 부분을 버린다.

이를 “가지치기(pruning)” 라고 한다

불필요한 부분을 일찍 포기 == 탐색을 최적화 ⇒ 가지치기는 탐색의 최적화 문제와도 관련이 깊음

코테에서 자주 쓰이는 DFS 템플릿

완전탐색