一般我们都是采用公式法或者卡诺图的方法。不过用程序自动化来实现,这两种方法都不合适。在计算逻辑代数里面有个叫做Quine-McCluskey(奎因-麦克拉斯基)算法的,用于化简逻辑公式的,并且它还给出了检查布尔函数是否达到了最小化形式的确定性方法。不过这个算法是NP-完全的,因此运行时间随输入变量个数呈指数增长。比如逻辑变量个数有几十个的时候,这时候找到最简表达式已经是不太可能,只能通过启发式算法(Espresso算法)来寻求次优解。
根据输入端的变化,写出输出端的状态,真值表就出来了。相反,从输出端倒推回输出端,就是逻辑表达式
第一种方法:以真值表内输出端“1”为准
第一步:从真值表内找输出端为“1”的各行,把每行的输入变量写成乘积形式;遇到“0”的输入变量上加非号。 第二步:把各乘积项相加,即得逻辑函数的表达式。
第二种方法:以真值表内输出端“0”为准
第一步:从真值表内找输出端为“0”的各行,把每行的输入变量写成求和的形式,遇到“1”的输入变量上加非号。
第二步:把各求和项相乘,即得逻辑函数表达式。
最后化简,在实际运用过程中,哪个方法简便就采用哪种。
将真值表中函数值等于1的变量组合选出来;对于每一个组合,凡取值为1的变量写成原变量,取值为0的变量写成反变量,各变量相乘后得到一个乘积项;最后,把各个组合对应的乘积项相加,就得到了相应的逻辑表达式。 例1120 试根据表Z1112,写出相应的逻辑表达式。
从表中看到,当A=0、B=1时,Y=1;当A=1、B=0时Y=1。因此可写出相应的逻辑表达式为:
Y=B+A
真值表还可用来证明一些定理。
例1121 试用真值表证明摩根定理=+
证:设上式左边 =Y1,右边=Y2,分别列出相应的真值表如表Z1113所示:
比较Y1和Y2,证得=+。
例1122 试用真值表证明A+AB=A。
证:令A+AB=Y1,A=Y2,列出真值表如Z1114所示。
比较Y1和Y2,证得A+AB=A。