Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sav08:dpll_algorithm_for_sat [2008/03/12 18:34] vkuncak |
sav08:dpll_algorithm_for_sat [2013/04/17 17:35] vkuncak |
||
---|---|---|---|
Line 28: | Line 28: | ||
Note: for each unit clause and other clause we can perform unit resolution at most once (variable disappears) | Note: for each unit clause and other clause we can perform unit resolution at most once (variable disappears) | ||
* BCP is polynomial procedure | * BCP is polynomial procedure | ||
+ | |||
+ | We do not need to keep literals that are subset of existing ones: | ||
+ | <code> | ||
+ | def RemoveSubsumed(S : Set[Clause]) : Set[Clause] = | ||
+ | if there are C1,C2 in S such that C1 subset C2 | ||
+ | then RemoveSubsumes(S - {C2}) | ||
+ | else S | ||
+ | </code> | ||
+ | In particular, when we apply unit resolution, the original clause can be deleted. | ||
===== DPLL Recursively ===== | ===== DPLL Recursively ===== | ||
Line 33: | Line 42: | ||
<code> | <code> | ||
def DPLL(S : Set[Clause]) : boolean = | def DPLL(S : Set[Clause]) : boolean = | ||
- | val S' = BCP(S) | + | val S' = RemoveSubsumed(BCP(S)) |
if (emptyClause in S') then false | if (emptyClause in S') then false | ||
else if (S' has only unit clauses) then true | else if (S' has only unit clauses) then true | ||
Line 91: | Line 100: | ||
S' \vdash {\it false} | S' \vdash {\it false} | ||
\] | \] | ||
- | ++++Idea:| | ||
From | From | ||
\[ | \[ | ||
Line 111: | Line 119: | ||
Why can we modify resolution proof to move $p$ from assumption and put its negation to conclusion? | Why can we modify resolution proof to move $p$ from assumption and put its negation to conclusion? | ||
- | ++++ | + | |
+ | |||
+ | === Lower Bounds on Running Time === | ||
Observation: constructed resolution proof is polynomial in the running time of the DPLL algorithm. | Observation: constructed resolution proof is polynomial in the running time of the DPLL algorithm. | ||
Line 117: | Line 127: | ||
Theorem: for some formulas, shortest resolution proofs are exponential. | Theorem: for some formulas, shortest resolution proofs are exponential. | ||
- | This does not contradict P vs NP question, because there may be "better" proof systems than resolution. | + | This does not contradict that P vs NP question is open, because there may be "better" proof systems than resolution. |
- | Lower bounds for both resolution and a stronger system are shown here by proving that interpolants can be exponential, and that interpolants are polynomial in proof size: | + | Lower bounds for both resolution and a stronger system are shown here by proving that interpolants can be exponential, and that interpolants are polynomial in proof size (see [[Interpolants from Resolution Proofs]]): |
* Pavel Pudlák: [[http://citeseer.ist.psu.edu/36219.html|Lower Bounds for Resolution and Cutting Plane Proofs and Monotone Computations]] | * Pavel Pudlák: [[http://citeseer.ist.psu.edu/36219.html|Lower Bounds for Resolution and Cutting Plane Proofs and Monotone Computations]] | ||
- | |||
- | ===== DPLL Imperatively ===== | ||
- | |||
- | |||
- | Selecting order of variables. | ||
- | |||
- | Lemma learning. |