卡诺图在化简逻辑布尔代数上的运用

先导概念和定理

逻辑(布尔)代数: 定义略.
5个公理和8个定理:见前一篇文章.现在记下几个比较重要的:
(A+B)(A+Bˉ)=A(A+B)\cdot(A+\bar{B})=A
AB+AˉC+BC=AB+AˉCA\cdot B+\bar{A}\cdot C+B\cdot C=A\cdot B+\bar{A}\cdot C
A+B=AˉBˉ\overline{A+B}=\bar{A}\cdot\bar{B}


反演和对偶

反演

是将运算符号对调,变量取反,0-1取反,保持运算顺序不变得到的反演函数Fˉ\bar{F}.

对偶

是将运算符号对调,0-1取反,变量不变,保持运算顺序不变得到的对偶函数FF'.

性质

对于反演函数,有F(x,y,...)= Fˉ(x,y,...)F(x,y,...)=-\ \bar{F}(x,y,...):对于相同的变元指派方案,两式的值相反.
对于对偶函数,有if F(x,y,...)=G(x,y,...),F=Gif\ F(x,y,...)=G(x,y,...),F'=G':如果在某指派方案下函数FF值等于函数GG,则在该指派方案F=GF'=G'.
对偶和反演定义相近,其不同点和性质要注意区分.


卡诺图

接下来说说本文的核心部分卡诺图.

卡诺图是真值表的变形,它可以将有n个变量的逻辑函数的2n2^{n}个最小项组织在给定的长方形表格中,同时为相邻最小项(相邻与项)运用邻接律化简提供了直观的图形工具。但是,如果需要处理的逻辑函数的自变量较多(有五个或更多的时候,此时有些项就很难圈了),那么卡诺图的行列数将迅速增加,使图形更加复杂;此外,卡诺图的图形化表示方法不适合直接用于算法的设计,因此计算机辅助工程工具一般不会使用卡诺图来进行逻辑函数的优化。1

本质上是一个简化逻辑表达式的工具,我们从一些理论基础入手.

最大项和最小项

最大项和最小项是逻辑函数的两种标准形式.
最小项有如下特征:

  1. 具有n个变量的函数的“与项”包含全部n个变量;
  2. 每个变量都以原变量或反变量形式出现一次,且仅出现一次;

而最大项是:

  1. 具有n个变量的函数的“或项”包含全部n个变量;
  2. 在每个或中,每个变量都以原变量或反变量形式出现一次,且仅出现一次;

比如对于nn变量,其最大项就是i=1nxi\sum_{i=1}^n x_{i}最小项就是i=1nxi\prod _{i=1}^n x_{i}.
其中任何一个变元均可随意指派0或1.

最大项和最小项的性质:

  1. 对于一个最大项,有且只有一个指派使得式子值为0.此时每个单元的表征值2为0.
  2. 对于一个最大项,有且只有一个指派使得式子值为1.此时每个单元的表征值为1.

另外,最大项和最小项是反演关系.

标准与-或式

  • 就是若干个最小项相或.只要有一个表征值是1,值就为1.
  • 其中每个子句(即每个最小项)包含了所有的变元

"相邻"和格雷码

为了具有理论依据在利用卡诺图化简时,这里提出相邻和格雷码的概念.

格雷码(循环二进制单位距离码)是任意两个相邻数的代码只有一位二进制数不同的编码,它与奇偶校验码同属可靠性编码。3

也就是对于最小项来说,以正元为1,负元为0,形成的0/1串,如果有且只有一位相反,那就是所谓的相邻.都相邻的编码组称格雷码.

卡诺图的绘制

  • 将变元按顺序尽量分为两组;
    像这样:
    卡诺图在化简逻辑布尔代数上的运用
  • 按照相邻的规则进行表头的绘制.对于两变量两变量的图,表头的排布应该是00,01,11,10.注意,最后一个和第一个也是相邻*关系.
  • 对单元格进行编号,编号规则为:将ABCD形成的二进制码转化为十进制,就是编号.

运用卡诺图的化简

  1. 将要化简的式子转化为标准与-或式;
  2. 按照编码将1填入格子:0=非,1=是;
  3. 进行划圈归类.按照下列规则:
    1. 圈内只能有1,不能有0;
    2. 圈大小限定为2n2^n个;
    3. 允许不完全重叠;
    4. 不能遗漏1;
    5. 要求只能相邻的可以划进一个圈(注意跨边界的相邻);
    于是像这样:
    卡诺图在化简逻辑布尔代数上的运用
  4. 将圈内子句按照定理AB+ABˉ=AA\cdot B+A\cdot \bar{B}=A合并,写出化简后的表达式.每一个圈写一个最简与项,规则是,取值为l的变量用原变量表示,取值为0的变量用反变量表示,将这些变量相与.然后将所有与项进行逻辑加,即得最简与—或表达式.
  5. 整理得到最后结果.

Conclusion

就如开始所说,卡诺图是一个比较直观简便的方法化简标准式或者接近标准式.但是其主要缺陷在于是图形化化简方法,难以用计算机实现自动化.


  1. Stephen Brown, Zvonko Vranesic. Fundamentals of Digital Logic with Verilog Design. McGraw-Hill Education. ISBN 0-07-283878-7. ↩︎

  2. 这是一个个人为了表述方便的非标准名词.意思是某种真值指派下该变元(正或反)所在式子中表现出来的值.比如对于aˉ\bar{a},当a指派为1时,表征值为0. ↩︎

  3. https://zh.wikipedia.org/wiki/%E6%A0%BC%E9%9B%B7%E7%A0%81 ↩︎