第1章 布尔函数的表示与结构分析
布尔函数是逻辑系统的基本表示形式, 因此, 也是本书的主要讨论对象, 研究它们的基本性质对逻辑系统的分析与控制的讨论至关重要. 除了逻辑系统, 布尔函数在编码等中也极其重要, 因此, 布尔函数有多种不同的表达形式. 在不同形式它们反映出不同的性质. 本章的目的, 是探讨布尔函数的不同表达形式、结构与基本性质.
逻辑矩阵是布尔函数的代数状态空间表示的基本形式, 因此, 也是研究布尔函数性质的基本工具.
逻辑函数指的是自变量与函数值均取自有限集的情况, 包括布尔函数 (即二值逻辑函数)、k 值逻辑函数及混合值逻辑函数. 布尔函数是基础, 因为它们不仅*简单、应用*广, 而且, 由于它们被研究的时间*久, 已知的结论也*多. 同时, 逻辑函数的表达和性质, 常可通过与布尔函数类似的方法处理. 布尔函数在计算机科学[119]、密码学[7, 17] 等领域中都有大量应用, 本章以矩阵半张量积为工具, 讨论布尔函数与本书相关的一些主要性质.
1.1 布尔函数的代数表示
1.1.1 伽罗瓦域上的逻辑函数
定义 1.1.1 设 p > 1 为一素数, 令
在 Zp 上定义加法和乘法如下:
(1.1.1)
那么, (Zp,+p, p) 就是一个域, 这种域称为伽罗瓦域.
当 p = 2 时 Z2 = D. 为方便计, 我们将 Z2 称为布尔域.
用 B(n 表示 n 个自变量的逻辑函数, P(Z2) 表示多项式布尔函数. 因为 Z2=D, 那么, Z2 上的运算能代替逻辑运算吗? 这是可以的.
命题 1.1.1 (+2, 2)是一个完备集, 因此, 任何一个布尔函数都可以用(+2, 2)表示出来. 换言之, 任何布尔函数均可用 Z2 上的多项式表示.
证明 只要一个完备集的每个算子能用多项式表示即可. 考虑, 它是经典逻辑的一个完备集. 所以只要它的元素能用 (+2, 2)表示, 则 (+2, 2)就是一个完备集. 用 (σ 表示逻辑函数 σ 的多项式形式:
(1.1.2)
记 P(Zp) 为 Zp 上的多项式. 那么, 其上的加、乘为 +p, p. 为方便计, 将其简记为 +, (或省去, 即.
例 1.1.1 设 ( 2 P(Z2).
(i) 直接计算可得
(1.1.3)
(ii) 令. 利用 (1.1.3) 可得
给定一个. 我们给 X 几个等价的表达形式:
(i) 逻辑形式
(1.1.4)
(ii) 向量形式
(1.1.5)
(1.1.6)
(iii) 自然数形式
(1.1.7)
注 1.1.1 逻辑变量的几种表达形式的等价性可从以下的转换式得到. 记.
(i) 逻辑形式 ) 向量形式: 见 (1.1.5)—(1.1.6).
(ii) 逻辑形式 ) 自然数形式: 见 (1.1.7).
(iii) 向量形式 ) 逻辑形式:
(1.1.8)
再利用 (1.1.5) 即得.
(iv) 向量形式 ) 自然数形式: 设, 则
(1.1.9)
(v) 自然数形式 ) 逻辑形式: 将 d = D(X) 表示成二进制形式, 记为 B(d).(如果 B(d) 只有 s < n 位, 则在前面补 n - s 个零, 仍记作 B(d)) 则
(1.1.10)
(因此, 逻辑形式也可称为二进制形式.)
(vi) 自然数形式 ) 向量形式: 设则
(1.1.11)
下面给一个转换的例子:
例 1.1.2 设.
(i) 设 d = 51, 那么
X = B(51) = (0, 0, 1, 1, 0, 0, 1, 1).
即 X1 = 0, X2 = 0, X3 = 0, X4 = 1, X5 = 0, X6 = 0, X7 = 1, X8 = 1.
(ii) 设 X = (1, 1, 0, 0, 1, 0, 1, 0), 那么
d = 27 + 26 + 23 + 21 = 202.
(iii) 设, 那么
给定一个布尔函数, 记该函数为 ((X1,X2, ,Xn). 通常它是逻辑函数表达式. 于是, 将它转化为其他表达式以便将逻辑运算转化为易于计算的代数运算就成了一个合理选择.
(i) 向量表达式: 令, 则存在一个逻辑矩阵使得
这是本书的主要方法.
(ii) 序列表示法: 把 X 用 d = D(X) 表示, 则 d = 0, 1, , 2n - 1. F 的序列表示法, 记作 F, 定义为
(1.1.12)
F也称为 F的序列向量.
这两种表示都是 ( 的完整表述, 因此, 它们必然是等价的. 下面验证这种等价关系.
定义 1.1.2 设为一行向量, 则 s 阶反序算子记作 RVs, 定义为
(1.1.13)
注 1.1.2 (i) 设 Y = (Y1, Y2, , Ys)T 为一列向量, 则定义
(1.1.14)
(ii)
(iii) 定义反序矩阵, 记作 MVs, 如下:
(1.1.15)
(iv) 设 X ∈ Rs 为一行向量, 则
设 Y ∈ Rs 为一列向量, 则
定义 1.1.3 设布尔函数 F 的结构矩阵为 MF , 则
(1.1.16)
称为 f 的结构向量.
由定义可知如下命题.
命题 1.1.2 设布尔函数 F 的序列向量为 F, 结构向量为 rF , 那么
(1.1.17)
于是, 不同表达式的转化就变得很简单了.
例 1.1.3 (i) 设 MF = δ2[1, 1, 2, 1, 2, 1, 1, 2], 那么
F = (0, 1, 1, 0, 1, 0, 1, 1).
(ii) 设 F = (1, 1, 0, 1, 1, 0, 1, 0), 那么
MF = δ2[2, 1, 2, 1, 1, 2, 1, 1].
1.1.2 布尔函数的多项式表示
对应于布尔变量的三种表达: 逻辑表达、向量表达及自然数表达, 我们也可以得到布尔函数的三种表达: 逻辑表达、向量表达 (代数状态空间表达式) 及多项式表达. 对于前两种表达方法及其转换, 我们已经非常熟悉了. 下面讨论, 如何得到布尔函数的多项式表达.
先讨论如何从逻辑表达式得到多项式表达式.
实际上, 例 1.1.1 已经讨论过这个问题了, 这里将它小结成一个算法.
算法 1.1.1 第一步:
由于是完备集, 任何逻辑算子都可用它们表示. 于是, 常用逻辑算子的多项式表达可知. 例如, 见 (1.1.3).
第二步: 一个一般的逻辑表达式都是由常见逻辑表达式复合而成的. 构造常见逻辑表达式的多项式形式的复合函数, 即可得一般逻辑表达式的多项式表示.
例 1.1.1 (ii) 就给出了这样的例子.
第三步: 将得到的复合多项式化简, 注意到 X + X = 0 及 XX = X, 就可以合并同类项和降次.
由上述算法可得如下结论:
命题 1.1.3 设, 那么, F 有如下多项式表达式:
(1.1.18)
再讨论如何从自然数表达式得到多项式表达式.
定义两个记号:
(i) 设 X, a 2∈ D, 定义
(1.1.19)
(ii) 设 X, c ∈ Dn, 定义
(1.1.20)
利用这些记号, 可以得到从函数的自然数表达式到多项式表达式的转换公式.
命题 1.1.4 设布尔函数的自然数表达式为 F = (F(0), F(1), , F(2n - 1)), 则
(1.1.21)
这里, B(i) ∈ Dn 是 i 的二进制表达式.
例 1.1.4 考虑
展开