Cláusula Orientada a Conflitos Aprendendo esclarecimentos sobre retrocesso

9

Na página da Wikipedia aqui, ele descreve muito bem o algoritmo CDCL (e parece que as fotos foram tiradas de slides criados por Sharad Malik em Princeton). No entanto, ao descrever como voltar atrás, tudo o que diz é "até o ponto apropriado". O MiniSAT também usa uma variante do algoritmo CDCL, então eu li este artigo. O que eles parecem dizer é que você deve voltar até a cláusula aprendida ser uma cláusula unitária. Certamente esse é um esclarecimento, mas não faz sentido para mim. A última tarefa definitivamente fará parte da cláusula de conflito aprendido, até onde eu sei (talvez eu esteja errado aqui?). Quando você retrocede um passo, cria imediatamente a unidade da cláusula aprendida, o último valor atribuído será alterado, e o algoritmo continuará exatamente como DPLL, sem nunca voltar o suficiente. Além disso, a página da wikipedia não segue esta regra, ela é retrocedida muito mais, conforme parece desejável.

Até que ponto alguém deve voltar atrás?

Jake
fonte

Respostas:

7

Aqui está o parágrafo relevante do artigo MiniSAT:

Fumaeuse

Um ponto que você parece ter perdido é que, uma vez que a cláusula aprendida se torna unidade devido a tarefas desfeitas (retorno), o solucionador não pára por aí. Pode haver outras atribuições anteriores a essa que não tenham relação com o conflito atual e, experimentalmente, foi demonstrado que é melhor desfazer essas atribuições não relacionadas também. Portanto, o solucionador continua desfazendo as atribuições até que o próximo desfazer torne a cláusula aprendida sem unidade, ou seja, conteria mais de uma variável não atribuída. O solucionador para aqui, executa a propagação da unidade para satisfazer a cláusula unitária e, em seguida, retoma a pesquisa, atribuindo variáveis ​​normalmente.

Observe também que a variável de decisão atual pode não estar presente na cláusula aprendida. Uma estratégia comum para um solucionador de CDCL é encontrar o primeiro ponto de implicação exclusivo e usar essa variável na cláusula aprendida. Em alguns casos, o primeiro UIP é a variável de decisão, mas geralmente não é.

Kyle Jones
fonte