Conflict-Driven-Clause-Learning
CDCL is an algorithm that extends the Davis-Putnam-Logemann-Loveland (DPLL) method to solve SAT problems in an exploratory manner, and when a Conflict occurs, it analyzes the cause and learns a new Clause to streamline the next search.
- CDCL is very widely used in the implementation of SAT solvers, and modern solvers (e.g., MiniSAT, Glucose) are based on this algorithm.
Operation Flow
- Decision: The decision is made by the
- Assume values for variables and construct a search tree.
- Propagation: The
- Determine values for other variables based on assumed values (unit propagation).
- Conflict Detection.
- When discrepancies occur, the clauses causing the discrepancies are analyzed.
- Learning (Clause Learning):.
- The causes of discrepancies are analyzed and new clauses (study clauses) are generated.
- This ensures that the same inconsistencies are not explored again.
- Backtracking:.
- Go back forward from where the discrepancy occurred and attempt a new branch.
- CDCL performs "nonchronological backtracking" based on the cause of the discrepancy, rather than simple backtracking.
This page is auto-translated from /nishio/Conflict-Driven-Clause-Learning using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. I'm very happy to spread my thought to non-Japanese readers.