Todos os solucionadores #SAT que eu conheço, por exemplo, RelSat, C2D, retornam apenas o número de instâncias satisfatórias. Mas eu quero conhecer cada uma dessas instâncias?
Existe um solucionador de #SAT ou como devo modificar um solucionador de #SAT disponível para fazer isso?
Obrigado.
Respostas:
Você está procurando um solucionador ALL-SAT ou todas as soluções SAT. Esse é um problema diferente do #SAT. Você não precisa enumerar todas as soluções para contá-las.
Não conheço uma ferramenta que resolva seu problema porque as pessoas adicionam esses algoritmos aos solucionadores de SAT existentes, mas raramente parecem liberar essas extensões. Dois documentos que devem ajudá-lo a modificar um solucionador de CDCL para implementar o ALL-SAT estão abaixo.
Solucionador SAT de Todas as Soluções com Eficiência de Memória e sua Aplicação à Acessibilidade , O. Grumberg, A. Schuster, A. Yadgar, FMCAD 2004
Aqui está um artigo recente publicado no arXiv.
Ampliando os Solvers SAT modernos para enumerar todos os modelos , Said Jabbour, Lakhdar Sais, Yakoub Salhi, 2013
Você pode tentar entrar em contato com esses autores para a implementação deles.
fonte
Encontrei um artigo mais recente (2014) sobre o All-SAT em uma conferência VLSI, portanto ele é definitivamente voltado para o lado prático (o que parece estar em sintonia com a pergunta do OP aqui, embora menos com a cstheory.SE em geral):
Para aqueles sem assinatura do IEEE, há uma cópia gratuita na página da Web de Subramanyan em Princeton . (Ele usa um serviço de compartilhamento de arquivos para armazenar / distribuir cópias de seus documentos e não tenho certeza de quão estáveis são esses URLs, portanto, este link indireto.)
A essência deste artigo parece ser:
Sua implementação se baseia no MiniSat. O código-fonte para sua extensão não parece estar disponível publicamente. Infelizmente, isso parece ser um hábito no campo do All-SAT, portanto, os trabalhos nessa área que contêm resultados experimentais apenas configuram um algoritmo mais ou menos simples e mais simples de superar e raramente podem ser comparados diretamente (em termos de experimentos). resultados) com qualquer outro algoritmo publicado para All-SAT. O artigo de Jabbour et al. mencionado por Vijay D também é desse tipo.
Como não vejo isso mencionado na outra resposta (mas apenas no comentário de András Salamon), a [bastante popular] técnica de cláusulas de bloqueio foi introduzida em:
fonte