본문 바로가기

자료구조 알고리즘/탐색 알고리즘(Search)

[알고리즘] 백 트래킹(Backtracking)

 

 

 

 

 

알고리즘 개요 및 소개

백 트래킹(BackTracking) 또는 퇴각 검색(Backtrack)으로 불리는 이 방식은 DFS(깊이 우선 탐색) 구조를 기반으로 문제를 푸는 전략이다.

백 트래킹은 탐색을 진행하다가 더 갈 수가 없으면 왔던 길을 되돌아가 다른 길을 찾는다고 해서 이런 이름이 붙었다.

백트래킹은 주로 재귀적으로 구현하며 백트래킹 알고리즘마다 DFS에서 조금씩의 변형이 일어나지만 기본적으로는

모두 DFS의 범주에 속한다.  백 트래킹은 실제 구현 시 고려할 수 있는 모든 경우의 수를 *상태 공간 트리(State Space Tree)를 통해 표현한다. 상태 공간 트리를 탐색하면서 조건이 맞지 않으면 다른 곳으로 넘어가서 탐색을 진행하며 아래와 같은 기법이 존재한다.

 

  • Promising: 해당 루트가 조건에 맞는지 검사하는 기법
  • Pruning(가지치기): 조건에 맞지 않으면 포기하고 다른 루트로 돌아가서, 탐색의 시간을 절약하는 기법

상태공간 트리(State Space Tree): 문제 해결의 중간과정(상태)을 각각의 노드로 나타낸 트리

 

관련 글

[자료구조 알고리즘/탐색 알고리즘] - 깊이 우선 탐색(Depth First Search)

[온라인 코딩/탐색(Search)] - [백준] 15649번 N과 M

 

후기

3월의 마지막 글인 백 트래킹에 대해서 알아보았다. 사실 백트래킹 자체는 DFS와 비슷하기 때문에 정리할 내용이 많이 없었다.

핵심은 상태공간 트리라고 생각하는데 여러 문제를 풀어보면서 배워볼 예정이다.

 

출처 및 레퍼런스

Wiki: https://ko.wikipedia.org/wiki/퇴각검색

Book: 쉽게 배우는 알고리즘 문병로 저