Czy problem „podzbioru produktu” NP-jest kompletny?

21

Problem sumy częściowej jest klasycznym problemem NP-zupełnym:

Biorąc pod uwagę listę liczb i docelowy , czy istnieje podzbiór liczb od który sumuje się do ?k L kLkLk

Student zapytał mnie, czy ten wariant problemu zwany problemem „produktu podzbioru” jest NP-zupełny:

Biorąc pod uwagę listę liczb i docelowy , czy istnieje podzbiór liczb od którego iloczynem jest ?k L kLkLk

Przeszukałem trochę i nie mogłem znaleźć żadnych zasobów, które mówiłyby o tym problemie, chociaż być może brakowało mi ich.

Czy problem z podzespołem NP-zupełny?

templatetypedef
źródło
2
Ciekawe odpowiedzi, ale zastanawiam się: czy nie możemy zredukować do sumy podzbiorów, biorąc po prostu logi k i wszystkie liczby? (Może powinienem zadać osobne pytanie?)
j_random_hacker
1
@ j_random_hacker, tak, jeśli nie możesz znaleźć odpowiedzi po wyszukiwaniu w tej witrynie i online, sugeruję, abyś zamieścił osobne pytanie. To miłe pytanie z ładną odpowiedzią (wskazówka: biorąc dzienniki pozostawia ci coś, co nie jest liczbą całkowitą; w innym kierunku pomyśl o tym, co wykładnik robi na liczbach), ale jest to trochę styczna i byłoby lepiej we własnym pytaniu.
DW
1
@DW: Dzięki, kiedy będę miał czas, zrobię to, co sugerujesz!
j_random_hacker

Odpowiedzi:

13

Komentarz wspomina o redukcji z X3C do SUBSET PRODUCT przypisanej Yao. Biorąc pod uwagę cel redukcji, nietrudno było zgadnąć, jaka mogła być redukcja.

Definicje:

DOKŁADNE POKRYCIE 3-ZESTAWÓW (X3C)

Biorąc pod uwagę skończony zbiór z | X | wielokrotnością 3, oraz zbiór C podzbiorów 3 elementem X , czy C zawierają dokładnie pokrywy C " dla X , gdzie C "C i każdy element X pojawia się tylko raz w C ' ?X|X|CXCCXCCXC

PRODUKT PODSETOWY

Biorąc pod uwagę listę liczb i docelowy k , czy istnieje podzbiór liczb od L, którego iloczynem jest k ?LkLk

Aby zredukować instancję X3C do instancji SUBSET PRODUCT:

  1. Ustanów bijective mapping między elementami i pierwszym | X | liczby pierwsze. Zastąp elementy podzbiorów X i C zmapowanymi liczbami pierwszymi.X|X|XC

  2. Dla każdego podzestawu w pomnóż jego członków razem; wynikowa lista produktów to L dla instancji SUBSET PRODUCT. Ponieważ liczby pierwsze są używane do mapowania w kroku 1, gwarantuje się, że produkty są równoważne, jeśli podzbiory są równoważne przez unikalne twierdzenie o rozkładzie na czynniki .CL

  3. Pomnóż elementy razem; wynikowy produkt jest wartością k dla instancji SUBSET PRODUCT.Xk

Głównymi czynnikami są dokładnie członkowie X . Czynniki pierwsze liczb w L odpowiadają dokładnie członom podzbiorów C. Zatem każde rozwiązanie nowego przykład PODZBIÓR produktu może być przekształcona w roztwór X3C przez odwzorowywanie elementów w roztworze L tyłu do podzbiorach C .kXLCLC

Każdy z 3 etapów transformacji obejmuje operacje wielomianowe względem wielkości danych wejściowych lub rozmiar członek X . Pierwszy | X | liczby pierwsze można generować w czasie O ( | X | ) za pomocą sita Eratostenesa i gwarantuje się, że mieszczą się w przestrzeni O ( | X | 2 ln | X | ) według twierdzenia o liczbie pierwszej .|X|X|X||X|O(|X|2ln|X|)

Kyle Jones
źródło
1
+1, ale aby przejść przez redukcję, myślę, że potrzebujemy pierwszego | X | liczby pierwsze mogą być reprezentowane w wielu bitach, które są wielomianowe w | X | - czy mam rację, a jeśli tak, to czy mamy taką gwarancję?
j_random_hacker
1
Doskonały punkt Dodałem akapit, aby to rozwiązać.
Kyle Jones
1
Dzięki, to twierdzenie je cementuje! Nie, aby wybrać nitpick, ale zgodnie ze stroną, do której prowadzisz link, k-ta liczba pierwsza wynosi około k log k, a biorąc pod uwagę, że sito Eratostenesa najwyraźniej oblicza wszystkie liczby pierwsze do n w czasie O (n log log n) , zastępując n = k log k wydaje się podawać czas O (k * log (k) * log (log (k log k))), a nie O (k) (twoje O (| X |)), do obliczenia pierwszego k przygotowuje się w ten sposób.
j_random_hacker
1
Kyle Jones, czy nie jest krytyczne, że krok 3 stworzy liczbę wielkości wykładniczej? Czy ta redukcja jest rzeczywiście czasem wielomianowym? k
user1742364,
3
kk|X|O(n2)kPXkO(logP)
9

Według [ 1 ]: Tak jest

Przytaczam również to samo odniesienie: Komentarze: Istnieje subtelne techniczne rozróżnienie między tym a Problemem 42: pierwszy przypadek ma pseudoefektywny algorytm uzyskany przez umożliwienie reprezentacji liczb w jedności; chyba że wszystkie problemy NP-zupełne mogą zostać rozwiązane za pomocą szybkich algorytmów, jednak problemu z podzbiorem produktu nie da się rozwiązać metodami „wydajnymi” przy użyciu nawet tej nieuzasadnionej reprezentacji danych wejściowych.

spójrz na [2], aby uzyskać redukcję. [2]: Fellows, Michael i Neal Koblitz. „Złożoność stałych parametrów i kryptografia”. Applied Algebra, Algebraic Algorytmy and Kody korygujące błędy (1993): 121-131.

AJed
źródło
1
Rzeczywista redukcja lub cytowanie w artykule w czasopiśmie byłoby fajne, jeśli to możliwe.
templatetypedef
3
@templatetypedef W przypadku Garey i Johnson redukcja dotyczy dokładnej ochrony o 3 zestawy. Ze względu na prywatną komunikację z Yao.
AJed
Zmniejszenie papieru do kryptografii wiąże się z innym problemem, w którym docelowy produkt jest zastępowany przez zgodność z modułem docelowej liczby moduł podanym w instancji. (Chociaż, jeśli dobrze rozumiem dowód, i tak uzyskują słabą twardość, ponieważ moduł ma wykładniczą wielkość.)
Jeffrey Bosboom