SAT, CP, SMT, (grande parte) do ASP lidam com o mesmo conjunto de problemas de otimização combinatória. No entanto, eles enfrentam esses problemas de diferentes ângulos e com diferentes caixas de ferramentas. Essas diferenças estão em grande parte na maneira como cada abordagem estrutura informações sobre a exploração do espaço de pesquisa. Minha analogia de trabalho é que SAT é código de máquina, enquanto os outros são linguagens de nível superior.
x1 1∨ x2¯¯¯¯¯∨ x3{ ( x1 1, 0 ) , ( x2, 1 ) , ( x3, 0 ) }x1 1x3x2x1 1∨ x2¯¯¯¯¯∨ x3∨ x4x1 1∨ x2¯¯¯¯¯∨ x3∨ x4¯¯¯¯¯∨ x5
Uma aproximação da estrutura da cláusula é mantida para restringir o conjunto de soluções e para ajudar a determinar se esse conjunto está vazio. Durante a pesquisa, algumas atribuições parciais podem não estar contidas em nenhuma solução (mesmo se elas satisfizerem individualmente cada uma das restrições da instância). Estes são conhecidos como nogoods , um termo introduzido por ("Mr GNU") Stallman e Sussmanx ≤ 5x = 5. Portanto, não há uma única estrutura de cláusula geral, mas uma associada a cada escolha de representação, dependendo do que os singletons (literais) da estrutura de cláusula representam.
A programação de restrições (CP) era tradicionalmente uma disciplina de IA, com foco em problemas de agendamento, cronograma e combinatória e, portanto, tem um papel central para variáveis que podem assumir mais do que apenas dois valores (mas geralmente apenas finitos). A CP enfatizou a pesquisa eficiente e, motivada pelas aplicações tradicionais, deu um papel central à all-different
restrição (injetividade), mas também desenvolveu propagadores eficientes para muitos outros tipos de restrições. As definições formais de PC existem desde pelo menos o trabalho de Montanari em 1974, Redes de restrições, com precursores voltando ainda mais cedo. Esse peso da história pode ter contribuído para a CP ficar atrás de outras abordagens no desempenho bruto na última década. O CP mantém classicamente uma aproximação do complemento da estrutura da cláusula, por meio de um conjunto de domínios ativos para as variáveis. O objetivo é eliminar valores dos domínios ativos, explorando a estrutura da cláusula, tentando atribuir valores candidatos a variáveis e retornando quando necessário.
As teorias do módulo de satisfação (SMT) surgiram da comunidade de verificação. Cada teoria em um solucionador de SMT forma uma representação implícita de muitas cláusulas SAT potencialmente infinitas. As teorias usadas com o SMT e as restrições usadas no CP refletem suas diferentes aplicações históricas. A maioria das teorias que o SMT considera tem a ver com matrizes indexadas por números inteiros, campos fechados reais, ordens lineares e afins; estes surgem da análise estática de programas (na verificação auxiliada por computador) ou na formalização de provas matemáticas (no raciocínio automatizado). Por outro lado, no cronograma e no agendamento, a restrição de injetividade é central e, embora seja o símbolo SMTLIB linguagem tenha tido uma restrição de injetividade desde seu início em 2003 (por meio do padrão distinct
), até 2010, os solucionadores de SMT apenas implementavamdistinct
através de um algoritmo ingênuo. Nesse estágio, a técnica de correspondência do propagador padrão de CP all-different
foi portada, com grande efeito quando aplicada a grandes listas de variáveis; veja Bank Solć e Marić, SMT 2010. Além disso, a maioria dos propagadores de CP são projetados para problemas com domínios finitos, enquanto as teorias SMT padrão lidam com domínios infinitos (números inteiros e reais mais recentes) imediatamente. O SMT usa uma instância SAT como aproximação da estrutura da cláusula, extraindo cláusulas não boas das teorias, conforme apropriado. Uma boa visão geral é a Teoria do Módulo de Satisfação: Introdução e Aplicações
de De Moura e Bjørner, doi: 10.1145 / 1995376.1995394.
A programação do conjunto de respostas (ASP) saiu da programação lógica. Devido ao seu foco na solução do problema mais geral de encontrar um modelo estável, e também porque permite quantificação universal e também existencial, o ASP não foi por muitos anos competitivo com o CP ou o SMT.
Formalmente, o SAT é CSP em domínios booleanos, mas o foco no SAT no aprendizado de cláusulas, boas heurísticas para detecção de conflitos e maneiras rápidas de retroceder são bastante diferentes do foco tradicional do CSP em propagadores, estabelecendo consistência e heurísticas para pedidos variáveis. O SAT geralmente é extremamente eficiente, mas para muitos problemas é necessário um grande esforço para expressar o problema primeiro como uma instância do SAT. O uso de um paradigma de nível superior como o CP pode permitir uma expressão mais natural do problema e, em seguida, a instância do CP pode ser traduzida para o SAT manualmente ou uma ferramenta pode cuidar da tradução. Uma boa visão geral das porcas e parafusos do SAT é Sobre os solventes modernos de satisfação de aprendizagem por cláusula de Pipatsrisawat e Darwiche, doi: 10.1007 / s10817-009-9156-3 .
Agora vamos passar de generalidades para as especificidades atuais.
Na última década, algumas pessoas no PC começaram a se concentrar na geração de cláusulas preguiçosas (LCG). Essa é essencialmente uma maneira de juntar os propagadores de CP usando técnicas mais flexíveis do tipo SMT, em vez da abstração de domínios ativos bastante rígida. Isso é útil porque existe um longo histórico de propagadores de CP publicados para representar e resolver com eficiência muitos tipos de problemas. (Obviamente, um efeito semelhante seria alcançado por um esforço conjunto para implementar novas teorias para os solucionadores de SMT.) O LCG tem um desempenho que geralmente é competitivo com o SMT e, para alguns problemas, pode ser superior. Uma rápida visão geral é o documento CPAIOR 2010 da Stuckey, Lazy Clause Generation: Combinando o poder da resolução de SAT e CP (e MIP?) , Doi: 10.1007 / 978-3-642-13520-0_3. Também vale a pena ler o documento de posicionamento de Garcia de la Banda, Stuckey, Van Hentenryck e Wallace, que mostra uma visão centrada no PC de O Futuro da Tecnologia de Otimização , doi: 10.1007 / s10601-013-9149-z .
Até onde eu sei, grande parte do foco de pesquisas recentes sobre SMT parece ter mudado para aplicações em métodos formais e matemática formalizada. Um exemplo é a reconstrução de provas encontradas pelos solucionadores de SMT dentro de sistemas de prova como Isabelle / HOL, criando táticas de Isabelle / HOL para refletir regras de inferência em rastreamentos de prova de SMT; consulte Reconstrução rápida à prova de estilo LCF para Z3 por Böhmer e Weber no ITP 2010.
Os principais solucionadores de ASP foram desenvolvidos nos últimos anos para se tornarem competitivos com os solucionadores de CP, SMT e SAT. Estou apenas vagamente familiarizado com os detalhes da implementação que permitiram que solucionadores como os clasp
competitivos não possam compará-los com o SMT e o CP, mas o clasp anuncia explicitamente seu foco no aprendizado de coisas boas.
Atravessar as fronteiras tradicionais entre esses formalismos é traduzir de representações de problemas mais abstratas em formalismos implementáveis de nível inferior. Vários dos principais solucionadores de ASP e CP agora convertem explicitamente suas entradas em uma instância SAT, que é então resolvida usando um solucionador SAT pronto para uso. No CP, o assistente de modelagem de restrições Savile Row usa técnicas de design de compilador para converter problemas expressos na linguagem de nível médio Essence 'em um formalismo de nível inferior, adequado para entrada em solucionadores de CP, como Minion ou MiniZinc . O Savile Row originalmente trabalhou com uma representação do PC como formalismo de baixo nível, mas introduziu o SAT como um alvo na versão 1.6.2. Além disso, a essência da linguagem de nível ainda mais altoagora pode ser traduzido automaticamente para o Essence 'pela ferramenta Conjure . Ao mesmo tempo, os solucionadores de baixo nível somente de SAT, como o Lingeling, continuam a ser refinados a cada ano, mais recentemente, alternando as fases de aprendizado e processamento das cláusulas; veja a breve visão geral What's Hot nas competições SAT e ASP de Heule e Schaub na AAAI 2015.
A analogia com a história das linguagens de programação parece, portanto, apropriada. O SAT está se tornando um tipo de "código de máquina", visando um modelo de baixo nível de exploração das cláusulas na estrutura da cláusula. Os paradigmas abstratos estão se tornando mais como linguagens de computador de nível superior, com suas próprias metodologias e aplicativos distintos, que são bons em abordar. Finalmente, a coleção cada vez mais densa de links entre essas diferentes camadas está começando a se parecer com o ecossistema de otimização do compilador.