21-03-02 알고리즘 기초강의
부분집합의 합 구하기
- Sum-of-Subset Problem - 원소가 n개인 양의 정수 집합 w와 양의 정수 W가 주어졌을 때 합이 W가 되는 w의 부분집합을 모두 찾기
 
- backtracking approach로 해결하기 - 상태공간트리를 만들어 풀기 (리프 노드가 모든 부분집합이 됨)
- 가지치기 전략을 사용하기
 → 검색하기 전에 정수 원소를 오름차순으로 정렬해 놓으면 노드의 유망여부를 탐색 가능하게 됨
 → i번째 레벨에서 wi+1은 남아있는 정수 원소 중에서 가장 작은 값
 → 남아있는 원소 합이 W보다 작다면 하위 노드는 더이상 방문 할 필요가 없다 (유망하지 않기 때문에)
 → weight를 레벨 i까지의 정수 합이라 하고 weight가 W와 같지 않다면 weight + wi+1> W 이라면 그 노드는 유망하지 않음
 → total이 정수 원소의 합일 때 weight를 더했을 때 W와 같아지지 않으므로 weight + total < W 이라면 이 노드도 유망하지 않다
 
| 1 | # i = level, subset의 weight, 남은 원소의 합 total |