# 逻辑函数
设有 n 个 Boolean 变量 x1,x2,…,xn,则一个 逻辑函数 是一个映射
f:Bn→B
即,对于 n 个二值输入,其返回一个二值输出
逻辑函数可以用多种方式等价表达,将在接下来讲解
- Boolean 代数表达式
- 真值表
- 极大项与极小项组合
- Karnaugh 图
显然,对于 n 个变量的逻辑函数,其可能的输入组合数为 2n,这意味着其真值表有 2n 行
但是实际上,大部分逻辑函数并不需要穷举所有输入组合来表达,对于不关注的结果,可以在真值表中使用 * 或 - (don't care) 来表示
通过这种方式,可以实现逻辑函数的简化
示例
对于真值表
| x | y | z = f(x, y) |
|---|
| 0 | 0 | 1 |
| 0 | 1 | * |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
如果 ∗ 的值对计算毫无影响,可以任意选取,那么
- 令 f(0,1)=0,则逻辑函数为 f(x,y)=xy
- 令 f(0,1)=1,则逻辑函数为 f(x,y)=x
# 包含关系
对于两个逻辑函数 F,G,令
- A 为 F=1 的逆像
- B 为 G=1 的逆像
则
F 包含 G⟺F≥G⟺B⊂A
当 F 包含 G 时
- FG=0
- F+G=1
通过真值表可以简单判断包含关系
如果说 F 包含了 G,也就是 F≥G,那么意味着
- F=0 时,G=0
- G=1 时,F=1
可以直观里面为点集拓扑中连续映射的逆像性质
显然,包含关系作为一种偏序关系,满足自反性、反对称性和传递性
自然地,根据偏序关系可以定义极大极小关系 minimal element 和 maximal element
- F=1 为极大 ⟺ 对任意 G,若 G≥F 则 G=F
- F=0 为极小 ⟺ 对任意 G,若 G≤F 则 G=F
在布尔函数的偏序中,这些 minimal element 就是最小项(minterm)
# 极小项
称去掉 01 后的 S 中,仅针对特定输入为 1 的逻辑函数为 极小项 (Minterm) 「最小項」,记为 mi,其中 i 为该输入的十进制表示
对于三变量函数,由于输入组合共有 23=8 种,因此共有 8 个极小项
极小项不依赖于具体的逻辑函数,其定义与任意 n 维 Boolean 空间,成为类似 原子 的存在
所以,任意逻辑函数均可以表示为极小项的组合
对于任意逻辑函数,取其取值为 1 的所有输入组合所对应的极小项,将这些极小项进行逻辑或运算,即可得到该逻辑函数的表达式,这称为该逻辑函数的 和项标准式 (Sum of Minterms)
并且,极小项可以仅靠 AND 和 NOT 实现,因此添加 OR 运算后,和项标准式也称为 NOT-AND-OR 形式
示例
设有逻辑函数 f(x,y,z),其真值表如下,给出对应输入的极小项
| x | y | z | f(x,y,z) | 极小项 |
|---|
| 0 | 0 | 0 | 0 | xyz=m0 |
| 0 | 0 | 1 | 1 | xyz=m1 |
| 0 | 1 | 0 | 1 | xyz=m2 |
| 0 | 1 | 1 | 0 | xyz=m3 |
| 1 | 0 | 0 | 0 | xyz=m4 |
| 1 | 0 | 1 | 1 | xyz=m5 |
| 1 | 1 | 0 | 1 | xyz=m6 |
| 1 | 1 | 1 | 0 | xyz=m7 |
将 F 进行和项标准式表达
解
取值为 1 的输入组合对应的极小项 m1,m2,m5,m6,则
f(x,y,z)=m1+m2+m5+m6=xyz+xyz+xyz+xyz
# 极大项
同理
称去掉 10 后的 S 中,仅针对特定输入为 0 的逻辑函数为 极大项 (Maxterm) 「最大項」,记为 Mi,其中 i 为该输入的十进制表示
对于任意逻辑函数,取其取值为 0 的所有输入组合所对应的极大项,将这些极大项进行逻辑与运算,即可得到该逻辑函数的表达式,这称为该逻辑函数的 积项标准式 (Product of Maxterms)
与极小项 不同 的是,极大项仅靠 OR 和 NOT 实现,因此添加 AND 运算后,积项标准式也称为 NOT-OR-AND 形式
以下给出重要示例(异或)的表达式
异或函数 x⊕y:=xy+xy 会非常常见
示例
设有逻辑函数 f(x,y),其真值表如下,给出对应输入的极小项与极大项
| x | y | f(x,y) | 极小项 | 极大项 |
|---|
| 0 | 0 | 0 | xy=m0 | x+y=M0 |
| 0 | 1 | 1 | xy=m1 | x+y=M1 |
| 1 | 0 | 1 | xy=m2 | x+y=M2 |
| 1 | 1 | 0 | xy=m3 | x+y=M3 |
将 F 分别进行和项标准式与积项标准式表达
解
取值为 1 的输入组合对应的极小项 m1,m2,则
f(x,y)=m1+m2=xy+xy
取值为 0 的输入组合对应的极大项 M0,M3,则
f(x,y)=M0M3=(x+y)(x+y)
# 与非门
与非门是泛用逻辑门,可以实现任意逻辑函数
定义
NAND(x,y):=x∧y
真值表
| x | y | x∧y | NAND(x,y) |
|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
通过与非门
- NOT 门:x=NAND(x,x)
- AND 门:x∧y=NAND(x,y)
- OR 门:x∨y=NAND(x,y)
# Shannon 展开
设有逻辑函数 F(x1,x2,…,xn),则对于任意变量 xi,都有
F=xiFxi+xiFxi
其中
- Fxi:=F(x1,…,xi−1,1,xi+1,…,xn)
- Fxi:=F(x1,…,xi−1,0,xi+1,…,xn)
称为 Shannon 展开式
实际上,Shannnon 展开可以理解为在点 xi=1 和 xi=0 处对函数进行 分段,然后通过逻辑或将两段连接起来
F(x1,…,choicexi,…,xn)=truexiF(x1,…,true1,…,xn)+falsexiF(x1,…,false0,…,xn)
# 单极与单调
令逻辑函数 F(x1,x2,…,xn)
若对某变量 xi,有
xi≤yi⟹F(x1,…,xi,…,xn)≤F(x1,…,yi,…,xn)
则称 F 对变量 xi 是正的
也就是说,把 xi 从 0 变为 1,函数值不会下降
若 F 对所有变量均为正的,则称 F 是单调函数 (Monotone Function)
另外,若
- F(x1,…,0i,…,xn)≤F(x1,…,1i,…,xn) 对 xi 正
- F(x1,…,1i,…,xn)≤F(x1,…,0i,…,xn) 对 xi 负
则称 F 对变量 xi 是单极 (Unate) 的
若 F 对所有变量均为单极的,则称 F 是单极函数
单调⟹单极
# 对偶函数
对于逻辑函数 F(x1,x2,…,xn),定义其对偶函数为
Fd(x1,x2,…,xn):=F(x1,x2,…,xn)
即,将所有变量取反后计算函数值,再对结果取反
# 邻域关系
对于逻辑式 A
若 xA 与 xA 被 A 包含,那么意味着其可以被合并为 A
对于两个长度相同的二进制串 x=(x1,x2,…,xn) 与 y=(y1,y2,…,yn)
定义其 Hamming 距离为
d(x,y):=∣{i∣xi=yi,1≤i≤n}∣
也就是逐位比较,不同的位数的个数
其满足度量公理,称为真正的距离