6. recursion 응용
BackTracking 어떤 결정을 하다가 막다른 골목(조건 불만족, 답을 못찾음)일 경우 가장 최근에 내린 결정을 번복하여 다시 진행
상태공간트리
상태 공간 트리란 찾는 해를 **함하는 트리** 해가 존재한다면 반드시 이 트리의 어떤 한 노드에 해당 따라서 이 트리를 체계적으로 탐색할 경우 해를 발견 가능

Backtracking
상태 공간 트리를 DFS 방식으로 탐색하여 해를 찾는 알고리즘

how to implement
recursion
얘가 더 쉽고 간명
stack]
arguments
현재 어떤 트리의 어떤 노드에 있는지를 지정
queens 문제를 설계 해보자
매개변수 level은 현재 노드를 표현
cols[i]=j는 i번 말이 (i행, j열)에 놓였음을 의미성공이냐 실패를 반환
마지막 else 에서는 리커시브하게 자식 노드 queens 함수 호출
근데 4번 다 돌아봤는데 true가 리턴안되면 false 리턴해야함. 즉, backtracking 시도.
promising-test

같은 대각선에 있는지 알 수 있는 방법

Summary
backtracking
어떤 결정 하다가 잘못됐다싶으면 최근에 내린 결정 번복
상태 공간 트리를 DFS로 탐색하여 해 찾기
상태공간트리
해가 존재한다면 반드시 이 트리의 어떤 한 노드에 해당됨
따라서 이 트리를 체계적으로 탐색하면 해 발견 가능
Last updated
Was this helpful?