Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

백트래킹(Backtracking) 알고리즘

📖개념

  • 기본적으로 재귀적으로 문제를 하나씩 해결하는 방식이다.
  • 각 재귀에서 현재 상태(노드)가 제한 조건을 만족하는지(유망한지) 판단하고, 해당 경우 현재 상태(노드)를 제외하고 다음 단계로 나아가는 방식이다.
  • 여기서 유망(promising)하지 않은 상태를 제외하는 것을 가지치기(pruning)이라고 한다.
    • 유망하지 않은 상태라고 결정되면, 이전 상태로 돌아가(backtracking) 다음 상태를 체크한다.
  • 즉, 이 방법을 통해 모든 경우의 수를 체크하지 않고, 필요한 경우만 체크함으로써 완전탐색에 비해 시간복잡도를 크게 향상시킬 수 있다.
  • 백트래킹 알고리즘은 주로 DFS를 사용하여 구현한다.

DFS와 Backtracking 차이

  • DFS: 완전 탐색을 기본으로 하는 그래프 순회 기법으로, 모든 노드를 방문하는 것을 목표로 한다.
  • Backtracking: 불필요한 탐색은 하지 않으며, 이전 단계로 돌아와 다른 후보해를 탐색해 나가는 방법으로, 유망하지 않은 경우의 수를 줄이는 것을 목표로 한다.