fbpx
Wikipedia

Set packing

Empaquetamiento de conjuntos es un problema clásico NP-completo en Teoría de la complejidad computacional y combinatoria, y fue uno de los 21 problemas de planteados por Karp.

Supongamos que tenemos un conjunto finito S y una lista de subconjuntos de S. Entonces, el problema de empaquetamiento de conjuntos pregunta si algunos de los k subconjuntos en la lista son conjuntos disjuntos (en otras palabras, ninguno de ellos tiene un elemento en común).

Más formalmente, dado un universo y una familia de subconjuntos de , un empaquetamiento es una subfamilia de conjuntos tal que todos los conjuntos en son disjuntos 2 a 2, y el tamaño del empaquetamiento es . En el problema de decisión de empaquetemiento de conjuntos, la entrada es un par y un entero ; la pregunta es si existe un empaquetamiento de conjuntos de tamaño mayor o igual que . En el empaquetamiento de conjuntos problema de optimización, la entrada es un par , y la tarea es encontrar un empaquetamiento de conjuntos que use la mayor cantidad de conjuntos.

El problema es claramente un problema NP debido a que, dadok subconjuntos, podemos fácilmente verificar que ellos son disjuntos 2 a 2 en tiempo polinomial.

La versión del problema como problema de optimización, máximo empaquetamiento de conjuntos, pregunta por el máximo número de conjuntos disjuntos 2 a 2 en la lista. Es un problema de maximización que puede ser formulado naturalmente como un problema de programación lineal,perteneciendo a la clase de los problemas de empaquetamiento, y su problema dual linear es el problema de cubrimiento de conjuntos.[1]

Formulación del programa de programación lineal en enteros

El problema de empaquetamiento máximo de conjuntos puede ser formulado como sigue integer linear program.

maximizar   (maximizar el número total de subconjuntos)
sujeto a   para todo   (seleccionar los conjuntos que tienen que se disjuntos 2 a 2)
  para todo  . (todo conjunto está o no en el empaquetamiento)

Ejemplos

Como un ejemplo simple, supongamos que en su cocina tiene una colección de distintos ingredienes para cocinar( ), y usted tiene un recetario con distintas recetas(  ). Cada receta necesita un subconjunto de ingredientes. Usted quiere preparar el conjunto más grande de recetas que aparecen en el recetario y que necesitan de los ingredientes de los que dispone. Usted está en resumen buscando un empaquetamiento de conjuntos ( ) en( ) - una colección de recetas cuyo conjunto de ingredientes son distintos 2 a 2.

Como otro ejemplo, supongamos que usted está en una convensión de embajadores foráneos, cada uno de los cuales habla inglés y también otros idiomas. Usted quiere hacer un anuncio a un grupo de ellos, pero debido a que usted no confía en ellos, usted no quiere que ellos hablen entre ellos sin que usted los entienda. Para asegurar esto, usted necesitará escoger un grupo de embajadores tal que no haya 2 embajadores que hablen el mismo idioma, que no sea inglés. Por otra parte usted también quiere entregar su anuncio a tantos embajadores como sea posible. En este caso, los elementos del conjunto son idiomas distintos del inglés, y los subconjuntos son los conjuntos de idiomas hablados por un embajador en particular. Si 2 conjuntos son disjuntos, entonces los embajadores correspondientes no comparten idiomas que no sean el Inglés. Un empaquetamiento máximo escogerá el número más grande posible de embajadores bajo la restricción deseada. Aunque el problema es difícil de resolver en general, en este ejemplo una buena heurística es escoger a embajadores que solo hablen lenguajes no tan comunes primero,con el fin de que muchos otros no queden descalificados.

Versión utilizando pesos

Existe una versión con pesos del problema de empaquetamiento de conjuntos en la cual a cada subconjunto se le asocia un peso que es un número real y es este peso el que deseamos maximizar:  

En nuestro ejemplo simple arriba, nosotros desearíamos clasificar las recetas de cocina atendiendo al número de amigos al que le gustó el plato generado por la receta, con el fin de que nuestra comida satisfaga al mayor número de amigos.

Esto parece hacer que el problema sea difícil, pero la mayoría de los resultados que se aplican al problema sin tomar en cuenta los pesos se pueden aplicar al problema con pesos también.

Heurísticas

El problema de empaquetamiento de conjuntos puede resultar difícil para algún k, pero no es difícil encontrar un k para el cual el problema es fácil con una entrada en particular. Por ejemplo, podemos usar un algoritmo greedy donde busquemos el conjunto que se interseque con el menor número de conjuntos restantes, adiciónese este conjunto a nuestra solución, y quítense los conjuntos con los cuales comparte elementos. Continuaremos haciendo esto hasta que no quede ningún conjunto por revisar, y tengamos un empaquetamiento de conjuntos de algún tamaño, aunque esto no garantiza obtener un empaquetamiento de conjuntos máximo. Aunque ningún algoritmo puede siempre dar resultados cerca del máximo (ver la sección que sigue), para muchas entradas en la práctica el algoritmo funciona bien.

Complejidad

El conjunto de problemas de empaquetamiento no es solo NP-completo, sino que su versión como problema de optimización se ha demostrado que es tan difícil como aproximar el problema del clique máximo; en particular, no puede ser aproximado dentro de ningún factor constante.[2]​ El mejor algoritmo conocido hasta ahora lo aproxima en un factor de  .

Sin embargo, el problema tiene una variente la cual es mucho más tratable: if asumimos que ningún subconjunto tiene k≥3 elementos, La respuesta puede ser aproximada dentro de un factor de k/2 + ε for any ε > 0; en particular, el problema con conjuntos de tamaño 3 puede ser aproximado alrededor del 50%. En otra variante más tratable,si ningún elemento ocurre en más de k de los subconjuntos, la respuesta puede ser aproximada dentro de un factor de k. Esto se cumple también para la versión con pesos.

Problemas equivalentes

Existe una reducción uno a uno en tiempo polinomial entre el problema conjunto independiente y el problema de empaquetamiento de conjuntos:

  • Dado un problema de empaquetamiento de conjuntos sobre una colección  , crear un grafo donde para cada conjunto   hay un vértice  , y hay una arista entre   y   ssi  . Ahora todo conjunto independiente de vértices en el grafo generado corresponde a un empaquetamiento de conjuntos en  .
  • Dado un problema de independencia de conjuntos sobre un grafo  , crear una colección de conjuntos donde para cada vértice haya un conjunto conteniendo todas las aristas adyacentes a  . Ahora todo empaquetamiento de conjuntos en la colección generada corresponde a un vértice independiente en  .

Esta es una aplicación bidireccional, y muestra que los 2 problemas son igualmente difíciles de aproximar.

Casos especiales

Matching and 3-dimensional matching son casos especiales de problemas de empaquetamiento de vértices. Un emparejamiento máximo puede ser encontrado en tiempo polinomial, pero encontrar el emparejamiento 3-dimensional más grande o el conjunto independiente más grande es un problema NP-duro.

Otros problemas relacionados

El empaquetamiento de conjuntos es uno dentro de la familia de problemas relacionados con el cubrimiento o particionamiento de elementos de un conjunto. Un problema estrechamente relacionado es el problema decubrimiento de un conjunto. Aquí, también se nos da un conjunto S y una lista de conjuntos, pero el objetivo es determinar si podemos escoger k conjuntos que juntos contengan a cada elemento de S. Estos conjuntos pueden solaparse. La versión de optimización encuentra el mínimo número de tales conjuntos. El empaquetamiento máximo no necesita cubrir a cada elemento posible.

El problema NP-completo cubrimiento exacto, por otra parte, requiere que cada elemento este contenido en exactamente uno de los subconjuntos. Encontrar tal cubrimiento exacto, sin importar el tamaño, es un problemaNP-completo. Sin embargo, si creamos un conjunto singleton para cada elemento de S y los adicionamos a la lista, el problema resultante es tan fácil como el problema de empaquetamiento de conjuntos.

Karp originalmente mostró que el problema del empaquetamiento de conjuntos era NP-completo a través de una reducción basada en el problema del clique.

See also: Empaquetamiento en hipergrafos.

Notas

  1. Vazirani (2001)
  2. Hazan, Elad; Safra, Shmuel; Schwartz, Oded (2006), «On the complexity of approximating k-set packing», Computational Complexity 15 (1): 20-39, MR 2226068, doi:10.1007/s00037-006-0205-6 .. See in particular p. 21: "Maximum clique (and therefore also maximum independent set and maximum set packing) cannot be approximated to within   unless NP ⊂ ZPP."

Referencias

Enlaces externos

  • [1]: A Pascal program for solving the problem. From Discrete Optimization Algorithms with Pascal Programs by MacIej M. Syslo, ISBN 0-13-215509-5.
  • Benchmarks with Hidden Optimum Solutions for Set Covering, Set Packing and Winner Determination
  •   Datos: Q475603

packing, texto, sigue, traducción, defectuosa, quieres, colaborar, wikipedia, busca, artículo, original, mejora, esta, traducción, copia, pega, siguiente, código, página, discusión, autor, este, artículo, subst, aviso, traducido, empaquetamiento, conjuntos, pr. El texto que sigue es una traduccion defectuosa Si quieres colaborar con Wikipedia busca el articulo original y mejora esta traduccion Copia y pega el siguiente codigo en la pagina de discusion del autor de este articulo subst Aviso mal traducido Set packing Empaquetamiento de conjuntos es un problema clasico NP completo en Teoria de la complejidad computacional y combinatoria y fue uno de los 21 problemas de planteados por Karp Supongamos que tenemos un conjunto finito S y una lista de subconjuntos de S Entonces el problema de empaquetamiento de conjuntos pregunta si algunos de los k subconjuntos en la lista son conjuntos disjuntos en otras palabras ninguno de ellos tiene un elemento en comun Mas formalmente dado un universo U displaystyle mathcal U y una familia S displaystyle mathcal S de subconjuntos de U displaystyle mathcal U un empaquetamiento es una subfamilia C S displaystyle mathcal C subseteq mathcal S de conjuntos tal que todos los conjuntos en C displaystyle mathcal C son disjuntos 2 a 2 y el tamano del empaquetamiento es C displaystyle mathcal C En el problema de decision de empaquetemiento de conjuntos la entrada es un par U S displaystyle mathcal U mathcal S y un entero k displaystyle k la pregunta es si existe un empaquetamiento de conjuntos de tamano mayor o igual que k displaystyle k En el empaquetamiento de conjuntos problema de optimizacion la entrada es un par U S displaystyle mathcal U mathcal S y la tarea es encontrar un empaquetamiento de conjuntos que use la mayor cantidad de conjuntos El problema es claramente un problema NP debido a que dadok subconjuntos podemos facilmente verificar que ellos son disjuntos 2 a 2 en tiempo polinomial La version del problema como problema de optimizacion maximo empaquetamiento de conjuntos pregunta por el maximo numero de conjuntos disjuntos 2 a 2 en la lista Es un problema de maximizacion que puede ser formulado naturalmente como un problema de programacion lineal perteneciendo a la clase de los problemas de empaquetamiento y su problema dual linear es el problema de cubrimiento de conjuntos 1 Indice 1 Formulacion del programa de programacion lineal en enteros 2 Ejemplos 3 Version utilizando pesos 4 Heuristicas 5 Complejidad 6 Problemas equivalentes 7 Casos especiales 8 Otros problemas relacionados 9 Notas 10 Referencias 11 Enlaces externosFormulacion del programa de programacion lineal en enteros EditarEl problema de empaquetamiento maximo de conjuntos puede ser formulado como sigue integer linear program maximizar S S x S displaystyle sum S in mathcal S x S maximizar el numero total de subconjuntos sujeto a S e S x S 1 displaystyle sum S colon e in S x S leqslant 1 para todo e U displaystyle e in mathcal U seleccionar los conjuntos que tienen que se disjuntos 2 a 2 x S 0 1 displaystyle x S in 0 1 para todo S S displaystyle S in mathcal S todo conjunto esta o no en el empaquetamiento Ejemplos EditarComo un ejemplo simple supongamos que en su cocina tiene una coleccion de distintos ingredienes para cocinar U displaystyle mathcal U y usted tiene un recetario con distintas recetas S displaystyle mathcal S Cada receta necesita un subconjunto de ingredientes Usted quiere preparar el conjunto mas grande de recetas que aparecen en el recetario y que necesitan de los ingredientes de los que dispone Usted esta en resumen buscando un empaquetamiento de conjuntos C displaystyle mathcal C en U S displaystyle mathcal U mathcal S una coleccion de recetas cuyo conjunto de ingredientes son distintos 2 a 2 Como otro ejemplo supongamos que usted esta en una convension de embajadores foraneos cada uno de los cuales habla ingles y tambien otros idiomas Usted quiere hacer un anuncio a un grupo de ellos pero debido a que usted no confia en ellos usted no quiere que ellos hablen entre ellos sin que usted los entienda Para asegurar esto usted necesitara escoger un grupo de embajadores tal que no haya 2 embajadores que hablen el mismo idioma que no sea ingles Por otra parte usted tambien quiere entregar su anuncio a tantos embajadores como sea posible En este caso los elementos del conjunto son idiomas distintos del ingles y los subconjuntos son los conjuntos de idiomas hablados por un embajador en particular Si 2 conjuntos son disjuntos entonces los embajadores correspondientes no comparten idiomas que no sean el Ingles Un empaquetamiento maximo escogera el numero mas grande posible de embajadores bajo la restriccion deseada Aunque el problema es dificil de resolver en general en este ejemplo una buena heuristica es escoger a embajadores que solo hablen lenguajes no tan comunes primero con el fin de que muchos otros no queden descalificados Version utilizando pesos EditarExiste una version con pesos del problema de empaquetamiento de conjuntos en la cual a cada subconjunto se le asocia un peso que es un numero real y es este peso el que deseamos maximizar S S w S x S displaystyle sum S in mathcal S w S cdot x S En nuestro ejemplo simple arriba nosotros deseariamos clasificar las recetas de cocina atendiendo al numero de amigos al que le gusto el plato generado por la receta con el fin de que nuestra comida satisfaga al mayor numero de amigos Esto parece hacer que el problema sea dificil pero la mayoria de los resultados que se aplican al problema sin tomar en cuenta los pesos se pueden aplicar al problema con pesos tambien Heuristicas EditarEl problema de empaquetamiento de conjuntos puede resultar dificil para algun k pero no es dificil encontrar un k para el cual el problema es facil con una entrada en particular Por ejemplo podemos usar un algoritmo greedy donde busquemos el conjunto que se interseque con el menor numero de conjuntos restantes adicionese este conjunto a nuestra solucion y quitense los conjuntos con los cuales comparte elementos Continuaremos haciendo esto hasta que no quede ningun conjunto por revisar y tengamos un empaquetamiento de conjuntos de algun tamano aunque esto no garantiza obtener un empaquetamiento de conjuntos maximo Aunque ningun algoritmo puede siempre dar resultados cerca del maximo ver la seccion que sigue para muchas entradas en la practica el algoritmo funciona bien Complejidad EditarEl conjunto de problemas de empaquetamiento no es solo NP completo sino que su version como problema de optimizacion se ha demostrado que es tan dificil como aproximar el problema del clique maximo en particular no puede ser aproximado dentro de ningun factor constante 2 El mejor algoritmo conocido hasta ahora lo aproxima en un factor de O U displaystyle O sqrt U Sin embargo el problema tiene una variente la cual es mucho mas tratable if asumimos que ningun subconjunto tiene k 3 elementos La respuesta puede ser aproximada dentro de un factor de k 2 e for any e gt 0 en particular el problema con conjuntos de tamano 3 puede ser aproximado alrededor del 50 En otra variante mas tratable si ningun elemento ocurre en mas de k de los subconjuntos la respuesta puede ser aproximada dentro de un factor de k Esto se cumple tambien para la version con pesos Problemas equivalentes EditarExiste una reduccion uno a uno en tiempo polinomial entre el problema conjunto independiente y el problema de empaquetamiento de conjuntos Dado un problema de empaquetamiento de conjuntos sobre una coleccion S displaystyle mathcal S crear un grafo donde para cada conjunto S S displaystyle S in mathcal S hay un vertice v S displaystyle v S y hay una arista entre v S displaystyle v S y v T displaystyle v T ssi S T ϕ displaystyle S cap T neq phi Ahora todo conjunto independiente de vertices en el grafo generado corresponde a un empaquetamiento de conjuntos en S displaystyle mathcal S Dado un problema de independencia de conjuntos sobre un grafo G V E displaystyle G V E crear una coleccion de conjuntos donde para cada vertice haya un conjunto conteniendo todas las aristas adyacentes a v displaystyle v Ahora todo empaquetamiento de conjuntos en la coleccion generada corresponde a un vertice independiente en G V E displaystyle G V E Esta es una aplicacion bidireccional y muestra que los 2 problemas son igualmente dificiles de aproximar Casos especiales EditarMatching and 3 dimensional matching son casos especiales de problemas de empaquetamiento de vertices Un emparejamiento maximo puede ser encontrado en tiempo polinomial pero encontrar el emparejamiento 3 dimensional mas grande o el conjunto independiente mas grande es un problema NP duro Otros problemas relacionados EditarEl empaquetamiento de conjuntos es uno dentro de la familia de problemas relacionados con el cubrimiento o particionamiento de elementos de un conjunto Un problema estrechamente relacionado es el problema decubrimiento de un conjunto Aqui tambien se nos da un conjunto S y una lista de conjuntos pero el objetivo es determinar si podemos escoger k conjuntos que juntos contengan a cada elemento de S Estos conjuntos pueden solaparse La version de optimizacion encuentra el minimo numero de tales conjuntos El empaquetamiento maximo no necesita cubrir a cada elemento posible El problema NP completo cubrimiento exacto por otra parte requiere que cada elemento este contenido en exactamente uno de los subconjuntos Encontrar tal cubrimiento exacto sin importar el tamano es un problemaNP completo Sin embargo si creamos un conjunto singleton para cada elemento de S y los adicionamos a la lista el problema resultante es tan facil como el problema de empaquetamiento de conjuntos Karp originalmente mostro que el problema del empaquetamiento de conjuntos era NP completo a traves de una reduccion basada en el problema del clique See also Empaquetamiento en hipergrafos Notas Editar Vazirani 2001 Hazan Elad Safra Shmuel Schwartz Oded 2006 On the complexity of approximating k set packing Computational Complexity 15 1 20 39 MR 2226068 doi 10 1007 s00037 006 0205 6 See in particular p 21 Maximum clique and therefore also maximum independent set and maximum set packing cannot be approximated to within O n 1 ϵ displaystyle O n 1 epsilon unless NP ZPP Referencias EditarMaximum Set Packing Viggo Kann set packing Dictionary of Algorithms and Data Structures editor Paul E Black National Institute of Standards and Technology Note that the definition here is somewhat different Steven S Skiena Set Packing The Algorithm Design Manual Last modified June 2 1997 Pierluigi Crescenzi Viggo Kann Magnus Halldorsson Marek Karpinski and Gerhard Woeginger Maximum Set Packing A compendium of NP optimization problems Last modified March 20 2000 Michael R Garey and David S Johnson 1979 Computers and Intractability A Guide to the Theory of NP Completeness W H Freeman ISBN 0 7167 1045 5 A3 1 SP3 pg 221 Vazirani Vijay V 2001 Approximation Algorithms Springer Verlag ISBN 3 540 65367 8 Enlaces externos Editar 1 A Pascal program for solving the problem From Discrete Optimization Algorithms with Pascal Programs by MacIej M Syslo ISBN 0 13 215509 5 Benchmarks with Hidden Optimum Solutions for Set Covering Set Packing and Winner Determination Solving packaging problem in PHP Datos Q475603 Obtenido de https es wikipedia org w index php title Set packing amp oldid 120142485, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos