Algoritmos SAT não baseados em DPLL

Respostas:

21

A Pesquisa de resolução (apenas a aplicação da regra de resolução com algumas boas heurísticas) é outra estratégia possível para os solucionadores de SAT. Teoricamente, é exponencialmente mais poderoso (ou seja, existem problemas para os quais ele tem provas mais curtas exponenciais) do que o DPLL (que apenas executa a resolução em árvore, embora você possa aumentá-lo com um bom aprendizado para aumentar seu poder - se isso o torna tão poderoso quanto a resolução geral ainda é aberto até onde sei), mas não conheço uma implementação real com melhor desempenho.

Se você não se limitar a concluir a pesquisa, o WalkSat é um solucionador de pesquisa local que pode ser usado para encontrar soluções satisfatórias e superar a pesquisa baseada em DPLL em muitos casos. Não se pode usá-lo para provar a insatisfação, a menos que alguém armazene em cache todas as atribuições que falharam, o que significaria requisitos de memória exponencial.

Editar: Esqueci de adicionar - Planos de corte também podem ser usados ​​(reduzindo o SAT para um programa inteiro). Em particular, os cortes de Gomory são suficientes para resolver qualquer programa inteiro para otimizar. Novamente, no pior caso, pode ser necessário um número exponencial. Penso que o livro Complexidade Computacional de Arora & Barak tem mais alguns exemplos de sistemas de prova que em teoria se poderia usar para algo como a solução SAT. Novamente, eu realmente não vi uma implementação rápida de nada além dos métodos baseados em DPLL ou em pesquisa local.

Optar
fonte
9
O DPLL com aprendizagem por cláusula (ou aprendizado não bom, como você o chama) e reinicia mostrou-se equivalente à resolução geral.
Jan Johannsen
1
@JanJohannsen, este é o artigo a que você se refere? arxiv.org/abs/1107.0044
Radu Grigore
5
Sim, também há uma melhoria no seguinte artigo: Knot Pipatsrisawat e Adnan Darwiche. Sobre o poder do SAT de aprendizado por cláusula como mecanismo de resolução. Inteligência Artificial 175 (2), 2011, pp. 512-525. Você pode usar o seguinte comando
Jan Johannsen
3
Enquanto o artigo de Beame et al. vinculado por Radu Grigore mostra que a resolução geral é simulada por p por um algoritmo DPLL com uma estratégia de aprendizado artificial específica, o artigo acima o mostra para estratégias de aprendizado naturais que são realmente usadas.
Jan Johannsen
12

A propagação de pesquisa é outro algoritmo que foi usado com êxito em alguns tipos de problemas de SAT, principalmente em instâncias aleatórias de SAT. Como o WalkSAT, ele não pode ser usado para provar insatisfação, mas é baseado em idéias muito diferentes (algoritmos de passagem de mensagens) do WalkSAT.

Timothy Chow
fonte
10

Existem solucionadores SAT baseados na pesquisa local. Veja, por exemplo, este artigo para exposição.

ilyaraz
fonte
7

Você também pode dizer que todos os solucionadores de CSP também são solucionadores de SAT. E existem até onde eu sei dois métodos usados ​​no CSP:

  • DFS exaustivo com verificação do espaço de pesquisa e verificação da consistência do arco, possivelmente usando o barbear para garantir que a consistência seja mantida o mais rápido possível.
  • Métodos locais (busca tabu, recozimento simulado)
malejpavouk
fonte
4

O Monte Carlo Tree Search (MCTS) alcançou recentemente resultados impressionantes em jogos como o Go. A idéia básica aproximada é intercalar a simulação aleatória com a pesquisa em árvore. É leve e fácil de implementar, a página do hub de pesquisa que vinculei contém muitos exemplos, documentos e também algum código.

Previti et al. [1] fizeram algumas investigações preliminares do MCTS aplicadas ao SAT. Eles chamam o algoritmo de pesquisa baseado em MCTS UCTSAT ("limites de confiança superiores aplicados às árvores SAT", se você desejar). Eles compararam o desempenho do DPLL e UCTSAT em instâncias do repositório SATLIB, com o objetivo de verificar se o UCTSAT produziria árvores de pesquisa significativamente menores que o DPLL.

Para instâncias de coloração aleatória uniforme de 3-SAT e de gráfico plano de tamanhos diferentes, não houve diferenças significativas. No entanto, o UCTSAT teve um desempenho melhor em instâncias do mundo real. O tamanho médio das árvores (em termos de número de nós) para quatro instâncias diferentes de análise de falhas de circuito SSA foi de vários milhares para DPLL, enquanto sempre inferior a 200 para UCTSAT.


[1] Previti, Alessandro, Raghuram Ramanujan, Marco Schaerf e Bart Selman. "O UCT no estilo Monte-Carlo procura por satisfação booleana." Em AI * IA 2011: Inteligência Artificial em torno do homem e além, pp. 177-188. Springer Berlin Heidelberg, 2011.

Juho
fonte
-4

A DPLL não especifica estritamente a ordem das visitas variáveis ​​e há muitas pesquisas interessantes que analisam as estratégias ideais de ataque de ordens variáveis. parte disso é incorporada à lógica de seleção de variáveis ​​nos algoritmos SAT. em certo sentido, algumas dessas pesquisas são preliminares, pois mostram que diferentes ordens de ataque variáveis ​​levam a diferentes restrições seqüenciais (altamente correlacionadas com a dureza da instância) e a criação de heurísticas ou estratégias mais eficazes para explorar esse insight aparentemente chave parece ser nas fases iniciais da pesquisa.

vzn
fonte
4
Você entende que pedi algoritmos não baseados em DPLL ?
Anônimo
2
Você entende o que significa "baseado" ? Disse a você : não use minhas perguntas para comentar o que você quiser!
Anônimo
7
você mesmo está dizendo que eles são baseados em DPLL. me parece que este é como dizer que diferentes regras de pivô para simplex dar-lhe um algoritmo que não é um algoritmo simplex
Sasho Nikolov
7
Eu concordo com o Sasho. Além disso, a pesquisa sobre heurísticas de pedidos variáveis ​​definitivamente não está nos estágios iniciais. A importância foi percebida há muito tempo (imagine as conseqüências de um oráculo perfeito) e muito tempo foi gasto em analisá-las. As heurísticas de pedidos de valor se tornam mais interessantes nos solucionadores de CSP e, por algum motivo, não acho que a pesquisa sobre eles tenha sido tão próspera quanto para pedidos de variáveis.
Juho 23/10
4
Para ser mais específico, a pesquisa inicial sobre heurísticas de pedidos variáveis ​​remonta aos anos 70. Se você estiver interessado, posso desenterrar as referências relevantes para você.
Juho