我们知道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
)编写。为什么选择其中两个?任何的想法?
答案 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)中的哪一个来解决这个具体的例子?
单位子句传播用于解决此示例。并且由于公式的对称性,选择不同顺序的分割文字将导致相同的结果。