Tutaj celem jest zredukowanie arbitralnego problemu SAT do 3-SAT w czasie wielomianowym przy użyciu jak najmniejszej liczby klauzul i zmiennych. Moje pytanie jest motywowane ciekawością. Mniej formalnie chciałbym wiedzieć: „Jaka jest„ najbardziej naturalna ”redukcja z SAT na 3-SAT?”
Teraz zmniejszenie, które zawsze widziałem w podręcznikach, wygląda mniej więcej tak:
Najpierw weź przykład SAT i zastosuj twierdzenie Cooka-Levina, aby zredukować je do obwodu SAT.
Następnie kończysz zadanie standardową redukcją obwodu SAT do 3-SAT, zastępując bramki klauzulami.
Podczas gdy to działa, wynikowe klauzule 3-SAT wyglądają prawie tak samo jak klauzule SAT, z którymi zacząłeś, ze względu na początkowe zastosowanie twierdzenia Cooka-Levina.
Czy ktoś może zobaczyć, jak zrobić redukcję bardziej bezpośrednio, pomijając etap obwodu pośredniego i przechodząc bezpośrednio do 3-SAT? Byłbym nawet szczęśliwy z bezpośredniej redukcji w specjalnym przypadku n-SAT.
(Sądzę, że istnieją pewne kompromisy między czasem obliczeń a wielkością wyjściową. Oczywiście zdegenerowane - choć na szczęście niedopuszczalne, chyba że P = NP - rozwiązaniem byłoby po prostu rozwiązanie problemu SAT, a następnie wyemitowanie trywialnych 3 -Sat wystąpienie ...)
EDYCJA: Na podstawie odpowiedzi Ratcheta jest teraz jasne, że redukcja do n-SAT jest dość trywialna (i że naprawdę powinienem był to przemyśleć nieco bardziej ostrożnie przed opublikowaniem). Pozostawiam to pytanie na chwilę na wypadek, gdyby ktoś znał odpowiedź na bardziej ogólną sytuację, w przeciwnym razie po prostu zaakceptuję odpowiedź zapadkową.
źródło
Odpowiedzi:
Każda klauzula SAT ma 1, 2, 3 lub więcej zmiennych. Klauzulę 3 zmiennych można skopiować bez problemu
W 1 i 2 zmienne klauzule
{a1}
i{a1,a2}
może być rozszerzony{a1,a1,a1}
i{a1,a2,a1}
odpowiednio.Klauzula o więcej niż 3 zmiennych
{a1,a2,a3,a4,a5}
może być rozszerzona do{a1,a2,s1}{!s1,a3,s2}{!s2,a4,a5}
zs1
orazs2
nowe zmienne, których wartość zależy od rodzaju zmienna w oryginalnej klauzuli jest prawdąźródło
Prawdopodobnie jest to poza zakresem pytania, ale i tak chciałem to opublikować. Przy użyciu technik ze sparametryzowanej złożoności udowodniono, że przy założeniu, że hierarchia wielomianowa nie zawali się do swojego trzeciego poziomu, nie ma algorytmu wielomianowego, który bierze instancję CNF-SAT na n zmiennych o nieograniczonej długości klauzuli i wysyła wystąpienie k-CNF-SAT (brak klauzul długości większych niż k) na zmiennych gdzie n ' jest wielomianem wn′ n
źródło
Jeśli potrzebujesz redukcji z k-SAT na 3-SAT, to odpowiedź zapadki działa dobrze.
Jeśli chcesz bezpośredniej redukcji z ogólnej formuły zdań do CNF (i do 3-SAT), to - przynajmniej z „perspektywy solverów SAT” - myślę, że odpowiedź na twoje pytanie Czym jest „najbardziej naturalna” redukcja ... ? , jest: Nie ma „naturalnej” redukcji !
Z wniosków rozdziału 2 - „Kodowanie CNF” (bardzo dobrej) książki: Handbook of Satisfiable :
...
Zazwyczaj istnieje wiele sposobów modelowania danego problemu w CNF, a niewiele jest znanych wytycznych dotyczących wyboru spośród nich. Często istnieje wybór funkcji problemowych, które można modelować jako zmienne, a niektóre z nich mogą wymagać zastanowienia. Kodowania tseityny są kompaktowe i można je mechanizować, ale w praktyce nie zawsze prowadzą do najlepszego modelu, a niektóre podformulacje można lepiej rozszerzyć. Niektóre klauzule mogą zostać pominięte ze względu na polaryzację, a sugerowane mogą być klauzule łamania symetrii lub blokowane. Różne kodowania mogą mieć różne zalety i wady, takie jak rozmiar lub gęstość rozwiązania, a zaletą jednego solwera SAT może być wada innej. Krótko mówiąc, modelowanie CNF jest sztuką i często musimy postępować intuicyjnie i eksperymentować.
...
Najbardziej znanym algorytmem jest Tseitin (G. Tseitin. O złożoności wyprowadzania w rachunku zdań. Automatyzacja rozumowania: dokumenty klasyczne w logice obliczeniowej, 2: 466–483, 1983. Springer-Verlag.)
Aby uzyskać dobre wprowadzenie do kodowania CNF, przeczytaj sugerowaną książkę Handbook o Satisfiable . Możesz także przeczytać najnowsze prace i przejrzeć odniesienia; na przykład:
źródło
Pozwól, że opublikuję inne rozwiązanie podobne do Ratchel, ale nieco inne. Zostało to zaczerpnięte bezpośrednio z rozdziału 9 2. wydania „Podręcznika projektowania algorytmów” Stevena Skieny
źródło