Respuestas:
Los algoritmos centrales como DPLL y sus refinamientos como CDCL son completamente deterministas.
Tenga en cuenta que el no determinismo no necesariamente significa que un algoritmo puede conducir a un resultado incorrecto. Por ejemplo podemos distinguir entre
Algoritmos de Monte Carlo , que son algoritmos aleatorios cuya salida puede ser incorrecta con cierta probabilidad.
Los algoritmos de Las Vegas , que son algoritmos aleatorios cuya salida siempre es correcta , pero los algoritmos 'juegan' con los recursos utilizados en el cálculo, por ejemplo, el tiempo de ejecución en entradas idénticas puede variar.
En el otro extremo están los algoritmos probabilísticos para resolver -SAT como el de Schöning [1], que es Monte-Carlo, y notablemente eficaz en la práctica dada su total simplicidad. Curiosamente, el algoritmo de Schöning puede ser completamente aleatorizado sin perder (gran parte) de su efectividad [2].
En la práctica, los solucionadores de SAT industriales siempre emplean cierto grado de aleatoriedad, para "escapar" del mal comportamiento (= exponencial) en el peor de los casos de los algoritmos basados en DPLL. MiniSat es una pieza de software altamente configurable y en evolución. Dicho esto, MiniSat no es completamente determinista: la elección de la variable de ramificación a veces es aleatoria, dependiendo de las opciones de la línea de comandos. (El valor predeterminado es que el 2% de las variables de ramificación se eligen al azar IIRC.) Asimismo, MiniSAT tiene la opción de inicializar los puntajes VSIDS al azar. (VSIDS es una heurística para 'medir' la influencia que tiene una variable).
U. Schöning, un algoritmo probabilístico para -SAT basado en búsqueda y reinicio locales limitados .
RA Moser, D. Scheder, una desrandomización completa del algoritmo -SAT de Schöning .
Eso es correcto. DPLL explora exhaustivamente el espacio. Si devuelve 'unsat', ciertamente no existe una tarea satisfactoria.
Más recientemente, los investigadores han desarrollado solucionadores de SAT de certificación que además devuelven una prueba (insatisfactoriamente corta) de insatisfacción, cuando devuelven 'insat'. Cualquier otra persona puede verificar esta prueba, lo que proporciona una forma para que otros verifiquen que la fórmula no es satisfactoria sin que tengan que volver a ejecutar el algoritmo SAT. Esto puede ser útil en algunos contextos.
MiniSAT es una implementación, más que un algoritmo. Su comportamiento depende de su código. No puedo hablar de lo que hace el código.
Los solucionadores SAT pueden ser deterministas o no dependiendo de cómo se implementen. ¡Tenga en cuenta que el no determinismo aquí solo puede afectar el modelo generado, no la respuesta (SAT o UNSAT) del solucionador! Para fines de diversificación y otros, el solucionador SAT generalmente introduce aleatoriedad en cierto punto: por ejemplo, para inicializar actividades variables o para tomar decisiones aleatorias. En minisat, por ejemplo, las decisiones aleatorias se toman llamando a una función que siempre devuelve el mismo número aleatorio cuando se usa la misma semilla aleatoria. Entonces, en este punto, cuando no cambie ninguna configuración del solucionador, siempre tendrá la misma respuesta y el mismo modelo. Cambiar la semilla aleatoria, por ejemplo, no afectará la respuesta (SAT o UNSAT) pero puede cambiar el modelo y el tiempo de ejecución.