Könnte jemand bitte auf eine oder mehrere Websites verweisen, auf denen eine funktionierende Implementierung eines #SAT-Lösers heruntergeladen werden kann? Mich interessieren diejenigen, die die genaue Anzahl der Lösungen zurückgeben, keine Annäherung.
ds.algorithms
sat
software
Giorgio Camerani
quelle
quelle
Antworten:
Sie können dies mit SAT4J tun , indem Sie einfach alle Modelle durchlaufen : http://www.sat4j.org/howto.php#models . Ich stelle mir vor, dass die meisten SAT-Löser diese Fähigkeit haben.
quelle
Sie können auch den #SAT-Solver "sharpSAT" ( Website , Github ) verwenden, um die Anzahl der erfüllenden Zuordnungen von CNF-Formeln zu ermitteln.
quelle
Eine Möglichkeit besteht darin, eine BDD-Bibliothek wie JavaBDD zu verwenden . Alle diese Bibliotheken haben entweder eine Funktion, die Lösungen schnell zählt, oder sie machen es zumindest einfach, eine solche Funktion zu schreiben. Der Nachteil ist jedoch, dass das Erstellen der BDD in vielen Fällen langsam ist und möglicherweise viel Speicher benötigt.
quelle
Verwandte Themen: Bester SAT-Solver .
quelle
Das beste was ich gefunden habe ist "c2d compiler". http://reasoning.cs.ucla.edu/c2d/
Es wird d-DNNF verwendet und Sie benötigen die Option -count .
quelle
Der hier angegebene MBound Solver http://www.cs.cornell.edu/~sabhar/ kann Modellzählungen mit probabilistischen Garantien liefern. Es ist viel schneller als alle Lösungen aufzuzählen.
quelle
Ich habe einen kleinen Modell / Prime Implicant Enumerator geschrieben . Dies kann bereits für die Modellzählung mit der Modellaufzählung verwendet werden, aber das ist nicht sehr praktisch. Wenn irgendjemand Interesse hat, kann ich es erweitern, so dass es Modelle von Hauptimplikanten zählt.
quelle
Die Website BeyondNP enthält eine gute Bestandsaufnahme der vorhandenen Tools zur Lösung von #SAT (und anderer damit zusammenhängender schwerer Probleme bei CNF-Formeln). Möglicherweise finden Sie auch eine Liste von Tools für die ungefähre Modellzählung und Wissenskompilierung (die Aufgabe, den CNF in eine hoffentlich prägnante Datenstruktur umzuwandeln, die häufig die polynomiale Zeitmodellzählung unterstützt).
Unter Umständen finden Sie auch eine Liste von Tools für die Vorverarbeitung von CNF-Formeln, die hilfreich sein können, um die Leistung von Modellzählern und verschiedenen Benchmarks zu verbessern .
quelle
Hier ist eine, die tensorCSP heißt und auf einem Tool basiert, das tensor networks heißt. Es wird in diesem Artikel erklärt .
quelle
Glucose ist ein sehr effizienter SAT-Löser, der an der Universität von Bordeaux entwickelt wurde.
https://www.labri.fr/perso/lsimon/glucose/
quelle