布尔函数代数标准型的求法

布尔函数的代数标准型

  • 布尔函数的小项表示

布尔函数的小项表示可以由真值表直接得出,最小项表示如下:


其中ai为0表示xi取反,每个最小项的系数为对应真值表的值,可知x的每个状态只能使得唯一一个最小项为1,其余都为0,注意上式中只有与、或、非三种逻辑运算,由于各个最小项不能同时为1,所以上述或运算可以和异或等同(二进制加等同异或运算)。

上式其实就为平时我们从真值表直接得到的与或式,因此还可以通过逻辑表达式化简方法或卡诺图来得到最简与或式。其中化简常用的关系式有A+A'B=A+B(用分配律证明),

A+AB=A(A(1+B)=A),AB+A'C=AB+A'C+BC。

利用卡诺图化简的关键在于要按照字典顺序排列状态,而非二进制递增序列。画圈个数要少,圈要大,同时最简与或式不唯一。

值得注意的是,最简与或式的+,也即或,不能看做异或(除非小项表示和最简与或式相同),因为各项不是小项,可能同时为1.

  • 布尔函数的多项式表示

假设知道布尔函数的小项表示,则由于+(或)等同于异或,非等同于与1异或,因此可以直接将小项中的xi',转化为1+xi,这里的加为二进制加,也即异或运算,布尔函数多项式表达式为:

布尔函数代数标准型的求法_第1张图片

上述表达式中所有的加都可以看做二进制加。

  • 布尔函数的代数标准型(ANF)

把多项式中的单项式表示成如下形式:


其中

布尔函数代数标准型的求法_第2张图片

可以得到里德穆勒表示式:

上述表示方法实际上是对布尔函数多项式表达式系数的重新排列,按照二进制递增的顺序,其中表示系数的布尔函数的真值叫做里德穆勒谱,上述里德穆勒表示法其实也就是代数标准型的一种写法。由此可以看到,想要得到布尔函数代数标准型,关键就是找到表示里德穆勒谱的布尔函数。找到该函数真值的方法基于莫比乌斯反演,具体算法如下例:

布尔函数代数标准型的求法_第3张图片

算法首先将布尔函数的真值表存入数组,分别取其上半部分和下半部分,将两部分的异或重新赋值给下半部分,然后对上下两部分递归上述算法,直到每一部分只剩一位为止。最终得到的2^n长数组即为里德穆勒谱,表征了ANF的系数,由于输入状态都是按照二进制递增顺序排列,因此可以很容易的到ANF的代数次数。上述算法还有迭代版本:

布尔函数代数标准型的求法_第4张图片



上述公式引用于https://wenku.baidu.com/view/685c8d2e453610661ed9f47a.html

图表引用于Yang Mo-han, 杨默涵, Lai Xue-jia,等. 布尔函数代数次数的计算方法[C]// 中国密码学会2009年会. 2009.

Sihem Mesnager"Bent Funtions".

你可能感兴趣的:(布尔函数,代数,带书标准型,小项表示,最简与或式)