Jest to często nazywane „rozwiązaniem SAT dla wszystkich rozwiązań”, ale wydaje się, że nie jest dostępne z półki. Odnośniki, które mogę znaleźć, mówią o modyfikacjach MiniSAT i innych solverów, zwykle przez dodanie klauzul blokujących, aby wykluczyć rozwiązanie, gdy zostanie znalezione. Z drugiej strony większość rozwiązujących ograniczenia obsługuje generowanie wszystkich rozwiązań w standardzie.
Szukasz solvera ALL-SAT lub wszystkich rozwiązań SAT. Jest to inny problem niż #SAT. Nie musisz wyliczać wszystkich rozwiązań, aby je policzyć.
Nie znam narzędzia, które rozwiązałoby twój problem, ponieważ ludzie dodają te algorytmy do istniejących solverów SAT, ale rzadko wydają się wydawać te rozszerzenia. Poniżej znajdują się dwa artykuły, które powinny pomóc w modyfikacji solwera CDCL w celu wdrożenia ALL-SAT.
@Kaveh, wierzę, że OP prosi o solver ALLSAT lub sposób na przekształcenie solvera #SAT w solver ALLSAT. To jest artykuł o dolnych granicach dla #SAT. Nie jestem pewien, czy to pomaga OP.
Na konferencji VLSI znalazłem nowszy (2014) artykuł na temat All-SAT, więc zdecydowanie jest on ukierunkowany na stronę praktyczną (która wydaje się być zgodna z pytaniem OP tutaj, choć w mniejszym stopniu z cstheory.SE ogólnie):
Dla osób bez subskrypcji IEEE dostępna jest bezpłatna kopia na stronie internetowej Subramanyan w Princeton . (Używa usługi udostępniania plików do przechowywania / dystrybucji kopii swoich dokumentów i nie jestem pewien, jak stabilne są te adresy URL, stąd ten link do ronda).
Istotą tego artykułu wydaje się być:
Nasz wkład, algorytm Non-Disjoint-Dec, generuje niezwykle krótkie klauzule blokujące, które nie zawierają żadnej z domyślnych zmiennych w solwerze. Zauważ, że zazwyczaj implikowana jest większość zmiennych w satysfakcjonującym okresie. Krótkie klauzule blokujące są bardzo korzystne dla wydajności solvera, co wykazano w ocenie.
Ich implementacja opiera się na MiniSat. Wydaje się, że kod źródłowy ich rozszerzenia nie jest publicznie dostępny. Niestety wydaje się, że jest to nawyk w dziedzinie All-SAT, więc artykuły w tym obszarze, które zawierają wyniki eksperymentalne, po prostu konfigurują mniej lub bardziej prosty algorytm, który można pokonać i rzadko można go bezpośrednio porównać (pod względem eksperymentalnym wyników) z dowolnym innym opublikowanym algorytmem dla All-SAT. Artykuł Jabbour et al. wspomniane przez Vijay D jest również tego rodzaju.
Ponieważ nie widzę tego w innej odpowiedzi (ale tylko w komentarzu Andrása Salamona), [raczej popularna] technika klauzul blokujących została wprowadzona w:
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.