“서브 세트 제품”문제가 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|CXCC′XC′⊆CXC′

서브 세트 제품

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

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

  1. 의 멤버 와 첫 번째 | X | 소수. X 및 C 서브 세트 의 멤버를 맵핑 된 소수로 바꿉니다 .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는 최대 주요 지수보다 큰 것 P 의 X , 저장에 필요한 비트들의 수 k는 것이다 O ( 로그 P ) . kk|X|O(n2)kPXkO(log⁡P)
— 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.