부분 집합 합계 변형의 복잡성


9

이 부분 집합 합계 문제는 쉽게 / 알려져 있습니까?

주어진 정수 m, 양의 정수 집합으로 모든A={x1,x2,...,xn}xi 가 최대를k=2 비트로 설정 1 (xi=2bi1+2bi2,bi1,bi20); 서브 세트가 있습니까AA 요소의 합이 같도록 m ?

그것은이다 P? 아직도 그래요NP-완전한?

그리고 모든 경우 xi 기껏해야 k=3 비트로 설정 1? 에 대한k=1 문제는 사소하다.

답변:


8

여전히 NP-완료 k=2. 부분 집합 합계의 인스턴스가 주어지면 숫자를 나누고 비트를 추가 하여이 변형으로 변환 할 수 있습니다.

첫째, 문제의 모든 숫자의 합이 2m 어떤 가치를 위해 m.

자 이제 숫자를 보자 n 원래 문제에서 k비트 세트. 이 숫자를k 정확히 2 비트가 설정된 숫자는 그 숫자의 합이 n+2k+m. 우리는 이것을 재귀 적으로 할 수 있습니다.k 첫 번째까지 합한 숫자 k 비트 플러스 2k+m1k 마지막으로 요약되는 숫자 k 비트 플러스 2k+m1.

그 숫자 외에도 숫자를 추가합니다 2k+m문제에. 솔루션은이 숫자 또는 모두를 포함해야합니다.k이전에 생성 된 숫자. 원래 목표 값이t 새로운 목표 값은 t+2k+m.

원래 문제에 둘 이상의 숫자가 있으면이 과정을 반복 할 수 있습니다 k+m+1 새로운 가치를 위해 m.

비트 위치에는 두 가지 방법 만 있습니다 k+m 설정할 수 있습니다 : 답변에 숫자가 포함될 수 있습니다 2k+m 또는 모두 k 요약되는 숫자 n+2k+m. 따라서 하위 집합 합계를 하위 집합 합계 변형으로 줄였습니다.

예를 들어 보자 {2,3,5} 목표 값 7. 이 문제는 다음 이진수를 사용하여 여기에 제시된 부분 집합 합계 변형으로 인코딩 할 수 있습니다.

2에 매핑됩니다 0100 10000 1. (여기서 여분의 비트를 사용할 필요는 없습니다.)

3에 매핑됩니다 1000 00 1,0100 00 10000 00 01

5에 매핑됩니다 1000 00 000 1,0010 00 000 10000 00 000 01.

새로운 목표 값은 1110 10 010 01.

원래 문제가 n 비트, 그때 변형 된 문제는 최대 O(n4)비트. 원래 문제는 최대O(n) 각각 최대 개수 O(n)비트의 총합도 O (n)입니다. 변형 된 문제는O(n2) 숫자 (각각부터 n비트 번호는 n+1 2길이가 최대 인 비트 수 O(n2) 우리가 사용하기 때문에 n각 숫자에 대한 추가 비트. 변환 된 문제의 총 크기는O(n4) 비트.


인코딩이 작업 테이프의 지수 크기로 이어지지 않습니까?
Vor

아니요, 변형 된 문제는 크기가 작습니다. 입력에 n 비트가있는 경우 n 비트가 설정된 최대 n 개의 숫자가 있습니다. 따라서 변환 된 문제에는 O (n ^ 2) 숫자가 있습니다 (k 비트 숫자는 k + 1 숫자로 나뉘 기 때문에). 각 숫자는 원래 문제에서 n 개의 숫자 각각에 대해 최대 합계 + n 비트를 수용하기 위해 (2n) 비트입니다. 따라서 각 숫자에는 O (2n + n ^ 2) 비트가 있으며 총 O (n ^ 4) 비트가됩니다.
Tom van der Zanden

@TomvaderZanden : 질문에 대한 축소 그림을 추가했습니다. 내가 올바르게 해석했는지 확인
Vor

@ TomVaderZanden : 오늘 나는 당신의 축소를 다시보고 있지만, 임의의 숫자에서 어떻게 nk 비트 세트로 나눌 수 있습니다 k "가장 높은"부분이 합쳐지는 2 비트 숫자 2k. 당신이 숫자를 가지고 있다고 가정nk=13비트 세트; 13 2 비트 숫자가 필요하지만 13은 1101이며 2 비트 숫자로 "표지"할 수 없습니다 (예를 들어 3과 5 k = 2이므로 작동합니다). 각 비트마다 다른 높은 비트를 사용하면 쉽게 해결할 수 있다고 생각합니다.k2 비트 숫자; 그것들은 01111 ... 1에 합산되고, 그 다음에 합이 될 수 있도록 더미 0000 ... 1을 추가합니다2k.
보르

다소 모호하지만 "유도"절차를 사용하면 가능합니다. 당신은 실제로 필요하지 않습니다k 비트, 당신은 필요 ceil(logk). 합계가 13 개의 1 비트 숫자를 찾으려면24그런 다음 합계 6 개의 숫자를 찾아야합니다. 23 7은 또한 23. 우리는 취할 수 있습니다1020+321 실제로 요약하면 24.
Tom van der Zanden

0

이것은 Vor가 질문에서 추출한 정보입니다.

에 대한 k3문제는 NP-complete로 남아 있습니다. 모노톤 X-SAT에서 빠른 감소를 발견했습니다 ( 여기서 축소 스키마 참조 ).

문제는 NP 완료 상태로 남아 있습니다 k=2자세한 내용은 Tom의 답변을 참조하십시오. 다음은 SUBSET SUM에서 축소 한 내용을 간략하게 나타낸 것입니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.