En informática , el aprendizaje de cláusulas basado en conflictos ( CDCL ) es un algoritmo para resolver el problema de satisfacibilidad booleana (SAT). Dada una fórmula booleana, el problema SAT requiere una asignación de variables tal que la fórmula completa se evalúe como verdadera. Inspirado en el algoritmo DPLL , CDCL utiliza retroceso no cronológico (o salto hacia atrás ) y agrega nuevas cláusulas a la base de datos de cláusulas cada vez que ocurre un conflicto. [ 1 ]
El aprendizaje de cláusulas impulsado por el conflicto fue propuesto por Marques-Silva y Karem A. Sakallah (1996, 1999) [ 2 ] [ 3 ] y Bayardo y Schrag (1997). [ 4 ]
Fondo
Problema de satisfacibilidad booleana
El problema de satisfacibilidad consiste en encontrar una asignación satisfactoria para una fórmula dada en forma normal conjuntiva (FNC).
Un ejemplo de dicha fórmula es:
o, utilizando una notación común: [ 5 ]
donde A , B , C son variables booleanas,,,, yson literales yyson cláusulas.
Una asignación satisfactoria para esta fórmula es, por ejemplo:
puesto que hace que la primera cláusula sea verdadera (ya quees cierto) así como el segundo (ya quees cierto).
Este ejemplo utiliza tres variables ( A , B , C ), y hay dos posibles asignaciones (Verdadero y Falso) para cada una de ellas. Por lo tanto, uno tieneposibilidades. En este pequeño ejemplo, se puede usar la búsqueda por fuerza bruta para probar todas las asignaciones posibles y comprobar si satisfacen la fórmula. Pero en aplicaciones reales con millones de variables y cláusulas, la búsqueda por fuerza bruta resulta poco práctica. La responsabilidad de un solucionador SAT es encontrar una asignación satisfactoria de forma eficiente y rápida aplicando diferentes heurísticas para fórmulas CNF complejas.
Regla de cláusula de unidad (propagación de unidades)
Si una cláusula tiene todos sus literales o variables menos uno evaluados como Falso, entonces el literal libre debe ser Verdadero para que la cláusula sea Verdadera. Por ejemplo, si la cláusula insatisfecha a continuación se evalúa conydebemos tener para que la cláusulaser cierto.
La aplicación iterativa de la regla de la cláusula de unidad se denomina propagación de unidad o propagación de restricción booleana (BCP).
Resolución
Consideremos dos cláusulasyLa cláusula, obtenido al fusionar las dos cláusulas y eliminar ambasy, se denomina resolvente de las dos cláusulas.
La resolvente es equisatisfacible con sus premisas (es decir, la resolvente es satisfacible si y solo si ambas premisas son satisfacibles).
Algoritmo
Formalización
Se puede utilizar una notación similar al cálculo de secuencias para formalizar muchos algoritmos de reescritura, incluido CDCL. Las siguientes son las reglas que un solucionador de CDCL puede aplicar para demostrar que no existe una asignación satisfactoria o para encontrar una, es decir:y cláusula de conflicto. [ 6 ]
Propagar Si una cláusula en la fórmulatiene exactamente un literal sin asignaren, con todos los demás literales en la cláusula asignados como falsos en, extenderconEsta regla representa la idea de que una cláusula actualmente falsa con solo una variable sin definir obliga a que esa variable se defina de tal manera que toda la cláusula sea verdadera; de lo contrario, la fórmula no se cumplirá .
Decide si un literalestá en el conjunto de literales dey ningunoniestá en, luego decide sobre el valor de verdad dey extendercon la decisión literalEsta regla representa la idea de que, si no estás obligado a realizar una tarea, debes elegir una variable para asignar y anotar cuál fue la asignación elegida, para que puedas volver atrás si la elección no dio como resultado una asignación satisfactoria .
Conflicto Si existe una cláusula contradictoriade tal manera que sus negacionesestán en, establecer la cláusula de conflictoaEsta regla representa la detección de un conflicto cuando todos los literales en una cláusula se asignan a falso bajo la asignación actual.
Explicar si la cláusula de conflictoes de la forma, hay una cláusula antecedenteyse asignan antesen, luego explique el conflicto resolviéndolocon la cláusula antecedente. Esta regla explica el conflicto al derivar una nueva cláusula de conflicto que está implícita en la cláusula de conflicto actual y en una cláusula que provocó la asignación de un literal en la cláusula de conflicto.
Salto hacia atrás Si la cláusula de conflictoes de la formadónde, luego retrocede al nivel de decisióny asignary establecerEsta regla realiza un retroceso no cronológico al volver a un nivel de decisión implícito en la cláusula de conflicto y afirmar la negación del literal que causó el conflicto en un nivel de decisión inferior .
Se pueden agregar cláusulas de aprendizaje a la fórmula .Esta regla representa el mecanismo de aprendizaje de cláusulas de los solucionadores CDCL, donde las cláusulas conflictivas se vuelven a agregar a la base de datos de cláusulas para evitar que el solucionador vuelva a cometer el mismo error en otras ramas del árbol de búsqueda.
:=\Phi \cup \{C\}}}{\text{ (Aprender)}}}
Estas 6 reglas son suficientes para el CDCL básico, pero las implementaciones modernas de solucionadores SAT también suelen añadir reglas heurísticas adicionales para recorrer el espacio de búsqueda de forma más eficiente y resolver los problemas SAT más rápidamente.
Las cláusulas Forget Learned se pueden eliminar de la fórmula.para ahorrar memoria. Esta regla representa el mecanismo de olvido de cláusulas, donde se eliminan las cláusulas aprendidas menos útiles para controlar el tamaño de la base de datos de cláusulas.indica que la fórmulasin la cláusulaaún implica, significadoes redundante. :=\Phi '}}{\text{ (Olvidar)}}}
Reiniciar El solucionador se puede reiniciar restableciendo la asignación.a la tarea vacíay estableciendo la cláusula de conflictoaEsta regla representa el mecanismo de reinicio, que permite al solucionador salir de un espacio de búsqueda potencialmente improductivo y volver a empezar, a menudo guiado por las cláusulas aprendidas. Cabe destacar que las cláusulas aprendidas se conservan incluso después de los reinicios, lo que garantiza la finalización del algoritmo .
Visualización
El aprendizaje de cláusulas basado en conflictos funciona de la siguiente manera.
- Selecciona una variable y asígnale el valor Verdadero o Falso. Esto se denomina estado de decisión. Recuerda la asignación.
- Aplicar propagación de restricciones booleanas (propagación de unidades).
- Construye el gráfico de implicación .
- Si existe algún conflicto:
- Encuentra el corte en el gráfico de implicación que condujo al conflicto.
- Derive una nueva cláusula que sea la negación de las asignaciones que llevaron al conflicto.
- Retroceda de forma no cronológica ("salto hacia atrás") al nivel de decisión apropiado, donde se asignó la primera variable involucrada en el conflicto.
- De lo contrario, continúe desde el paso 1 hasta que se hayan asignado todos los valores a las variables.
Ejemplo
Un ejemplo visual del algoritmo CDCL: [ 5 ]
Primero, elige una variable de ramificación, concretamente x1 . Un círculo amarillo significa una decisión arbitraria.
Ahora aplicamos la propagación unitaria, lo que resulta en que x4 debe ser 1 (es decir, verdadero). Un círculo gris indica una asignación forzada de variable durante la propagación unitaria. El gráfico resultante se denomina gráfico de implicación .
Elija arbitrariamente otra variable de ramificación, x3 .
Aplique la propagación de unidades y encuentre el nuevo grafo de implicación.
Aquí, las variables x8 y x12 se ven obligadas a ser 0 y 1, respectivamente.
Elige otra variable de ramificación, x2 .
Encuentra el gráfico de implicación.
Elige otra variable de ramificación, x7 .
Encuentra el gráfico de implicación.
¡Se ha detectado un conflicto!
Encuentra el corte que provocó este conflicto. A partir de ese corte, encuentra una condición conflictiva.
Toma la negación de esta condición y conviértela en una cláusula.
Agregue la cláusula de conflicto al problema.
Salto hacia atrás no cronológico al nivel de decisión apropiado, que en este caso es el segundo nivel de decisión más alto de los literales en la cláusula aprendida.
Retroceda y ajuste los valores de las variables en consecuencia.
Lo completo
DPLL es un algoritmo sólido y completo para SAT, es decir, una fórmula ϕ es satisfacible si y solo si DPLL puede encontrar una asignación satisfactoria para ϕ. Los solucionadores SAT de CDCL implementan DPLL, pero pueden aprender nuevas cláusulas y retroceder de forma no cronológica. El aprendizaje de cláusulas con análisis de conflictos no afecta ni la solidez ni la completitud. El análisis de conflictos identifica nuevas cláusulas mediante la operación de resolución. Por lo tanto, cada cláusula aprendida puede inferirse a partir de las cláusulas originales y otras cláusulas aprendidas mediante una secuencia de pasos de resolución. Si cN es la nueva cláusula aprendida, entonces ϕ es satisfacible si y solo si ϕ ∪ {cN} también es satisfacible. Además, el paso de retroceso modificado tampoco afecta la solidez ni la completitud, ya que la información de retroceso se obtiene de cada nueva cláusula aprendida. [ 7 ]
Aplicaciones
La principal aplicación del algoritmo CDCL se encuentra en diferentes solucionadores SAT, entre los que se incluyen:
- MiniSAT
- Zchaff SAT
- Z3
- Glucosa [ 8 ]
- Muchos SAT, etc.
El algoritmo CDCL ha hecho que los solucionadores SAT sean tan potentes que se están utilizando eficazmente en varias áreas de aplicación del mundo real, como la planificación de IA, la bioinformática , la generación de patrones de prueba de software, las dependencias de paquetes de software, la verificación de modelos de hardware y software y la criptografía .
Algoritmos relacionados
Los algoritmos relacionados con CDCL son el algoritmo de Davis-Putnam y el algoritmo DPLL . El algoritmo DP utiliza refutación por resolución y presenta un posible problema de acceso a la memoria. Si bien el algoritmo DPLL es adecuado para instancias generadas aleatoriamente, resulta inadecuado para instancias generadas en aplicaciones prácticas. CDCL es un enfoque más potente para resolver estos problemas, ya que su aplicación requiere menos búsqueda en el espacio de estados en comparación con DPLL.
DPLL: sin aprendizaje y con retroceso cronológico.
CDCL: aprendizaje de cláusulas basado en conflictos y retroceso no cronológico.
Obras citadas
- ^ Marqués-Silva, Joao; Lynce, Inés; Malik, Sharad (29 de enero de 2009). "Solucionadores SAT de aprendizaje de cláusulas basadas en conflictos". En Biere, Armin; Heule, Marijn; van Maaren, Hans; Walsch, Toby (eds.). Manual de Satisfacibilidad . Publicaciones SAGE, limitadas. pag. 127.ISBN 9781607503767.
- ↑ JP Marques-Silva; Karem A. Sakallah (noviembre de 1996). "GRASP: un nuevo algoritmo de búsqueda para la satisfacibilidad". Resumen de la Conferencia Internacional IEEE sobre Diseño Asistido por Computadora (ICCAD) . págs. 220–227 . CiteSeerX 10.1.1.49.2075 . doi : 10.1109/ICCAD.1996.569607 . ISBN 978-0-8186-7597-3.
- ↑ JP Marques-Silva; Karem A. Sakallah (mayo de 1999). "GRASP: Un algoritmo de búsqueda para la satisfacibilidad proposicional" (PDF) . IEEE Transactions on Computers . 48 (5): 506– 521. doi : 10.1109/12.769433 . Archivado del original (PDF) el 4 de marzo de 2016. Recuperado el 29 de noviembre de 2014 .
- ↑ Roberto J. Bayardo Jr.; Robert C. Schrag (1997). "Uso de técnicas de análisis retrospectivo de CSP para resolver instancias SAT del mundo real" (PDF) . Actas de la 14.ª Conferencia Nacional sobre Inteligencia Artificial (AAAI) . págs. 203–208 .
- 1 2 En las imágenes a continuación, "" se utiliza para denotar "o", la multiplicación para denotar "y", y un sufijo "" para denotar "no".
- ↑ "Wayback Machine" (PDF) . mathweb.ucsd.edu . Archivado del original (PDF) el 19 de mayo de 2024. Consultado el 2 de octubre de 2025 .
{{cite web}}: La cita utiliza un título genérico ( ayuda ) - ↑ Marques-Silva, Joao; Lynce, Ines; Malik, Sharad (febrero de 2009). Manual de satisfacibilidad (PDF) . IOS Press. pág. 138. ISBN 978-1-60750-376-7.
- ↑ "Página principal de la glucosa" .
Referencias
- Martin Davis; Hilary Putnam (1960). "Un procedimiento computacional para la teoría de la cuantificación" . J. ACM . 7 (3): 201– 215. doi : 10.1145/321033.321034 . S2CID 31888376 .
- Martin Davis; George Logemann; Donald Loveland (julio de 1962). "Un programa informático para la demostración de teoremas". Communications of the ACM . 5 (7): 394– 397. doi : 10.1145/368273.368557 . hdl : 2027/mdp.39015095248095 . S2CID 15866917 .
- Matthew W. Moskewicz; Conor F. Madigan; Ying Zhao; Lintao Zhang; Sharad Malik (2001). "Chaff: ingeniería de un solucionador SAT eficiente" (PDF) . Actas de la 38.ª Conferencia Anual de Automatización del Diseño (DAC) . págs. 530–535 .
- Lintao Zhang; Conor F. Madigan; Matthew H. Moskewicz; Sharad Malik (2001). "Aprendizaje eficiente basado en conflictos en un solucionador de satisfacibilidad booleana" (PDF) . Actas de la Conferencia Internacional IEEE/ACM sobre Diseño Asistido por Computadora (ICCAD) . págs. 279–285 .
- Presentación: "Resolución de problemas SAT: De Davis-Putnam a Zchaff y más allá", a cargo de Lintao Zhang. (Varias imágenes se han tomado de su presentación).
- Problemas de satisfacibilidad
- solucionadores SAT