Tutaj pokazuję, że problem jest NP-zupełny.
Konwertujemy CNF na wystąpienie problemu w następujący sposób. Załóżmy, że zmiennymi CNF są , a zdania są , gdzie . Niech gdzie wszystkie zestawy w unii są całkowicie rozłączne. W rzeczywistości i , podczas gdy to dowolny zestaw liczności . także i napraw dla każdej rosnącą w środku rodzinę długości , oznaczoną przez dlax 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}Bi={bi,j∣xi∈Cj}∪{bi,0} 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 { a i , j } ˉ xZik=2n+1Z=∪iZiZikZi,ll=1..k . Dla każdej zmiennej dodajemy zestawów do , każdy zestaw postaci i . Dla każdej klauzuli dodajemy jeden zestaw do , który zawiera , i dla każdego elemencie i dla każdego elemencie .xi2kFAi∪Zi,lBi∪Zi,lCjFZxi∈Cj{ai,j} { b i , j }x¯i∈Cj{bi,j}
Załóżmy, że formuła jest zadowalająca, i napraw zadowalające zadanie. Następnie wybierz zestawy postaci lub , w zależności od tego, czy jest prawdziwe, czy nie. Są to zestawy przyrostowe . Teraz dodaj zestawy odpowiadające klauzulom. Te również zwiększają rozmiar, ponieważ klauzule są zadowalające. Wreszcie, możemy nawet dodać więcej zestawów (po jednym dla każdej zmiennej), aby pokrywę sekwencji .A i ∪ Z i , l B i ∪ Z i , l x i n k m k UkAi∪Zi,lBi∪Zi,lxinkmkU
Załóżmy teraz, że zestawy są umieszczone w sekwencji przyrostowej. Należy zauważyć, że co najwyżej zestawy odpowiadające mogą być wybrane dla każdego . Zatem, jeśli nie ma zestawów klauzul w sekwencji przyrostowej, można wybrać najwyżej , co jest za mało. Zauważ, że jak tylko zestaw klauzul zostanie wybrany, możemy wybrać maksymalnie dwa zestawy odpowiadające każdemu , łącznie maksymalnie zestawów. Dlatego musimy wybrać co najmniej zestawów zmiennych, zanim zostanie wybrany dowolny zestaw klauzul. Ale ponieważ możemy wybrać najwyżej dla każdego , oznacza to, że dla każdego wybraliśmy przynajmniejk + 1 2 n n ( k - 1 ) k + 1 x i 1 k = 2 n + 1n(k+1)+mk+1x i n ( k + 1 ) x ixixin(k+1)xi2nn(k−1)k+1xi1 , jako . To określa „wartość” zmiennej, dlatego możemy wybierać tylko „prawdziwe” zdania.k=2n+1
Aktualizacja: Zmieniono wartość z na jak zauważył Marzio.n 2 n + 1kn2n+1