Os solucionadores de SAT estão se tornando cada vez mais eficientes na solução de grandes instâncias e estão sendo usados como back-end em vários contextos. Toda vez que alguém deseja usá-los para resolver um problema em um domínio específico, ele / ela precisa criar uma codificação ad-hoc que não apenas tenha o conjunto certo de soluções, mas também coloque as restrições (mesmo redundantes) em uma forma isso ajuda as heurísticas dos solucionadores a encontrar uma solução mais rapidamente.
Muitas dessas codificações parecem-me muito comuns, por exemplo: afirmar que um conjunto finito de nós está vinculado como uma árvore, ou como um DAG, ou uma lista é classificada ...
Existe um livro de repositório / receita de codificações comuns para problemas comuns com soluções otimizadas?
fonte
Respostas:
Eu li um artigo de pesquisa há alguns anos que parece relevante, " Successful SAT Encoding Techniques ", de Magnus Björk.
Abstrato:
fonte
É sempre uma boa idéia dar uma olhada no Manual de Satisfação [1] (acho que não está disponível gratuitamente, desculpe). Aqui, o capítulo 2 é intitulado "CNF Encodings". No mínimo, o livro fornece referências de literatura sobre o estado da arte no momento da redação e você pode expandir sua pesquisa por elas.
Além disso, aqui e aqui estão dois slides recentes sobre o pré-processamento SAT. Os slides fornecem uma visão geral concisa das técnicas de pré-processamento e também outras referências. A idéia é que, em vez de tentar modelar "manualmente" o problema de maneira eficiente, você o modele da maneira mais fácil, pressione ir e um software fornecerá uma codificação eficiente.
[1] Biere, Armin, Marijn Heule e Hans van Maaren, orgs. Manual de satisfação. Vol. 185. IOS Press, 2009.
fonte
não exatamente uma resposta direta, mas outro ângulo cada vez mais estreitamente relacionado: parte disso é abordada por uma área de pesquisa relativamente nova, conhecida como SMT, Teorias do Módulo de Satisfação . a idéia básica é combinar codificações de problemas (por exemplo, aritmética inteira, gráficos etc.) no solucionador SAT, mas também usar / alavancar o conhecimento extra que vem desse acoplamento para criar algoritmos de solução mais avançados. aqui está uma pesquisa. como apontado, eles podem ser muito mais eficientes do que combinar um mecanismo de codificação ad-hoc com solucionadores SAT padrão.
Teorias do módulo de satisfação: um aperitivo / Leonardo de Moura e Nikolaj Bjørner
fonte