39. Search Tree [14-2주차]
2024년
1월 14일 일요일
오후 5:23
<Search Trees and Cutoff>
15퍼즐의 경우 State
Space Graph를 만들려면 노드 16!개가 필요하다.
만들어야 할 노드 개수가 너무 많으므로, 실제로 컴퓨터로
15퍼즐을 풀 때는 처음 두 줄은 휴리스틱으로 풀고(일반적으로 사람이 풀 때랑 비슷한 풀이) 밑의 두 줄은 8!개의 노드를 가진 State space graph의 shortest path를 구해 푼다.
 
이와 같이 State Space 그래프가 너무
커서 전부 만들기 힘든 경우가 자주 있다. 이런 경우 Search
Tree와 Cutoff를 사용할 수 있다.
 
 
 
<Subset Sum Problem>
NP-Complete 문제이다. 자연수 집합 A={a1, a2, a3, …, an}와 타겟S가 주어진다. 합이 S가 되는 A의 부분 집합을 모두 구해야 한다.

Search Tree는 이진 트리 형태가 되며, ai가 부분집합에 포함되는지 포함되지 않는지를 기준으로 만들어진다. (여기서 Search Tree의 노드가 State Space의 원소와 약간 차이가 있다는 것에 주의)
 
이런 식으로 Search Tree를 만들어 나간
뒤 리프 노드의 선택된 원소의 합을 구하면 정답을 찾을 수 있다. 그러나 수행시간을 줄이려면 다음과
같이 cutoff를 해야 한다.
 
 
<N-Queen 에서 Search Tree>
N-Queen 문제를 푸는 알고리즘도 Search Tree로 이해할 수 있다.
 
(N-Queen 문제를 푸는 알고리즘이 실제로 트리를 만들
필요는 없다. 보통 크기가 N인 배열 하나로 구현한다)
 
 
 
OneNote에서 작성되었습니다.