异或 (XOR):从真值表到布尔表达式
异或 (XOR) 的真值表,以及它定义的公式:标准 DNF、标准 CNF 和最简形式。
| 行 | p | q | 输出 |
|---|---|---|---|
| 1 | ⊥ | ⊥ | ⊥ |
| 2 | ⊤ | ⊥ | ⊤ |
| 3 | ⊥ | ⊤ | ⊤ |
| 4 | ⊤ | ⊤ | ⊥ |
这些形式是如何从表中读出的
- 4 行中有 2 行输出为 ⊤:2, 3。每一行为 DNF 贡献一个最小项。
- 4 行中有 2 行输出为 ⊥:1, 4。每一行为 CNF 贡献一个最大项。
析取范式(积之和)
(p ∧ ¬q) ∨ (¬p ∧ q)
合取范式(和之积)
(p ∨ q) ∧ (¬p ∨ ¬q)
常见问题
关于逻辑计算器使用方式的常见问题解答
“从真值表到表达式”这个工具是做什么的?
它让计算器反过来运行。你逐行点击来设定真值表的输出列,它就生成一个真值表恰好如此的公式,形式可以是析取范式(若干合取式的析取)或合取范式(若干析取式的合取)。
析取范式和合取范式有什么区别?
析取范式是积之和:输出为真的每一行对应一个合取式,全部用“或”连接。合取范式是和之积:输出为假的每一行对应一个析取式,全部用“与”连接。两者描述同一个函数,所以哪个对你的表格更短就用哪个——输出大多为假时析取范式较短,大多为真时合取范式较短。
合成工具最多支持几个变量?
最多五个,也就是 32 行的表格。每加一个变量行数就翻倍,超过五个之后,这张表就不再是能靠手工设定的东西了。
为什么生成的表达式这么长?
范式是一行一行搭起来的:每需要覆盖一行,就有一个包含全部变量的项。所以它的长度跟着真值表走,而不是跟着公式背后的想法走。它按构造保证正确,但不保证简洁。想缩短的话,把它放到计算器里打开,那里会列出等价形式,包括一个最小化的析取范式。
能得到一个公式的简化版本吗?
可以。把它输入计算器,看真值表下方的等价形式。其中既有依代数定律改写得到的形式,也有从真值表读出的析取范式和合取范式,以及一个最小化的析取范式。