Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
sav08:dpll_algorithm_for_sat [2008/03/12 21:55] vkuncak |
sav08:dpll_algorithm_for_sat [2013/04/17 17:34] 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 === | === Lower Bounds on Running Time === | ||
Line 123: | Line 131: | ||
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]]): | 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]] | ||
- |