Logic 避免NP完全性的限制布尔公式
我有布尔公式A和B,想检查“A->B”(A意味着B)在多项式时间内是否为真 对于完全通用的公式A和B,这是NP完全的,因为“A->B”为真“与“不(A->B)”相同,不可满足 我的目标是找到有用的限制,这样多项式时间验证是可能的。我还想找到O(n)或O(n logn)限制(n是某种长度| A |或| B |)。我宁愿限制B而不是A 一般来说,我知道以下几类“更简单”的布尔公式:Logic 避免NP完全性的限制布尔公式,logic,boolean-logic,model-checking,satisfiability,Logic,Boolean Logic,Model Checking,Satisfiability,我有布尔公式A和B,想检查“A->B”(A意味着B)在多项式时间内是否为真 对于完全通用的公式A和B,这是NP完全的,因为“A->B”为真“与“不(A->B)”相同,不可满足 我的目标是找到有用的限制,这样多项式时间验证是可能的。我还想找到O(n)或O(n logn)限制(n是某种长度| A |或| B |)。我宁愿限制B而不是A 一般来说,我知道以下几类“更简单”的布尔公式: (可重命名)Horn公式可以在线性时间内求解(它们是CNF形式,最多有一个正变量) DNF形式的所有公式都很容易检查
- (可重命名)Horn公式可以在线性时间内求解(它们是CNF形式,最多有一个正变量)
- DNF形式的所有公式都很容易检查
- 2-SAT是CNF公式,每个子句最多有2个变量,可在线性时间内求解
- XOR-SAT是用XOR代替OR的CNF公式。它们可以通过O(n^3)中的高斯消去法求解
- 如果| B |是常数且很小,我可以列举出B的所有解,并检查它们是否产生了真a
- 类似地,如果| A |是常数且很小,我可以列举A的所有解,并检查它们是否产生假B
- 如果B在DNF中,那么我可以将A转换为CNF,这将使“(不是A)或B”DNF在线性时间内是可解的
- 对于一般的B,如果| B |在O(log | A |)中,我可以将B转换为DNF并用这种方法求解
- 在DNF中
- 在CNF和Horn公式中(Horn SAT)
- 在CNF和二元公式(2-SAT)中
- 在CNF和算术公式中(XOR的CNF)
这绝对是一个有趣的结果。然而,我不知道如何使用它来解决我的问题。这些属性适用于公式“A->B”,而不是直接适用于A和B。我不确定A和B的含义是什么。我认为至少XOR CNF”(不是A)或B“polinomial不是吗?