![]() | ||
In computer science, Conflict-Driven Clause Learning (CDCL) is an algorithm for solving the Boolean satisfiability problem (SAT). Given a Boolean formula, the SAT problem asks for an assignment of variables so that the entire formula evaluates to true. The internal workings of CDCL SAT solvers were inspired by DPLL solvers.
Contents
- Background
- Boolean satisfiability problem
- Unit clause rule unit propagation
- Boolean constraint propagation BCP
- Resolution
- DP algorithm
- DPLL algorithm
- CDCL Conflict Driven Clause Learning
- Example
- Completeness
- Applications
- Related algorithms
- References
Conflict-Driven Clause Learning was proposed by Marques-Silva and Sakallah (1996, 1999 ) and Bayardo and Schrag (1997 )
Background
Background knowledge about the following issues is needed to have a clear idea about the CDCL algorithm.
Boolean satisfiability problem
The satisfiability problem consists in finding a satisfying assignment for a given formula in conjunctive normal form (CNF).
An example of such a formula is:
( (not A) or (not C) ) and (B or C),or, using a common notation:
where A,B,C are Boolean variables,
A satisfying assignment for this formula is e.g.:
since it makes the first clause true (since
This examples uses three variables (A, B, C), and there are two possible assignments (True and False) for each of them. So one has
Unit clause rule (unit propagation)
If an unsatisfied clause has all but one of its literals or variables evaluated at False, then the free literal must be True in order for the clause to be True. For example, if the below unsatisfied clause is evaluated with
Boolean constraint propagation (BCP)
The iterated application of the unit clause rule is referred to as unit propagation or Boolean constraint propagation (BCP).
Resolution
Consider two clauses
DP algorithm
The DP algorithm has been introduced by Davis and Putnam in 1960. Informally, the algorithm iteratively performs the following steps until no more variables are left in the formula:
See more details here DP Algorithm
DPLL algorithm
Davis, Putnam, Logemann, Loveland (1962) had developed this algorithm. Some properties of this algorithms are:
See more details at DPLL algorithm. An example with visualization of DPLL algorithm having chronological backtracking:
CDCL (Conflict-Driven Clause Learning)
The main difference between CDCL and DPLL is that CDCL's back jumping is non-chronological.
Conflict-Driven Clause Learning works as follows.
Example
A visual example of CDCL algorithm:
Completeness
DPLL is a sound and complete algorithm for SAT. CDCL SAT solvers implement DPLL, but can learn new clauses and backtrack non-chronologically. Clause learning with conflict analysis does not affect soundness or completeness. Conflict analysis identifies new clauses using the resolution operation. Therefore, each learnt clause can be inferred from the original clauses and other learnt clauses by a sequence of resolution steps. If cN is the new learnt clause, then ϕ is satisfiable if and only if ϕ ∪ {cN} is also satisfiable. Moreover, the modified backtracking step also does not affect soundness or completeness, since backtracking information is obtained from each new learnt clause.
Applications
The main application of CDCL algorithm is in different SAT solvers including:
The CDCL algorithm has made SAT solvers so powerful that they are being used effectively in several real world application areas like AI planning, bioinformatics, software test pattern generation, software package dependencies, hardware and software model checking, and cryptography.
Related algorithms
Related algorithms to CDCL are the DP and DPLL algorithm described before. The DP algorithm uses resolution refutation and it has potential memory access problem. Whereas the DPLL algorithm is OK for randomly generated instances, it is bad for instances generated in practical applications. CDCL is a more powerful approach to solve such problems in that applying CDCL provides less state space search in comparison to DPLL.