title: Algoritmo di Davis-Putnam
text: # Algoritmo di Davis-Putnam
  
  L'algoritmo di Davis-Putnam fu sviluppato da Martin Davis e Hilary Putnam allo scopo di verificare la soddisfacibilità booleana di formule di logica proposizionale in forma normale congiuntiva (CNF). È un tipo di procedimento di risoluzione nel quale le variabili sono scelte iterativamente ed eliminate, risolvendo ogni clausola in cui questa compaia diretta con ogni clausola in cui compaia negata.
  
  L'algoritmo DP è stato il primo algoritmo per la risoluzione di problemi SAT . Ma questo in generale è molto inefficiente poiché richiede un uso esponenziale della memoria, quindi è adatto a problemi di piccole dimensioni. La sua evoluzione è un algoritmo di ricerca chiamato DPLL. A volte l'algoritmo di Davis–Putnam o DP è scorrettamente usato in riferimento DPLL, ma questi due sono ben distinti.
  
  ## Algoritmo DP
  
  L'algoritmo funziona nel seguente modo:
  
  Qui letterale e variabile hanno lo stesso significato.
  
  In generale se ho n clausole che contengono il letterale x e m clausole che contengono il letterale ¬x, eliminerò (n+m) clausole dalla formula, ma per farlo dovrò aggiungere le (n*m) clausole generate. Per questo l'algoritmo ha un notevole consumo di memoria.
  
  ## Esempio
  
  Vogliamo verificare se la seguente formula è soddisfacibile.
  
  1) Elimino le clausole con un solo letterale.
  
  2) Assegno True ai letterali puri. Abbiamo un solo letterale puro, b. Possiamo quindi eliminare tutte le clausole in cui compare b.
  
  3) Sono rimasti due letterali da risolvere. Scegliamo il letterale a. L'ultima formula può essere riscritta come:
  
  Alla fine ho una formula vuota, quindi il problema è SAT.
  
  ## Fonti
  
  * Martin Davis, Putnam, Hilary, A Computing Procedure for Quantification Theory, in Journal of the ACM, vol. 7, n. 1, 1960, pp. 201–215.
  * Martin Davis, Logemann, George, and Loveland, Donald, A Machine Program for Theorem Proving, in Communications of the ACM, vol. 5, n. 7, 1962, pp. 394–397.
  * R. Dechter and I. Rish. Directional resolution: The Davis-Putnam procedure, revisited. In Proceedings of the Fourth International Conference on the Principles of Knowledge Representation and Reasoning (KR'94), pages 134–145, 1994.
  