El empaquetado de conjuntos es un problema NP-completo clásico en teoría de la complejidad computacional y combinatoria , y fue uno de los 21 problemas NP-completos de Karp . Supongamos que uno tiene un conjunto finito S y una lista de subconjuntos de S. Luego, el problema de empaquetado de conjuntos pregunta si algunos k subconjuntos de la lista son disjuntos por pares (en otras palabras, no hay dos que compartan un elemento).
Más formalmente, dado un universo y una familia de subconjuntos de , un empaquetamiento es una subfamilia de conjuntos tal que todos los conjuntos son disjuntos por pares. El tamaño del embalaje es . En el problema de decisión de empaquetamiento de conjuntos , la entrada es un par y un número entero ; La pregunta es si hay un paquete de tamaño determinado o más. En el problema de optimización del empaquetado de conjuntos , la entrada es un par y la tarea es encontrar un empaquetado de conjuntos que utilice la mayor cantidad de conjuntos.
El problema está claramente en NP ya que, dados subconjuntos, podemos verificar fácilmente que son disjuntos por pares en tiempo polinomial .
La versión de optimización del problema, embalaje máximo de conjuntos , solicita el número máximo de conjuntos disjuntos por pares en la lista. Es un problema de maximización que puede formularse naturalmente como un programa lineal entero , perteneciente a la clase de problemas de empaquetamiento .
El problema de empaquetado de conjuntos máximos se puede formular como el siguiente programa lineal entero .
El problema de empaquetado de conjuntos no solo es NP-completo, sino que se ha demostrado que su versión de optimización (problema general de empaquetado de conjuntos máximos) es tan difícil de aproximar como el problema de camarilla máxima ; en particular, no se puede aproximar dentro de ningún factor constante. [1] El algoritmo más conocido lo aproxima dentro de un factor de . [2] La variante ponderada también se puede aproximar. [3]
El problema tiene una variante que es más manejable. Dado cualquier entero positivo k ≥3, el problema de empaquetado de conjuntos k es una variante del empaquetado de conjuntos en el que cada conjunto contiene como máximo k elementos.
Cuando k =1, el problema es trivial. Cuando k = 2, el problema equivale a encontrar una coincidencia de cardinalidad máxima , que puede resolverse en tiempo polinómico.
Para cualquier k ≥3, el problema es NP-difícil, ya que es más general que la coincidencia tridimensional . Sin embargo, existen algoritmos de aproximación de factor constante :
En otra variante más manejable, si ningún elemento aparece en más de d de los subconjuntos, la respuesta se puede aproximar dentro de un factor de d . Esto también es válido para la versión ponderada.
La coincidencia de hipergrafos es equivalente al empaquetado de conjuntos: los conjuntos corresponden a los hiperbordes.
El problema de conjuntos independientes también es equivalente al empaquetado de conjuntos: existe una reducción de tiempo polinomial uno a uno entre ellos:
Esta también es una reducción bidireccional de PTAS y muestra que los dos problemas son igualmente difíciles de aproximar.
En el caso especial en el que cada conjunto contiene como máximo k elementos (el problema de empaquetamiento del conjunto k ), el gráfico de intersección es ( k +1)-libre de garras . Esto se debe a que, si un conjunto intersecta algunos k +1 conjuntos, entonces al menos dos de estos conjuntos se cruzan, por lo que no puede haber una garra ( k +1). Por lo tanto, el conjunto máximo independiente en gráficos sin garras [6] puede verse como una generalización del embalaje máximo de k -Set.
La coincidencia de gráficos es un caso especial de empaquetado de conjuntos en el que el tamaño de todos los conjuntos es 2 (los conjuntos corresponden a los bordes). En este caso especial, se puede encontrar una coincidencia de tamaño máximo en tiempo polinomial.
La combinación tridimensional es un caso especial en el que el tamaño de todos los conjuntos es 3 y, además, los elementos se dividen en 3 colores y cada conjunto contiene exactamente un elemento de cada color. Este caso especial sigue siendo NP-duro, aunque tiene mejores algoritmos de aproximación de factor constante que el caso general.
En el problema de cobertura de conjuntos , se nos da una familia de subconjuntos de un universo , y el objetivo es determinar si podemos elegir t conjuntos que juntos contengan todos los elementos de . Estos conjuntos pueden superponerse. La versión de optimización encuentra el número mínimo de dichos conjuntos. No es necesario que el embalaje máximo del conjunto cubra todos los elementos posibles.
En el problema de cobertura exacta , cada elemento de debe estar contenido exactamente en uno de los subconjuntos. Encontrar una cobertura tan exacta es un problema NP-completo , incluso en el caso especial en el que el tamaño de todos los conjuntos es 3 (este caso especial se llama cobertura 3 exacta o X3C ). Sin embargo, si creamos un conjunto singleton para cada elemento de S y los agregamos a la lista, el problema resultante es tan fácil como empaquetar conjuntos.
Karp originalmente mostró el empaquetado del conjunto NP-completo mediante una reducción del problema de la camarilla .