DPLL和Satisfiablity例子?

时间:2016-02-20 11:54:32

标签: algorithm logic satisfiability sat

我们知道DPLL算法是回溯+单位传播+纯文字规则。

我有一个例子。有一个例子可以用DPLL解决以下可满足性问题。如果为变量赋值“0”在为变量赋值“1”之前,使用Unit Clause (UC)Pure Literal (PL)中的哪一个来解决这个具体的例子?

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

在此示例中,使用其中两个(PL and UC)编写。为什么选择其中两个?任何的想法?

1 个答案:

答案 0 :(得分:4)

以下是DPLL如何用于解决您的示例公式:

  • 单位传播是不可能的,因为没有单位条款。
  • 纯文字规则不适用,因为没有文字只会出现正面或仅有负面影响。
  • 要应用拆分规则,请选择一些文字,例如A
    • 设置A=0并传播。这将导致
      {1 \/ B \/ C}, {0 \/ ~B \/ C}, {0 \/ B \/ ~C}, {0 \/ B \/ C}
      == {~B \/ C}, {B \/ ~C}, {B \/ C}
    • 单位传播纯文字仍不适用。
    • 为下一个文字B应用拆分规则
      • 设置B=0并传播:
        {1 \/ C}, {0 \/ ~C}, {0 \/ C}
        == {~C}, {C}
      • 此公式由两个单位子句组成,因此可以应用单位传播,从而产生{},因此我们会回溯。
      • 设置B=1并传播。 {0 \/ C}, {1 \/ ~C}, {1 \/ C}
        == {C}
      • 同样,单位传播适用,但现在导致空公式,这是完全可以满足的。
  

使用Unit Clause(UC)或Pure Literal(PL)中的哪一个来解决这个具体的例子?

单位子句传播用于解决此示例。并且由于公式的对称性,选择不同顺序的分割文字将导致相同的结果。