Todos los solucionadores de #SAT que conozco, por ejemplo, RelSat, C2D, solo devuelven el número de instancias satisfactorias. Pero quiero saber cada una de esas instancias?
¿Existe tal solucionador #SAT o cómo debo modificar un solucionador #SAT disponible para hacer esto?
Gracias.
Respuestas:
Está buscando un solucionador de SAT ALL-SAT o todas las soluciones. Este es un problema diferente de #SAT. No tiene que enumerar todas las soluciones para contarlas.
No conozco una herramienta que resuelva su problema porque las personas agregan estos algoritmos además de los solucionadores SAT existentes, pero rara vez parecen lanzar estas extensiones. A continuación se presentan dos documentos que deberían ayudarlo a modificar un solucionador de CDCL para implementar ALL-SAT.
Solucionador SAT de memoria de todas las soluciones eficientes y su aplicación a la accesibilidad , O. Grumberg, A. Schuster, A. Yadgar, FMCAD 2004
Aquí hay un artículo reciente publicado en arXiv.
Ampliación de los solucionadores SAT modernos para enumerar todos los modelos , dijo Jabbour, Lakhdar Sais, Yakoub Salhi, 2013
Puede intentar ponerse en contacto con estos autores para su implementación.
fuente
Encontré un documento más reciente (2014) sobre All-SAT en una conferencia VLSI, por lo que definitivamente está orientado hacia el lado práctico (que parece estar en sintonía con la pregunta del OP aquí, aunque no tanto con cstheory.SE en general):
Para aquellos sin una suscripción a IEEE, hay una copia gratuita en la página web de Princeton de Subramanyan . (Utiliza un servicio de intercambio de archivos para almacenar / distribuir copias de sus documentos y no estoy seguro de cuán estables son esas URL, de ahí este enlace indirecto).
La esencia de este artículo parece ser:
Su implementación se basa en MiniSat. Sin embargo, el código fuente de su extensión no parece estar disponible públicamente. Por desgracia, esto parece ser un hábito en el campo de All-SAT, por lo que los documentos en esta área que contienen resultados experimentales simplemente configuran un algoritmo más o menos simple para vencer y rara vez se pueden comparar directamente (en términos de experimentación resultados) con cualquier otro algoritmo publicado para All-SAT. El artículo de Jabbour et al. mencionado por Vijay D también es de este tipo.
Como no lo veo mencionado en la otra respuesta (pero solo en el comentario de András Salamon), la técnica de cláusulas de bloqueo [bastante popular] se introdujo en:
fuente