La entrada es un universo y una familia de subconjuntos de , por ejemplo, . Suponemos que los subconjuntos de pueden cubrir , es decir, .U F ⊆ 2 U F U ⋃ E ∈ F E = U
Una secuencia de cobertura incremental es una secuencia de subconjuntos en , digamos, , que satisfaceA = { E 1 , E 2 , … , E | A | }
1) ,
2) cada recién llegado tiene una nueva contribución, es decir, , ;
El problema es encontrar una secuencia de cobertura incremental de longitud máxima (es decir, con máximo ). Tenga en cuenta que una secuencia de longitud máxima debe llegar a cubrir , es decir, .
He intentado encontrar un algoritmo o un algoritmo aproximado para encontrar la secuencia de cobertura incremental más larga. Me preguntaba cómo se conoce esta variante del problema de cobertura de conjunto. ¡Gracias!
fuente
Respuestas:
Aquí muestro que el problema es NP-completo.
Convertimos un CNF a una instancia de su problema de la siguiente manera. Suponga que las variables de la CNF son 's y las cláusulas son ' s, donde . Deje donde todos los conjuntos en la unión son completamente disjuntos. De hecho, y , mientras que es cualquier conjunto de cardinalidad . también y arregle para cada una familia creciente de longitud en su interior, denotada por parax i m C j n < m U = ∪ i ( A i ∪ B i ∪ Z i ) A i = { a i , j ∣ x i ∈ C j } ∪ { a i , 0 } B i = { b i , j ∣ x i ∈ C j } ∪n xi m Cj n<m U=∪i(Ai∪Bi∪Zi) Ai={ai,j∣xi∈Cj}∪{ai,0} Z i k = 2 n + 1 Z = ∪ i Z i Z i k Z i , l l = 1 .. k x i 2 k F A i ∪ Z i , l B i ∪ Z i , l C j F Z x i ∈ C j { aBi={bi,j∣xi∈Cj}∪{bi,0} Zi k=2n+1 Z=∪iZi Zi k Zi,l l=1..k . Para cada variable , agregamos conjuntos a , cada conjunto de la forma y . Para cada cláusula , agregamos un conjunto a , que contiene , y para cada elemento y para cada elemento .xi 2k F Ai∪Zi,l Bi∪Zi,l Cj F Z xi∈Cj ˉ x i ∈ C j { b i , j }{ai,j} x¯i∈Cj {bi,j}
Suponga que la fórmula es satisfactoria y arregle una tarea satisfactoria. Luego, elija los conjuntos de de la forma o , dependiendo de si es verdadero o no. Estos son conjuntos incrementales. Ahora agregue los conjuntos correspondientes a las cláusulas. Estos también siguen aumentando el tamaño, ya que las cláusulas son satisfactorias. Finalmente, se puede incluso añadir conjuntos más (uno para cada variable) para hacer la cubierta de la secuencia .A i ∪ Z i , l B i ∪ Z i , l x i n k m k Uk Ai∪Zi,l Bi∪Zi,l xi nk m k U
Ahora suponga que los conjuntos se colocan en una secuencia incremental. Observe que, como máximo, se pueden seleccionar conjuntos correspondientes a para cada . Por lo tanto, si no hay conjuntos de cláusulas en la secuencia incremental, como máximo se puede seleccionar , que es muy poco. Tenga en cuenta que tan pronto como un conjunto cláusula se selecciona, se puede elegir un máximo de dos conjuntos correspondientes a cada , un total de a lo sumo conjuntos. Por lo tanto, tenemos que elegir al menos conjuntos de variables antes de elegir cualquier conjunto de cláusulas. Pero como podemos elegir como máximo para cada , esto significa que para cada uno hemos elegido al menosk + 1 x i x i n ( k + 1 ) x i 2 n n ( k - 1 ) k + 1 x i 1 k = 2 n + 1n(k+1)+m k+1 xi xi n(k+1) xi 2n n(k−1) k+1 xi 1 , como . Esto determina el "valor" de la variable, por lo que solo podemos elegir cláusulas "verdaderas".k=2n+1
Actualización: Se modificó el valor de de a como lo señaló Marzio.n 2 n + 1k n 2n+1
fuente
Este es un problema de empaquetado de conjuntos bajo la restricción de que para la solución , para cualquier subconjunto , tenemos que siempre hay un elemento en , que se cubre exactamente una vez.B ⊆ A ⋃ X ∈ B XA B⊆A ⋃X∈BX
Prueba: dada una solución a su problema, inmediatamente tiene esta propiedad. De hecho, si es la solución óptima para su problema, considere un subconjunto de estos conjuntos y suponga que es el último conjunto de esta secuencia que aparece en . Por la propiedad requerida de que la solución es incremental, se deduce que cubre un elemento que ningún conjunto anterior cubre, lo que implica la propiedad anterior.B E i B E iE1,…,Em B Ei B Ei
En cuanto a la otra dirección, también es fácil. Comience desde la solución , encuentre el elemento que está cubierto exactamente una vez, configúrelo como el último conjunto de la secuencia, elimine este conjunto y repita. QEDA
Este es un problema bastante natural ...
Recordatorio rápido: en el problema de empaquetado de conjuntos, dada una familia de conjuntos, encuentre el subconjunto máximo de conjuntos que cumpla con alguna restricción adicional (por ejemplo, ningún elemento está cubierto más de 10 veces, etc.).
fuente