백트래킹

황준승·2021년 4월 20일
1
post-custom-banner

백트래킹(역 추적)은 일부 계산 문제, 특히 제약 만족 문제에 대한 모든 솔루션을 찾기 위한 일반적인 알고리즘으로, 솔루션에 대한 후보를 점진적으로 구축하고 후보가 가능하지 않다고 결정하는 즉시 후보의 역추적을 포기합니다.

문제)
주어진 리스트 [1,2,3,4]라고 할 때 주어진 리스트에서 2개를 조합하여 만들 수 있는 리스트를 구해보자.

그렇다면 우리는 1을 정해 놓고 올 수 있는 목록들 2,3,4를 하나씩 붙여넣고, 2를 정해서 3,4를 붙여넣고 3을 정해서 4를 붙여 넣어 답을 추려낼 수 있을 것이다.

백트래킹 방식도 마찬가지이다. 말로 설명하기 힘들어 그림으로 표현해 보았다.

즉 모든 경우의 가짓 수를 다 탐색하는 데 만약에 해당 조건을 만족할 경우 역추적을 포기하고 다른 가짓 수를 탐색하는 방식이 바로 백트래킹이다.

이러한 방식의 백트래킹은 재귀로 구현하였을 때 좀 더 효과적으로 구현할 수 있다.

profile
다른 사람들이 이해하기 쉽게 기록하고 공유하자!!
post-custom-banner

0개의 댓글