답변:
여전히 -완료 . 부분 집합 합계의 인스턴스가 주어지면 숫자를 나누고 비트를 추가 하여이 변형으로 변환 할 수 있습니다.
첫째, 문제의 모든 숫자의 합이 어떤 가치를 위해 .
자 이제 숫자를 보자 원래 문제에서 비트 세트. 이 숫자를 정확히 2 비트가 설정된 숫자는 그 숫자의 합이 . 우리는 이것을 재귀 적으로 할 수 있습니다. 첫 번째까지 합한 숫자 비트 플러스 과 마지막으로 요약되는 숫자 비트 플러스 .
그 숫자 외에도 숫자를 추가합니다 문제에. 솔루션은이 숫자 또는 모두를 포함해야합니다.이전에 생성 된 숫자. 원래 목표 값이 새로운 목표 값은 .
원래 문제에 둘 이상의 숫자가 있으면이 과정을 반복 할 수 있습니다 새로운 가치를 위해 .
비트 위치에는 두 가지 방법 만 있습니다 설정할 수 있습니다 : 답변에 숫자가 포함될 수 있습니다 또는 모두 요약되는 숫자 . 따라서 하위 집합 합계를 하위 집합 합계 변형으로 줄였습니다.
예를 들어 보자 목표 값 . 이 문제는 다음 이진수를 사용하여 여기에 제시된 부분 집합 합계 변형으로 인코딩 할 수 있습니다.
2에 매핑됩니다 과 . (여기서 여분의 비트를 사용할 필요는 없습니다.)
3에 매핑됩니다 과
5에 매핑됩니다 과 .
새로운 목표 값은 .
원래 문제가 비트, 그때 변형 된 문제는 최대 비트. 원래 문제는 최대 각각 최대 개수 비트의 총합도 O (n)입니다. 변형 된 문제는 숫자 (각각부터 비트 번호는 길이가 최대 인 비트 수 우리가 사용하기 때문에 각 숫자에 대한 추가 비트. 변환 된 문제의 총 크기는 비트.
이것은 Vor가 질문에서 추출한 정보입니다.
에 대한 문제는 NP-complete로 남아 있습니다. 모노톤 X-SAT에서 빠른 감소를 발견했습니다 ( 여기서 축소 스키마 참조 ).
문제는 NP 완료 상태로 남아 있습니다 자세한 내용은 Tom의 답변을 참조하십시오. 다음은 SUBSET SUM에서 축소 한 내용을 간략하게 나타낸 것입니다.