Il problema del "prodotto secondario" NP-complete?


21

Il problema della somma parziale è un classico problema NP completo:

Dato un elenco di numeri e un obiettivo , esiste un sottoinsieme di numeri da che somma a ?k L kLkLk

Uno studente mi ha chiesto se questa variante del problema chiamato problema "prodotto secondario" è NP-completa:

Dato un elenco di numeri e un obiettivo , esiste un sottoinsieme di numeri di cui prodotto è ?k L kLkLk

Ho fatto qualche ricerca e non sono riuscito a trovare risorse che parlassero di questo problema, anche se forse mi mancavano.

Il problema con il prodotto secondario è NP-completo?


2
Risposte interessanti, ma mi chiedo: non possiamo ridurre alla somma del sottoinsieme semplicemente prendendo i registri di k e tutti i numeri? (Forse dovrei fare una domanda separata?)
j_random_hacker il

1
@j_random_hacker, sì, se non riesci a trovare una risposta dopo aver cercato su questo sito e online, ti suggerisco di pubblicare una domanda separata. È una bella domanda con una bella risposta (suggerimento: prendere i registri ti lascia con qualcosa che non è un numero intero; nell'altra direzione, pensa a cosa fa esponenziale alla dimensione dei numeri), ma è un po 'tangente e sarebbe meglio nella sua stessa domanda.
DW

1
@DW: Grazie, quando avrò tempo farò come mi hai suggerito!
j_random_hacker il

Risposte:


13

Un commento menziona una riduzione da X3C a PRODOTTO SUBSET attribuito a Yao. Dato l'obiettivo della riduzione, non è stato difficile indovinare quale fosse probabilmente la riduzione.

definizioni:

COPERTURA ESATTA DA 3 SET (X3C)

Dato un set finito conun multiplo di 3 e una raccolta di sottoinsiemi di 3 elementi di , contiene una copertura esatta per , dove e ogni elemento in si trova esattamente una volta in ?| X | C X C C X C C X C X|X|CXCCXCCXC

PRODOTTO SUBSET

Dato un elenco di numeri e un obiettivo , esiste un sottoinsieme di numeri di cui prodotto è ?k L kLkLk

Per ridurre un'istanza X3C in un'istanza di SUBSET PRODUCT:

  1. Stabilire una mappatura biiettiva tra i membri di e il primonumeri primi. Sostituisci i membri dei sottoinsiemi e con i numeri primi mappati.| X | X CX|X|XC

  2. Per ogni sottoinsieme in , moltiplica i suoi membri insieme; l'elenco di prodotti risultante è per l'istanza di SUBSET PRODUCT. Poiché i numeri primi vengono utilizzati per la mappatura nel passaggio 1, i prodotti sono garantiti equivalenti se i sottoinsiemi sono equivalenti dal teorema di fattorizzazione univoco .LCL

  3. Moltiplica i membri di insieme; il prodotto risultante è il valore per l'istanza SUBSET PRODUCT.kXk

I fattori primi di sono esattamente i membri di . I fattori primi dei numeri in corrispondono esattamente ai membri dei sottoinsiemiPertanto qualsiasi soluzione alla nuova istanza SUBSET prodotto può essere trasformato in una soluzione X3C mappando i membri soluzione di indietro ai sottoinsiemi di .X L C L CkXLCLC

Ognuna delle 3 fasi di trasformazione comporta operazioni polinomiali rispetto alla dimensione dell'inputo la dimensione di un membro di . Il primoi primi possono essere generati nel tempo O ( ) usando il setaccio di Eratostene e sono garantiti per adattarsi nello spazio dal teorema del numero primo .X | X | | X | O ( | X | 2 ln | X | )|X|X|X||X|O(|X|2ln|X|)


1
+1, ma affinché la riduzione abbia luogo penso che sia necessario il primo | X | i numeri primi possono essere rappresentati in un numero di bit polinomiali in | X | - ho ragione su questo, e se sì, abbiamo quella garanzia?
j_random_hacker,

1
Punto eccellente. Ho aggiunto un paragrafo per risolverlo.
Kyle Jones,

1
Grazie, quel teorema lo cementa! Non per nitpick, ma secondo la pagina a cui ti sei collegato, il kth numero primo è approssimativamente k log k, e dato che il setaccio di Eratostene calcola apparentemente tutti i numeri primi fino a n nel tempo O (n log log n) , sostituendo n = k log k sembra dare un tempo di O (k * log (k) * log (log (k log k))), piuttosto che O (k) (la tua O (| X |)), per calcolare il primo k numeri primi in questo modo.
j_random_hacker il

1
Kyle Jones, non è fondamentale che il passaggio 3 crei un numero di dimensioni esponenziali? Questa riduzione è davvero del tempo polinomiale? k
user1742364,

3
@ user1742364 No, perché il calcolo di non richiede un numero esponenziale di operazioni o la memorizzazione di un numero esponenziale di bit. Il calcolo di richiedele moltiplicazioni e la moltiplicazione sono nel peggiore dei casi un'operazione . Mentre sarà esponenzialmente più grande del più grande primo in , il numero di bit necessari per memorizzare sarà . k | X | O ( n 2 ) k P X k O ( log P )kk|X|O(n2)kPXkO(logP)
Kyle Jones,

9

Secondo [ 1 ]: Sì, lo è

Cito anche lo stesso riferimento: Commenti: Esiste una sottile distinzione tecnica tra questo e il Problema 42: il primo caso ha un algoritmo pseudo-efficiente ottenuto consentendo di rappresentare i numeri in modo unario; a meno che tutti i problemi NP completi non possano essere risolti con algoritmi veloci, tuttavia, il Problema del prodotto del sottoinsieme non può essere risolto con metodi "efficienti" utilizzando anche questa rappresentazione di input irragionevole.

dare un'occhiata a [2] per una riduzione. [2]: Fellows, Michael e Neal Koblitz. "Complessità a parametri fissi e crittografia." Algebra applicata, algoritmi algebrici e codici di correzione degli errori (1993): 121-131.


1
Una riduzione o citazione effettiva in un articolo di giornale sarebbe utile, se possibile.
templatetypedef

3
@templatetypedef In Garey e Johnson, la riduzione è alla copertura esatta di 3 set. A causa della comunicazione privata con Yao.
AJed

La riduzione della carta crittografica è per un problema diverso, in cui il prodotto target viene sostituito dalla congruenza con un numero target modulo un modulo dato nell'istanza. (Anche se capisco correttamente la prova, ottengono comunque una debole durezza solo perché il modulo ha una grandezza esponenziale.)
Jeffrey Bosboom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.