Quelqu'un pourrait-il indiquer un ou plusieurs sites Web où il est possible de télécharger une implémentation fonctionnelle d'un solveur #SAT? Je suis intéressé par ceux qui renvoient le nombre exact de solutions, pas une approximation.
Quelqu'un pourrait-il indiquer un ou plusieurs sites Web où il est possible de télécharger une implémentation fonctionnelle d'un solveur #SAT? Je suis intéressé par ceux qui renvoient le nombre exact de solutions, pas une approximation.
Réponses:
Vous pouvez le faire avec SAT4J , simplement en itérant sur tous les modèles: http://www.sat4j.org/howto.php#models . J'imagine que la plupart des solveurs SAT ont cette capacité.
Une option consiste à utiliser une bibliothèque BDD, telle que JavaBDD . Toutes ces bibliothèques ont une fonction qui compte rapidement les solutions ou, au moins, elles facilitent l'écriture d'une telle fonction. L'inconvénient, cependant, est que la construction du BDD sera lente dans de nombreux cas et peut nécessiter beaucoup de mémoire.
Rubrique connexe: Meilleur solveur SAT .
Le meilleur que j'ai trouvé est "compilateur c2d". http://reasoning.cs.ucla.edu/c2d/
Il utilise d-DNNF et vous avez besoin de l' option -count .
Le solveur MBound présenté ici http://www.cs.cornell.edu/~sabhar/ peut donner des décomptes de modèles avec des garanties probabilistes. C'est beaucoup plus rapide que d'énumérer toutes les solutions.
J'ai écrit un petit énumérateur implicant modèle / principal . Cela peut déjà être utilisé pour le comptage de modèles avec l'énumération du modèle, mais ce n'est pas très pratique. Si quelqu'un est intéressé, je peux l'étendre pour qu'il compte les modèles des principaux implicants.
Le site Web BeyondNP contient un bon inventaire des outils existants pour résoudre #SAT (et d'autres problèmes difficiles liés aux formules CNF). Vous pouvez également trouver une liste d'outils pour le comptage approximatif de modèles et la compilation de connaissances (la tâche de transformer le CNF en une structure de données succincte qui, souvent, prend en charge le comptage de modèles temporels polynomiaux).
Vous pouvez également trouver une liste d'outils pour le prétraitement des formules CNF qui peuvent être utiles pour améliorer les performances des compteurs de modèles et divers benchmarks .
En voici un appelé tensorCSP et basé sur un outil appelé tensor networks. Cela est expliqué dans cet article .
Le glucose est un solveur SAT très efficace développé à l'université de Bordeaux.