“서브 세트 제품”문제가 NP- 완전합니까?


21

부분 집합 합계 문제는 일반적인 NP 완료 문제입니다.

숫자 과 목표 k 의 목록이 주어지면, L 부터 k 까지의 숫자의 부분 집합이 있습니까?LkLk

한 학생이 "서브 세트 제품"문제라는이 변형이 NP- 완전한 것인지 물었습니다.

숫자 과 목표 k 의 목록이 주어지면, L 의 곱이 k 인 숫자의 부분 집합이 있습니까?LkLk

몇 가지 검색을 수행했지만이 문제에 대해 이야기 한 자료를 찾지 못했습니다.

서브 세트 제품 문제가 NP- 완전합니까?


2
흥미로운 답변이지만 궁금합니다 : k와 모든 숫자의 로그를 가져 와서 Subset Sum으로 줄일 수 없습니까? (별도의 질문을해야할까요?)
j_random_hacker

1
@j_random_hacker, 예,이 사이트와 온라인에서 검색 한 후에도 답변을 찾을 수 없으면 별도의 질문을 게시하십시오. 좋은 답변이있는 좋은 질문입니다 (힌트 : 로그를 가져 가면 정수가 아닌 무언가가 남습니다. 다른 방향으로, 숫자의 크기에 지수 화가 무엇인지 생각하십시오). 자체 질문에 더 좋을 것입니다.
DW

1
@DW : 감사합니다. 시간이되면 제안한대로하겠습니다!
j_random_hacker

답변:


13

한 의견은 X3C에서 Yao로 인한 SUBSET PRODUCT 로의 축소를 언급합니다. 축소의 목표를 감안할 때 축소가 무엇 이었을지 추측하기가 어렵지 않았습니다.

정의 :

3 세트 (X3C) 별 정확한 커버

유한 세트 | X | 3의 배수 및 수집 C 의 3 요소 집합의 X는 , 않습니다 C는 정확한 커버 포함 C ' 에 대한 X을 경우, C 'C 와의 모든 요소 X가 정확히 한 번 발생 C ' ?X|X|CXCCXCCXC

서브 세트 제품

숫자 과 목표 k 의 목록이 주어지면, L 의 곱이 k 인 숫자의 부분 집합이 있습니까?LkLk

X3C 인스턴스를 SUBSET PRODUCT 인스턴스로 줄이려면 다음을 수행하십시오.

  1. 의 멤버 와 첫 번째 | X | 소수. XC 서브 세트 의 멤버를 맵핑 된 소수로 바꿉니다 .X|X|XC

  2. 각 부분 집합에 대해 멤버를 곱합니다. 결과 제품 목록은 SUBSET PRODUCT 인스턴스의 L 입니다. 1 단계에서 맵핑에 소수가 사용되므로, 부분 분해능이 고유 인수 분해 정리에 의해 동등하면 곱이 동등하게 보장됩니다 .CL

  3. 의 구성원을 함께 곱하십시오 . 결과 제품은 SUBSET PRODUCT 인스턴스 의 값 k 입니다.Xk

의 소인수 는 정확히 X 의 멤버입니다 . L 의 숫자의 소인수 는 C 부분 집합 의 멤버와 정확히 일치합니다 . 따라서 L 의 솔루션 멤버를 다시 C 의 서브 세트에 맵핑하여 새 SUBSET PRODUCT 인스턴스에 대한 솔루션을 X3C 솔루션으로 변환 할 수 있습니다 .kXLCLC

세 가지 변환 단계 각각에는 입력 또는 구성원의 크기 X . 첫 번째 | X | (소수는 시간 O 생성 할 수 있습니다 | X | 에라 토 스테 네스의 체를 사용하여에 맞게 보장)를 O ( | X | 2 LN | X | ) 에 의해 공간을 소수 정리 .|X|X|X||X|O(|X|2ln|X|)


1
+1이지만 감소를 위해서는 첫 번째 | X | 소수는 | X |에서 다항식 인 비트 수로 표시 될 수 있습니다. -나는 이것에 대해 맞습니까? 그렇다면 우리는 그 보증을 가지고 있습니까?
j_random_hacker

1
훌륭한 지적입니다. 그 문제를 해결하기 위해 단락을 추가했습니다.
Kyle Jones

1
고마워요, 정리는 그것을 정리합니다! nitpick이 아니라 링크 된 페이지에 따르면 k 번째 소수는 대략 k log k이며, 에라토스테네스 체는 분명히 시간 O (n log log n) 에서 n까지의 모든 소수를 계산하고 n = k log k는 O (k) (your O (| X |))가 아닌 O (k * log (k) * log (log (k log k)))의 시간을 제공하여 첫 번째 k를 계산하는 것으로 나타납니다. 그런 식으로 준비합니다.
j_random_hacker

1
Kyle Jones, 3 단계에서 숫자 의 지수 크기를 만드는 것이 중요하지 않습니까? 이 감소가 실제로 다항식 시간입니까? k
user1742364

3
@ user1742364 아니요, 계산 에는 지수 연산을 필요로하지 않거나 지수 비트 수를 저장해야하기 때문입니다. 컴퓨팅 k 필요 | X | 곱셈과 곱셈은 최악의 O ( n 2 ) 연산입니다. 반면 , k는 최대 주요 지수보다 큰 것 PX , 저장에 필요한 비트들의 수 k는 것이다 O ( 로그 P ) . kk|X|O(n2)kPXkO(logP)
Kyle Jones

9

[ 1 ] 에 따르면 : 예

나는 또한 같은 참고 문헌을 인용한다. 의견 : 이것과 문제 42 사이에는 미묘한 기술적 차이가있다. 전자의 경우에는 숫자가 단항으로 표현 될 수 있도록하는 의사 효율적인 알고리즘이있다. 모든 NP- 완전 문제가 빠른 알고리즘으로 해결 될 수 없다면, 서브 세트 제품 문제는이 불합리한 입력 표현을 사용하는 '효율적인'방법으로는 해결할 수 없습니다.

축소를 위해 [2]를 살펴보십시오. [2] : 펠로우, 마이클, 닐 코 블리츠. "고정 매개 변수 복잡성 및 암호화." 응용 대수, 대수 알고리즘 및 오류 수정 코드 (1993) : 121-131.


1
저널 기사의 실제 축소 또는 인용은 가능하다면 좋을 것입니다.
templatetypedef

3
@templatetypedef Garey와 Johnson에서는 3 세트 씩 줄였습니다. Yao와의 개인 커뮤니케이션으로 인해.
AJed

암호 지의 감소는 다른 문제에 대한 것으로서, 대상 제품이 인스턴스에 주어진 모듈러스의 목표 수 모듈러스와 일치하여 대체된다. (내가 증거를 올바르게 이해하더라도, 계수는 크기가 지수이기 때문에 어쨌든 약한 경도를 얻습니다.)
Jeffrey Bosboom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.