Implementazione della procedura DPLL

attraverso il linguaggio di programmazione JAVA

La procedura DPLL è considerata il metodo computazionalmente più efficiente per valutare se una formula proposizionale S sia soddisfacibile o meno; l'istanza di ingresso della procedura è rappresentata da un insieme di clausole ground (ovvero un insieme dove non appaiono variabili ma solo letterali) in forma normale congiunta (CNF), mentre l'output consiste nel decidere se l'insieme sia soddisfacibile o meno, nel caso in cui lo sia l'algoritmo restituisce un assegnamento che soddisfa l'insieme di clausole.
Quindi, a partire da una formula si cerca di costruire un assegnamento che la verifichi; la procedura può essere vista come un albero di possibili assegnamenti nel quale ciascun nodo rappresenta un insieme di clausole e per ogni nodo ad un letterale viene assegnato un valore di verità; tale valore viene poi propagato per ridurre il numero di assegnamenti futuri.
Un ramo dell'albero non viene più espanso se l'insieme di clausole è vuoto (S è soddisfacibile) oppure se è stata generata la clausola vuota (S è non soddisfacibile). Gli assegnamenti vengono effettuati applicando alcune regole che preservano la soddisfacibilità:

Il linguaggio di programmazione scelto per l'implementazione del progetto è JAVA, versione 1.6.0.

Link