¿El problema del "subconjunto de productos" es NP completo?

21

El problema de la suma de subconjuntos es un problema clásico de NP completo:

Dada una lista de números y un objetivo k , ¿hay un subconjunto de números de LLkL que sume a ?k

Un estudiante me preguntó si esta variante del problema llamado problema del "subconjunto de productos" es NP-complete:

Dada una lista de números y un objetivo k , ¿hay un subconjunto de números de L cuyo producto esLkL ?k

Hice un poco de búsqueda y no pude encontrar ningún recurso que hablara sobre este problema, aunque quizás los extrañé.

¿El problema del subconjunto de productos es NP-completo?

templatetypedef
fuente
2
Respuestas interesantes, pero me pregunto: ¿no podemos reducir a Subset Sum simplemente tomando registros de k y todos los números? (¿Tal vez debería hacer una pregunta por separado?)
j_random_hacker
1
@j_random_hacker, sí, si no puede encontrar una respuesta después de buscar en este sitio y en línea, le sugiero que publique una pregunta por separado. Es una buena pregunta con una buena respuesta (pista: tomar registros te deja con algo que no es un número entero; en la otra dirección, piensa en lo que la exponenciación hace con el tamaño de los números), pero es un poco tangente y sería mejor en su propia pregunta.
DW
1
@DW: ¡Gracias, cuando tenga tiempo haré lo que me sugieres!
j_random_hacker

Respuestas:

13

Un comentario menciona una reducción de X3C a PRODUCTO SUBSET atribuido a Yao. Dado el objetivo de la reducción, no fue difícil adivinar cuál era la reducción.

Definiciones:

CUBIERTA EXACTA POR 3-SETS (X3C)

Dado un conjunto finito con | X | un múltiplo de 3, y una colección C de subconjuntos de 3 elementos de X , C contiene una cubierta exacta C ' para X , donde C 'C y cada elemento en X aparece exactamente una vez enX|X|CXCCXCCXC ?

PRODUCTO SUBSET

Dada una lista de números y un objetivo k , ¿hay un subconjunto de números de LLkL cuyo producto sea ?k

Para reducir una instancia de X3C a una instancia de SUBSET PRODUCT:

  1. Establecer un mapeo biyectivo entre los miembros de y el primero | X | números primos. Reemplace los miembros de los subconjuntos X y C con los primos asignados.X|X|XC

  2. Para cada subconjunto en , multiplique sus miembros juntos; la lista de productos resultante es L para la instancia SUBSET PRODUCT. Debido a que los números primos se usan para el mapeo en el paso 1, se garantiza que los productos serán equivalentes si los subconjuntos son equivalentes por el teorema de factorización único .CL

  3. Multiplica los miembros de juntos; el producto resultante es el valor k para la instancia de SUBSET PRODUCT.Xk

Los factores primos de son exactamente los miembros de X . Los factores primos de los números en L corresponden exactamente a los miembros de los subconjuntos de C. Por tanto, cualquier solución a la nueva instancia SUBSET producto puede ser transformado en una solución x3c mediante la asignación de los miembros de solución de L de nuevo a los subconjuntos en C .kXLCLC

Cada uno de los 3 pasos de transformación implica operaciones que son polinómicas al tamaño de la entrada o el tamaño de un miembro de X . El primero | X | los primos se pueden generar en el tiempo O ( | X | ) utilizando el tamiz de Eratóstenes y se garantiza que encajan en el espacio O ( | X | 2 ln | X | ) mediante el teorema del número primo .|X|X|X||X|O(|X|2ln|X|)

Kyle Jones
fuente
1
+1, pero para que la reducción pase, creo que necesitamos que la primera | X | los números primos se pueden representar en una cantidad de bits que es polinomial en | X | - ¿Tengo razón sobre esto, y si es así, tenemos esa garantía?
j_random_hacker
1
Excelente punto He agregado un párrafo para abordar eso.
Kyle Jones
1
¡Gracias, ese teorema lo consolida! No es una trampa, pero de acuerdo con la página a la que se vinculó, el número primo k es aproximadamente k log k, y dado que el Tamiz de Eratóstenes aparentemente calcula todos los primos hasta n en el tiempo O (n log log n) , sustituyendo n = k log k parece dar un tiempo de O (k * log (k) * log (log (k log k))), en lugar de O (k) (su O (| X |)), para calcular la primera k prepara de esa manera.
j_random_hacker
1
Kyle Jones, ¿no es crítico que el paso 3 cree un número de tamaño exponencial? ¿Es esta reducción realmente del tiempo polinomial? k
user1742364
3
@ user1742364 No, porque calcular no requiere un número exponencial de operaciones o requiere almacenar un número exponencial de bits. Computación k requiere | X | multiplicaciones y multiplicación es, en el peor de los casos, una operación O ( n 2 ) . Mientras que k será exponencialmente mayor que el primo P más grande en X , el número de bits necesarios para almacenar k será O ( log P ) . kk|X|O(n2)kPXkO(logP)
Kyle Jones
9

De acuerdo con [ 1 ]: Sí, es

También cito la misma referencia: Comentarios: Existe una sutil distinción técnica entre esto y el Problema 42: el primer caso tiene un algoritmo pseudoeficiente obtenido al permitir que los números se representen en unario; a menos que todos los problemas NP-completos puedan resolverse mediante algoritmos rápidos, sin embargo, el problema del subconjunto de productos no puede resolverse mediante métodos 'eficientes' que utilicen incluso esta representación de entrada irrazonable.

Eche un vistazo a [2] para ver una reducción. [2]: Compañeros, Michael y Neal Koblitz. "Complejidad de parámetros fijos y criptografía". Álgebra aplicada, algoritmos algebraicos y códigos de corrección de errores (1993): 121-131.

AJed
fuente
1
Una reducción o cita real en un artículo de revista sería bueno, si es posible.
templatetypedef
3
@templatetypedef En Garey y Johnson, la reducción es a la cobertura exacta en 3 sets. Debido a la comunicación privada con Yao.
AJed
La reducción en el papel de criptografía es por un problema diferente, en el que el producto objetivo se reemplaza por congruencia con un número objetivo módulo un módulo dado en la instancia. (Aunque si entiendo la prueba correctamente, solo obtienen una dureza débil de todos modos porque el módulo es de magnitud exponencial).
Jeffrey Bosboom