Sabemos que os solucionadores SAT baseados em DPLL falham em responder corretamente em instâncias insatisfatórias de (princípio do buraco de pombo), por exemplo, em "existe um mapeamento injetivo de n + 1 para n ":
Estou procurando resultados sobre como eles se comportam em instâncias satisfatórias de , por exemplo, "existe um mapeamento injetivo de n para n ".
Eles encontram uma tarefa satisfatória rapidamente nessas instâncias?
Respostas:
Em casos satisfatível de , DPLL agentes de resolução SAT base fornecerá uma atribuição de satisfazer em tempo linear.PHP
Para entender o porquê, observe como a codificação CNF de uma instância insatisfatória de com n buracos e n + 1 pombos é sintaticamente idêntica a uma instância de k = n Graph Coloring, onde o gráfico de entrada é um clique de n + 1 vértices .PHP n n+1 k=n n+1
Da mesma forma, o CNF que codifica de um exemplo de satisfatível com n furos e n pombos é sintactically idêntica a uma instância de k = n gráfico da coloração, onde o gráfico de entrada é um bando de n vértices.PHP n n k=n n
Agora, colorir uma clique de vértices com n cores é simples: digitalize os vértices e atribua a cada uma delas uma das cores restantes (as cores já atribuídas são automaticamente descartadas pela clique do gráfico, usando a propagação da unidade) . Qualquer que seja a cor que você escolher, ela será boa e o levará a uma tarefa satisfatória.n n
Do ponto de vista do solucionador de DPLL: sempre que tentar adivinhar o valor booleano de uma variável , esse valor estará correto (seja o que for), porque certamente haverá uma atribuição satisfatória na qual a variável v i terá o valor adivinhado. A propagação da unidade fará o resto do trabalho, guiando o solucionador ao longo do caminho satisfatório (em outras palavras: impedindo que ele adivinhe valores errados).vi vi
A pesquisa então prossegue uma variável após a outra, linearmente, sempre que adivinhar corretamente.
fonte