2

We know DPLL algorithm is backtracking + unit propagation + pure literal rule.

I have an example. There is one example to solve following Satisfiability problem with DPLL. if assign of "0" to variables is prior to assign "1" to variables, Which of Unit Clause (UC) or Pure Literal (PL) is used to solve this specific example?

{~A \/ B \/ C}, {A \/ ~B \/ C}, {A \/ B \/ ~C}, {A \/ B \/ C}

In this example wrote by using two of them (PL and UC). why two of them is selected? any idea?

max taldykin
  • 12,459
  • 5
  • 45
  • 64
  • You know that backtracking is involved. If the rest was only UP and PL and there would nothing to backtrack to because it wouldn't make any choices that might be wrong. – harold Feb 20 '16 at 13:55
  • @harold You can use PL or UC. you can use one of them. –  Jun 24 '16 at 00:28
  • @user4249446 of course you can, but you can't *only* use them, in general. – harold Jun 24 '16 at 17:58
  • @harold so you agree with me that in this specific example you can use both of them? –  Jun 24 '16 at 23:54

1 Answers1

4

Here is how DPLL could be used to solve your example formula:

  • Unit propagation is not possible as there are no unit clauses.
  • Pure literal rule is not applicable as there is no literals that occur only positively or only negatively.
  • To apply splitting rule select some literal, e.g. A.
    • Set A=0 and propagate. This will result in
      {1 \/ B \/ C}, {0 \/ ~B \/ C}, {0 \/ B \/ ~C}, {0 \/ B \/ C}
      == {~B \/ C}, {B \/ ~C}, {B \/ C}
    • Unit propagation and pure literal are still not applicable.
    • Apply splitting rule for the next literal B.
      • Set B=0 and propagate:
        {1 \/ C}, {0 \/ ~C}, {0 \/ C}
        == {~C}, {C}
      • This formula consists of two unit clauses so it is possible to apply unit propagation, which results in {} so we backtrack.
      • Set B=1 and propagate. {0 \/ C}, {1 \/ ~C}, {1 \/ C}
        == {C}
      • Again, unit propagation is applicable, but now results in empty formula which is trivially satisfiable.

Which of Unit Clause (UC) or Pure Literal (PL) is used to solve this specific example?

Unit Clause propagation is used to solve this example. And due to symmetry of the formula, choosing splitting literals in different order will lead to the same result.

max taldykin
  • 12,459
  • 5
  • 45
  • 64
  • I'm sure PL and UC can solve this example :) but you are so expert –  Feb 20 '16 at 15:05
  • PL & UC are not enough as it is not possible to apply them without transforming the formula beforehand. Both work only if there are some special kind of clauses/literals. – max taldykin Feb 20 '16 at 15:23
  • Okey, after transforming you say UC solve. it means PL cannot apply ? –  Feb 20 '16 at 15:26
  • Yes, this formula is specially constructed in such a way that it is not possible to apply PL even if we try some other order of splitting literals or other order of applying rules: there is no way to partially assign literals to have some of the remaining literals to occur only positively or only negatively. – max taldykin Feb 20 '16 at 15:34
  • @maxtaldykin Your answer is very nice but wrong !!! I dont know why no one say your answer is wrong !! it's true until to last step, when you set B=1 you just have variable "C", you can use UC or PL. if you use UC, the remaining variable is "C" and C=true and finished. if you using PL because "C" in all places has the same, you can use PL and C=true. (i.e if somewhere you have C and somewhere you have ~c it cannot be applicable.) –  Jun 24 '16 at 00:26
  • @user4249446, thanks for your correction! I'll review my answer and try to fix it. – max taldykin Jun 24 '16 at 12:53