Liczenie w ogólnym przypadku
Problem, który Cię interesuje, znany jest jako #SAT lub liczenie modeli. W pewnym sensie jest to klasyczny problem # P-zupełny. Liczenie modeli jest trudne, nawet dla SAT! Nic dziwnego, że dokładne metody mogą obsługiwać tylko instancje z około setkami zmiennych. Istnieją również przybliżone metody, które mogą być w stanie obsłużyć instancje z około 1000 zmiennych.2)
Dokładne metody liczenia często opierają się na wyczerpującym wyszukiwaniu w stylu DPLL lub kompilacji wiedzy. Metody przybliżone są zwykle klasyfikowane jako metody, które dają szybkie oszacowania bez żadnych gwarancji i metody, które zapewniają dolne lub górne granice z gwarancją poprawności. Istnieją również inne metody, które mogą nie pasować do kategorii, takie jak wykrywanie tylnych drzwi lub metody, które domagają się pewnych właściwości strukturalnych, które mają zachować formuły (lub ich wykres ograniczeń).
Istnieją praktyczne wdrożenia. Niektóre dokładne liczniki modeli to CDP, Relsat, Cachet, sharpSAT i c2d. Rodzaje głównych technik używanych przez dokładne solwery to częściowe zliczanie, analiza składników (wykresu niewystarczającego ograniczenia), buforowanie formuł i składników oraz inteligentne wnioskowanie w każdym węźle. Inna metoda oparta na kompilacji wiedzy przekształca wejściową formułę CNF w inną formę logiczną. Z tej formy można łatwo wydedukować liczbę modeli (czas wielomianowy w wielkości nowo wytworzonej formuły). Na przykład można przekonwertować formułę na binarny diagram decyzyjny (BDD). Następnie można przejść BDD z liścia „1” z powrotem do korzenia. Lub w innym przykładzie, c2d wykorzystuje kompilator, który przekształca formuły CNF w deterministyczną rozkładalną negację normalną formę (d-DNNF).
ϕϕ
Gogate i Dechter [3] używają techniki liczenia modeli znanej jako SampleMinisat. Opiera się na próbkowaniu z wolnej od wstecznej przestrzeni wyszukiwania formuły boolowskiej. Technika ta opiera się na zasadzie ważnego ponownego próbkowania, wykorzystując solwery SAT oparte na DPLL do budowy przestrzeni wyszukiwania wolnej od powrotów. Można to zrobić całkowicie lub w przybliżeniu. Możliwe jest również pobieranie próbek do oszacowań z gwarancjami. Opierając się na [2], Gomes i in. [4] wykazał, że stosując próbkowanie ze zmodyfikowaną randomizowaną strategią, można uzyskać możliwe do udowodnienia dolne granice całkowitej liczby modeli z wysokimi gwarancjami poprawności probabilistycznej.
Istnieje również praca oparta na propagowaniu przekonań (BP). Patrz Kroc i in. [5] i BPCount, które wprowadzają. W tym samym artykule autorzy podają drugą metodę o nazwie MiniCount, służącą do ustalenia górnych granic liczby modeli. Istnieją również ramy statystyczne, które pozwalają obliczyć górne granice przy określonych założeniach statystycznych.
Algorytmy dla # 2-SAT i # 3-SAT
O ( 1,3247n)O ( 1,6894n)O ( 1,6423n)
Podobnie jak w naturze problemu, jeśli chcesz rozwiązać przypadki w praktyce, wiele zależy od wielkości i struktury twoich wystąpień. Im więcej wiesz, tym bardziej jesteś w stanie wybrać właściwą metodę.
[1] Vilhelm Dahllöf, Peter Jonsson i Magnus Wahlström. Liczenie satysfakcjonujących zadań w 2-SAT i 3-SAT. W materiałach z 8. dorocznej międzynarodowej konferencji Computing and Combinatorics (COCOON-2002), 535-543, 2002.
[2] W. Wei i B. Selman. Nowe podejście do liczenia modeli. W materiałach z SAT05: 8. Międzynarodowa konferencja na temat teorii i zastosowań testów satysfakcji, tom 3569 notatek z wykładów z informatyki, 324-339, 2005.
[3] R. Gogate i R. Dechter. Przybliżone liczenie poprzez próbkowanie przestrzeni wyszukiwania wolnej od cofania. In Proceedings of AAAI-07: 22th National Conference on Artificial Intelligence, 198–203, Vancouver, 2007.
[4] CP Gomes, J. Hoffmann, A. Sabharwal i B. Selman. Od próbkowania do zliczania modeli. In Proceedings of IJCAI-07: 20th International Joint Conference on Artificial Intelligence, 2293–2299, 2007.
[5] L. Kroc, A. Sabharwal i B. Selman. Wykorzystanie propagowania przekonań, wyszukiwania wstecznego i statystyk zliczania modeli. W CPAIOR-08: Piąta międzynarodowa konferencja nt. Integracji technik AI i OR w programowaniu ograniczeń, tom 5015 notatek z wykładów z informatyki, 127–141, 2008.
[6] K. Kutzkov. Nowa górna granica dla problemu nr 3-SAT. Information Processing Letters 105 (1), 1-5, 2007.