백트래킹 알고리즘 (backtracking algorithm)
쉽게 풀면
백트래킹은 미로를 탐험하다 막다른 길을 만나면 갈림길로 되돌아가 다른 길을 시도하는 것과 비슷한 방식이다. 가능한 모든 경우를 하나씩 시도하되, 이미 조건을 만족할 수 없다고 판단되는 경로는 일찌감치 포기하고 되돌아감으로써 불필요한 탐색을 줄인다. N-퀸 문제, 스도쿠 풀이, 부분집합의 합 문제 등에 널리 쓰인다.
왜 중요한가
백트래킹은 제약 만족 문제(CSP), 조합 최적화, 자동 정리 증명, 컴파일러의 파싱 등 폭넓은 영역에서 등장하는 기본적인 완전 탐색 뼈대다. 많은 NP-난해 문제의 실용적 해법이 결국 백트래킹에 가지치기 규칙을 얼마나 잘 결합하느냐로 귀결되기 때문에, 새로운 가지치기 기법이나 탐색 순서 전략을 제안하는 논문에서 비교 기준(baseline)이나 설계의 출발점으로 자주 언급된다. 또한 SAT 솔버, 스케줄링, 회로 설계 등 실무 시스템의 내부 알고리즘을 설명할 때도 핵심 개념으로 다뤄진다.
논문에서는 이렇게 쓰입니다
완전 탐색을 하되 불필요한 경로를 미리 배제하는 탐색 전략을 설명할 때 쓰인다.
제약 만족 문제(CSP) 분야에서 백트래킹의 효율을 높이기 위해 탐색 순서를 조정하는 접근을 설명할 때 쓰인다.
회로 설계나 배치 최적화처럼 조합적 설계 문제를 다루는 응용 분야에서 백트래킹을 활용하는 사례를 설명할 때 쓰인다.
조금 더 깊게 보면
백트래킹의 실제 성능은 대개 가지치기 규칙과 변수·값 선택 순서에 좌우되는데, 논문에서는 이를 위해 제약 전파(constraint propagation), 순방향 확인(forward checking), 충돌 유도 학습(conflict-driven learning)과 같은 보조 기법을 함께 언급하는 경우가 많다. 이러한 기법들은 유망하지 않은 분기를 더 빨리 판단하거나, 실패의 원인이 된 변수를 파악해 탐색 트리를 효율적으로 줄이는 역할을 한다. 관련 개념인 분기 한정법(branch and bound)은 백트래킹에 목적함수의 상한·하한 경계를 추가로 활용하는 변형으로 이해할 수 있으며, 두 기법이 함께 비교되거나 결합되어 제시되는 경우도 흔하다.
주의할 점
백트래킹은 최악의 경우 여전히 지수 시간이 걸릴 수 있으며, 가지치기(pruning)의 효율성에 따라 실제 성능이 크게 달라진다.