Qui mostro che il problema è NP-completo.
Convertiamo un CNF in un'istanza del tuo problema come segue. Supponiamo che le variabili del CNF siano e che le clausole siano , dove . Lascia cui tutti i set nell'unione sono completamente disgiunti. In effetti, e , mentre è un insieme di cardinalità . anche e fissa per ogni una famiglia crescente di lunghezza al suo interno, indicata da pern xim Cjn<mU=∪i(Ai∪Bi∪Zi)Ai={ai,j∣xi∈Cj}∪{ai,0}Bi={bi,j∣xi∈Cj}∪{bi,0}Zik=2n+1Z=∪iZiZikZi,ll=1..k . Per ogni variabile , aggiungiamo set a , ogni set del modulo e . Per ogni clausola , aggiungiamo un set a , che contiene , e per ogni elemento e per ogni elemento .xi2kFAi∪Zi,lBi∪Zi,lCjFZxi∈Cj{ai,j}x¯i∈Cj{bi,j}
Supponiamo che la formula sia soddisfacente e fissi un compito soddisfacente. Quindi scegli i set di del modulo o , a seconda che sia vero o meno. Questi sono set incrementali. Ora aggiungi i set corrispondenti alle clausole. Anche questi continuano ad aumentare le dimensioni, in quanto le clausole sono soddisfacenti. Infine, si può anche aggiungere più insiemi (uno per ogni variabile) per fare la copertina sequenza .kAi∪Zi,lBi∪Zi,lxinkmkU
Supponiamo ora che set siano inseriti in una sequenza incrementale. Si noti che è possibile selezionare al massimo set corrispondenti a per ogni . Pertanto, se non ci sono insiemi di clausole nella sequenza incrementale, è possibile selezionare al massimo , che è troppo pochi. Si noti che non appena viene selezionato un set di clausole, possiamo scegliere al massimo due set corrispondenti a ciascun , per un totale di massimo set. Pertanto, dobbiamo selezionare almeno set di variabili prima di scegliere qualsiasi set di clausole. Ma poiché possiamo scegliere al massimo per ogni , ciò significa che per ciascuno di essi abbiamo scelto almenon(k+1)+mk+1xixin(k+1)xi2nn(k−1)k+1xi1 , come . Questo determina il "valore" della variabile, quindi possiamo scegliere solo clausole "vere".k=2n+1
Aggiornamento: modificato il valore di da a come sottolineato da Marzio.kn2n+1