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 xim Cjn<mU=∪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}Zik=2n+1Z=∪iZiZikZi,ll=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 .xi2kFAi∪Zi,lBi∪Zi,lCjFZxi∈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 UkAi∪Zi,lBi∪Zi,lxinkmkU
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)+mk+1xixin(k+1)xi2nn(k−1)k+1xi1 , 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 + 1kn2n+1