什么时候考虑布尔函数 "affine"

When is a boolean function considered "affine"

正如标题所说,我的问题如下:布尔函数什么时候是仿射的?我需要这个来检查是否有一些布尔函数弥补了一个足够的集合。

我找到了以下定义:

affine if f(x1,...,xn) = c0 ⊕ c1x1 ⊕···⊕ cnxn for some c0,...,cn ∈{0,1}

但我不太明白。有没有一些简单的方法,例如从事实中读取它 table 一个小函数?

考虑 f(x,y) = x ⊕ y

+------------+
|x  y  |  f  |
|1  1  |  0  |
|1  0  |  1  |
|0  1  |  1  |
|0  0  |  0  |
+------------+

这个内容中的f(x1...xn)是什么意思?

那 c0...cn 分别是什么?

提前致谢!

common definition 是:

基本上,输入是用异或求和的,除非相应的系数是假的。在您的表示法中,"c0" 将反转函数值。

要检查输入很少的函数,可以使用函数 table。在你的例子中:

x1 x2
x  y  f
1  1  0  =  c2 ⊕ c1 ⊕ c0
1  0  1  =       c1 ⊕ c0
0  1  1  =  c2      ⊕ c0
0  0  0  =            c0

从最后一行开始,c0 必须为 0。

在第 2 行和第 3 行插入 "c0=0",我们得到 "c1=1" 和 "c2=1"。

第一行结果是正确的。因此 "x ⊕ y" 实际上是 仿射 。 在这个简单的例子中,这可以通过检查直接说出来而不用 truth-table.