例如,逻辑表达式( a && b ) (两者a都有b布尔值)_可以写成!(!a || !b)。这不是说&&“没必要”吗?这是否意味着 _所有 逻辑表达式都只能使用||and !?
( a && b )
a
b
!(!a || !b)
&&
||
!
是的,正如其他答案所指出的那样,由||和组成的运算符集在功能上!是完整的。这是一个建设性的证明,展示了如何使用它们来表达布尔变量A和之间的所有十六种可能的逻辑连接B:
A
B
A || !A
!A || !B
!B || A
!A || B
A || B
!B
!A
!(!A || B) || !(A || !B)
!(!A || !B) || !(A || B)
!(A || B)
!(!A || B)
!(!B || A)
!(!A || !B)
!(A || !A)
注意 NAND 和 NOR 本身在功能上都是完整的(可以使用上面相同的方法证明),所以如果你想验证一组运算符在功能上是完整的,证明你可以表达 NAND 或 NOR 就足够了用它。
下面的图表显示了上面列出的每个连接词的维恩图:
[来源]