Aqui eu mostro que o problema é NP-completo.
Convertemos um CNF em uma instância do seu problema da seguinte maneira. Suponha que as variáveis do CNF sejam x i 's e as cláusulas sejam m C j ' s, onde n < m . Vamos U = ∪ i ( A i ∪ B i ∪ Z i ) onde todos os conjuntos na união são completamente disjuntos. De fato, A i = { a i , j ∣ x i ∈ C j } ∪ { a in xim Cjn<mU=∪i(Ai∪Bi∪Zi)e B i ={ b i , j | x i ∈ C j }∪{ b i , 0 }, enquanto Z i é qualquer conjunto de cardinalidadek=2n+1. Além disso significamZ= ∪ i Z i e correcção para cada Z i uma família crescente de comprimentokdentro dela, indicado por Z i ,Ai={ai,j∣xi∈Cj}∪{ai,0}Bi={bi,j∣xi∈Cj}∪{bi,0}Zik=2n+1Z=∪iZiZik paral=1 ..k. Para todas as variáveis x i , adicionamos2kconjuntos para F , cada conjunto da forma A i ∪ Z i , l e B i ∪ Z i , l . Para cada cláusula C j , podemos adicionar um conjunto de M , que contémZ, e para todos os x i ∈ C j elemento{ um i , j }Zi,ll=1..kxi2kFAi∪Zi,lBi∪Zi,lCjFZxi∈Cj{ai,j}e para cada elemento { b i , j } .x¯i∈Cj{bi,j}
Suponha que a fórmula seja satisfatória e fixe uma tarefa satisfatória. Em seguida, escolher os conjuntos da forma A i ∪ Z i , l ou B i ∪ Z i , l , dependendo se x i é verdadeira ou não. Esses são n k conjuntos incrementais. Agora adicione os conjuntos m correspondentes às cláusulas. Eles também aumentam o tamanho, pois as cláusulas são satisfatórias. Finalmente, podemos até mesmo adicionar k mais conjuntos (um para cada variável) para fazer o cover sequence U .kAi∪Zi,lBi∪Zi,lxinkmkU
Agora, suponha que conjuntos sejam colocados em uma sequência incremental. Observe que no máximo k + 1 conjuntos correspondentes a x i podem ser selecionados para cada x i . Portanto, se não houver conjuntos de cláusulas na sequência incremental, no máximo n ( k + 1 ) poderá ser selecionado, o que é muito pouco. Observe que, assim que um conjunto de cláusulas é selecionado, podemos escolher no máximo dois conjuntos correspondentes a cada x i , um total de no máximo 2 n conjuntos. Portanto, temos que escolher pelo menosn(k+1)+mk+1xixin(k+1)xi2nconjuntos de variáveis n ( k - 1 ) antes que qualquer conjunto de cláusulas seja selecionado. Mas como podemos escolher no máximo k + 1 para cada x i , isso significa que, para cada um, escolhemos pelo menos 1 , como k = 2 n + 1 . Isso determina o "valor" da variável, portanto, podemos escolher apenas cláusulas "verdadeiras".n(k−1)k+1xi1k=2n+1
Atualização: valor alterado de de n para 2 n + 1, conforme apontado por Marzio.kn2n+1