命题逻辑推理:从SAT求解器到知识编译
1. 布尔函数赋值表
常见的布尔函数通过逻辑连接符(∨, ∧, →, ↔, ⊕ 和 ¬)定义,其赋值情况如下表所示:
| x | y | x ∨ y | x ∧ y | x → y | x ↔ y | x ⊕ y | ¬x |
| — | — | — | — | — | — | — | — |
| F | F | F | F | T | T | F | T |
| F | T | T | F | T | F | T | T |
| T | F | T | F | F | F | T | F |
| T | T | T | T | T | T | F | F |
2. SAT问题:寻找模型
当语义确定后,我们可以探讨对于给定公式 (f),是否存在一个解释 (I) 能使其满足(即 (\llbracket f \rrbracket_I = T))。若存在这样的解释 (I),则称 (I) 是 (f) 的一个模型,记为 (I \models f);反之,若 (\llbracket f \rrbracket_I = F),则称 (I) 证伪 (f),且 (I) 是 (f) 的一个反模型,记为 (I \not\models f)。我们关注的问题便是确定给定公式是否存在模型,即可满足性问题(SAT)。
直观来看,如果没有线索,我们可能需要逐个尝试 (2^{Var(f)}) 个模型,这显然是不可行的。例如,对于一个包含 260 个变量的公式,需要测试的 (2^{260}) 个模型数量超过了宇宙中粒子数量的常见估计值。然而,现代求解器能够在几分钟内处理包含数百万变量的公式,这使
超级会员免费看
订阅专栏 解锁全文
30

被折叠的 条评论
为什么被折叠?



