Risposte:
Algoritmi core come DPLL e i suoi perfezionamenti come CDCL sono completamente deterministici.
Si noti che il non determinismo non significa necessariamente che un algoritmo possa portare a un risultato errato. Ad esempio, possiamo distinguere tra
Algoritmi Monte Carlo , che sono algoritmi randomizzati il cui output potrebbe essere errato con una certa probabilità.
Gli algoritmi di Las Vegas , che sono algoritmi randomizzati il cui output è sempre corretto , ma gli algoritmi "giocano" con le risorse utilizzate nel calcolo, ad esempio il tempo di esecuzione su input identici può variare.
All'altro estremo ci sono algoritmi probabilistici per risolvere -SAT come Schöning [1] che è Monte-Carlo, e straordinariamente efficace nella pratica data la sua assoluta semplicità. È interessante notare che l'algoritmo di Schöning può essere completamente derandomizzato senza perdere (gran parte) della sua efficacia [2].
In pratica, i solutori di SAT industriali impiegano sempre un certo grado di casualità, in modo da "sfuggire" al cattivo comportamento (esponenziale) del caso peggiore degli algoritmi basati su DPLL. MiniSat è un software altamente configurabile e in evoluzione. Detto questo, MiniSat non è completamente deterministico: la scelta della variabile di ramificazione è talvolta randomizzata, a seconda delle opzioni della riga di comando. (L'impostazione predefinita è che il 2% delle variabili di ramificazione sono scelte casualmente IIRC.) Allo stesso modo, MiniSAT ha la possibilità di inizializzare i punteggi VSIDS in modo casuale. (VSIDS è un'euristica per "misurare" l'influenza che ha una variabile.)
U. Schöning, un algoritmo probabilistico per -SAT basato su ricerca locale limitata e riavvio .
RA Moser, D. Scheder, Una completa derandomizzazione dell'algoritmo -SAT di Schöning .
È corretto. DPLL esplora esaurientemente lo spazio. Se restituisce "unsat", allora sicuramente non esiste un compito soddisfacente.
Più di recente, i ricercatori hanno sviluppato certificatori di solutori SAT che restituiscono inoltre una (eventualmente breve) prova di insoddisfazione, quando restituiscono "unsat". Questa prova può essere verificata da chiunque altro, il che consente agli altri di verificare che la formula non sia soddisfacente senza che sia necessario rieseguire l'algoritmo SAT. Questo può essere utile in alcuni contesti.
MiniSAT è un'implementazione, piuttosto che un algoritmo. Il suo comportamento dipende dal suo codice. Non posso parlare di ciò che fa il codice.
I solutori SAT possono essere deterministici o meno a seconda di come sono implementati. Nota che il non determinismo qui può influenzare solo il modello generato e non la risposta (SAT o UNSAT) del solutore! A fini di diversificazione e altri, il solutore SAT generalmente introduce la casualità a un certo punto: ad esempio per inizializzare attività variabili o prendere decisioni casuali. Ad esempio, in minisat, le decisioni casuali vengono prese chiamando una funzione che restituisce sempre lo stesso numero casuale quando si utilizza lo stesso seme casuale. Quindi, a questo punto, quando non modifichi alcuna configurazione del solutore, avrai sempre la stessa risposta e lo stesso modello. La modifica del seme casuale, ad esempio, non influirà sulla risposta (SAT o UNSAT) ma può cambiare il modello e il tempo di esecuzione.