Respostas:
Algoritmos básicos como DPLL e seus refinamentos como CDCL são completamente determinísticos.
Observe que o não determinismo não significa necessariamente que um algoritmo pode levar a um resultado errado. Por exemplo, podemos distinguir entre
Algoritmos de Monte Carlo , que são algoritmos aleatórios cuja saída pode estar incorreta com alguma probabilidade.
Os algoritmos de Las Vegas , que são algoritmos aleatórios cuja saída está sempre correta , mas os algoritmos 'jogam' com os recursos usados na computação, por exemplo, o tempo de execução em entradas idênticas pode variar.
No outro extremo estão os algoritmos probabilísticos para resolver o SAT, como o de Schöning [1], que é Monte-Carlo, e notavelmente eficaz na prática, devido à sua total simplicidade. O interessante é que o algoritmo de Schöning pode ser completamente des randomizado sem perder (grande parte) sua eficácia [2].
Na prática, os solucionadores de SAT industriais sempre empregam algum grau de aleatoriedade, de modo a "escapar" do mau comportamento (= exponencial) do pior caso dos algoritmos baseados em DPLL. O MiniSat é um software altamente configurável e em evolução. Dito isto, o MiniSat não é completamente determinístico: a escolha da variável de ramificação às vezes é aleatória, dependendo das opções da linha de comando. (O padrão é que 2% das variáveis de ramificação sejam escolhidas aleatoriamente IIRC.) Da mesma forma, o MiniSAT tem a opção de inicializar as pontuações do VSIDS aleatoriamente. (O VSIDS é uma heurística para 'medir' a influência que uma variável tem.)
U. Schöning, um algoritmo probabilístico para -SAT baseado em pesquisa local limitada e reinicialização .
RA Moser, D. Scheder, Uma Derandomização Completa do Algoritmo SAT de Schöning .
Está correto. A DPLL explora exaustivamente o espaço. Se retornar 'unsat', certamente não existe uma tarefa satisfatória.
Mais recentemente, os pesquisadores desenvolveram solucionadores de certificação SAT que, além disso, retornam uma (esperançosamente curta) prova de insatisfação, quando retornam 'insat'. Essa prova pode ser verificada por qualquer outra pessoa, o que fornece uma maneira de outras pessoas verificarem se a fórmula é insatisfatória sem que elas precisem executar novamente o algoritmo SAT. Isso pode ser útil em alguns contextos.
MiniSAT é uma implementação, e não um algoritmo. Seu comportamento depende do seu código. Não posso falar com o que o código faz.
Os solucionadores de SAT podem ser determinísticos ou não, dependendo de como eles são implementados. Observe que o não determinismo aqui pode afetar apenas o modelo gerado e não a resposta (SAT ou UNSAT) do solucionador! Para fins de diversificação e outros, o solucionador SAT geralmente introduz a aleatoriedade em determinado ponto: por exemplo, para inicializar atividades variáveis ou para tomar decisões aleatórias. No minisat, por exemplo, decisões aleatórias são tomadas chamando uma função que sempre retorna o mesmo número aleatório ao usar a mesma semente aleatória. Portanto, nesse ponto, quando você não altera nenhuma configuração do solucionador, sempre terá a mesma resposta e o mesmo modelo. Alterar a semente aleatória, por exemplo, não afetará a resposta (SAT ou UNSAT), mas poderá alterar o modelo e o tempo de execução.