x
1

Algoritmo DPLL



El algoritmo DPLL/Davis-Putnam-Logemann-Loveland es un algoritmo completo basado en la vuelta atrás que sirve para decidir la satisfactibilidad de las fórmulas de lógica proposicional en una forma normal conjuntiva, es decir, para resolver el problema CNF-SAT.

Fue presentado en 1962 por Martin Davis, Hilary Putnam, George Logemann y Donald W. Loveland y es una refinación del previo algoritmo de Davis-Putnam, el cual es un procedimiento de resolución desarrollado por Davis y Putnam en 1960. El algoritmo Davis-Putnam-Logemann-Loveland es nombrado a menudo como el "método Davis-Putnam" o el "algoritmo DP", especialmente en publicaciones antiguas. Otros nombres comunes que mantienen la distinción son DLL y DPLL.

El DPLL es un procedimiento muy eficiente y tras más de 40 años aún conforma la base de los solucionadores más eficaces de SAT, así como de muchos demostradores de teoremas para fragmentos de lógica de primer orden.

El algoritmo de vuelta atrás (backtracking) se ejecuta eligiendo un literal, asignándole un valor de verdad a este, simplificando la fórmula y a continuación, en forma recursiva comprobando si la fórmula simplificada es satisfacible; si este es el caso la fórmula original es satisfacible; de lo contrario, la misma verificación recursiva termina asumiendo el valor de verdad contrario. Esto se conoce como regla de división, ya que divide el problema en dos subproblemas más simples. El paso de simplificación esencialmente elimina todas las cláusulas que se convierten en verdaderas en función de la fórmula, y todos los literales de las cláusulas restantes se convierten en falsas.

El algoritmo DPLL mejora sobre el algoritmo de vuelta atrás (backtracking) por el uso eficaz de las siguientes reglas:

La insatisfacibilidad de una asignación parcial dada, se detecta si una cláusula se vacía, es decir, si todas las variables han sido asignadas de manera que hace a los literales correspondientes falsos. La satisfacibilidad de la fórmula se detecta cuando todas las variables se asignan sin generar la cláusula vacía, o en las implementaciones modernas, si todas las cláusulas son satisfechas. La insatisfacibilidad de la fórmula completa solo puede detectarse después de una búsqueda exhaustiva.

El trabajo actual sobre la mejora del algoritmo se ha realizado en tres direcciones: la definición de criterios diferentes para la elección de los literales de ramificación, la definición de nuevas estructuras de datos para hacer el algoritmo más rápido, especialmente la parte sobre la propagación de la unidad; y la definición de las variantes del algoritmo de vuelta atrás básico. La dirección de este último incluye Vuelta atrás no cronológico (non-chronological backtracking) y Aprendizaje de cláusulas. Estos refinamientos describen un método de vuelta atrás después de llegar a una cláusula de conflicto que "aprende" la raíz de las causas (asignaciones a variables) de los conflictos a fin de evitar llegar al mismo conflicto.




Escribe un comentario o lo que quieras sobre Algoritmo DPLL (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!