当且仅当每个切换函数都可以通过其中的操作来表达时,一组操作被称为功能完备或通用的。一组布尔函数在功能上是完整的,如果所有其他布尔函数都可以从这个集合中构造出来并提供一组输入变量,例如
- Set A = {+,*,'(OR,AND,complement)} 功能完备。
- Set B = {+,’} 功能完备
- Set C = {*,’} 功能完备
Post 函数完备性定理——重要的封闭函数类:
- T 0 – 所有保零函数的类,例如 f(0, 0, … , 0) = 0。
- T 1 – 所有 1 保留函数的类,例如 f(1, 1, … , 1) = 1。
- S – 自对偶函数类,例如 f(x 1 , … ,x n ) = ¬ f(¬x 1 , … , ¬x n )。
- M – 单调函数类,例如:{x 1 , … ,x n } ≤ {x 1 , … ,x n },如果 x i ≤ y i
如果 {x 1 , … ,x n } ≤ {x 1 , … ,x n }
然后 f(x 1 , … ,x n ) ≤ f(x 1 , … ,x n ) - L – 线性函数类,可以表示为: f(x 1 , … ,x n ) = a 0 + a 1 ·x 1 + … + a n ·x n ; a i {0, 1}。
定理——一个布尔函数系统在功能上是完备的,当且仅当对于五个定义的类 T 0 、T 1 、S、M、L 中的每一个,都有一个不属于该类的 F成员。
这些是最小的功能完整的运算符集 –
一个元素——
{↑}、{↓}。
两个要素——
三要素——
功能完备性的例子——
- 检查函数F(A,B,C) = A’+BC’ 在功能上是否完整?
- 说明——让我们首先将所有变量都设为“A”,这样它就变成了
F(A,A,A) = A’+AA’ = A’—-(i)
F(B,B,B) = B’+BB’ = B’—(ii)
现在用 F(A,A,A) 代替变量 ‘A’ 和 F(B,B,B) 代替变量 ‘C’
F(F(A,A,A),B,F(B,B,B)) = (A’)’+B.(B’)’ = A+B—(iii)
from (i) 和 (ii) 补体是派生的, from (iii)运算符’+’ 是派生的,因此如果函数包含 {+,’} 则该函数在功能上是完整的。 - 检查函数F(A,B) = A’+B 在功能上是否完整?
- 说明——让我们首先将所有变量都设为“A”,这样它就变成了
F(A,A) = A’+A = 1—-(i)
F(B,B) = B’+B = 1—(ii)
F(A,0) = A’+0 = A’—(iv)
现在用 F(A,0) 代替变量 ‘A’
F(F(A,0),B) = (A’)’+B = A+B—(iii)
from (iv) 派生了补码, from (iii) 派生了运算符“+”,因此如果函数包含 {+,’}部分功能完整,则该函数在功能上是完整的。 - 检查函数F(A,B) = A’B 在功能上是否完整?
- 说明——让我们首先将所有变量都设为“A”,这样它就变成了
F(A,A) = A’.A’ = 0—-(i)
F(A,0) = A’.0 = 0—(ii)
F(A,1) = A’.1 = A’—(iv)
现在用 F(A,1) 代替变量 ‘A’
F(F(A,1),B) = (A’)’*B = A*B—(iii)
from (iv) 派生补码, from (iii)运算符’*’ 派生,因此如果函数包含 {*,’}部分功能完整,则该函数在功能上是完整的。注 –如果通过替换“0”或“1”使函数在功能上完整,则称为部分功能完整。
- 检查函数F(A,B) = A’B+AB’ (EX-OR) 在功能上是否完整?
- 说明——让我们首先将所有变量都设为“A”,这样它就变成了
F(A,1) = A’.1 + A.0 = A’—-(i)
F(A’,B) = AB + A’B’–(ii)
F(A’,B’) = AB’ + A’B–(iii)
F(A,B’) = A’B’ + AB—(iv)
所以没有办法根据条件得到 {+,*,’} 。所以EX-OR 在功能上是不完整的。 - 考虑操作
f(X, Y, Z) = X’YZ + XY’ + Y’Z’ 和 g(X’, Y, Z) = X’YZ + X’YZ’ + XY
以下哪一项是正确的?
(A) {f} 和 {g} 在功能上都是完备的
(B) 只有 {f} 在功能上是完整的
(C) 只有 {g} 在功能上是完整的
(D) {f} 和 {g} 在功能上都不完整 - 说明 –参见 GATE CS 2015 (Set 1) |第 65 题
参考 –
Post 的功能完备性定理
功能完整性 – 维基百科