现在的位置: 首页 > 综合 > 正文

卡诺图简介

2012年01月29日 ⁄ 综合 ⁄ 共 10000字 ⁄ 字号 评论关闭

     本章中我们将介绍一种更简单的化简方法,卡诺图
(有时也称为K图)。这是一种用图表形式来找出用于乘积项和表达式中的最佳乘积项的方法(用于最简SOP表达式中的"最佳"乘积项称为质含项,稍后会对其
定义进行详细说明)。卡诺图最多可用于6个变量函数的化简,最佳适用范围是对含3到4个变量函数的化简。尽管该方法并不保证能得到最简答案,但使用该方法
几乎总是可以得到最简式。我们对该方法稍加改动(没有任何难度)即可求得最简POS表达式,还可完成对含无关项问题以及对多输出问题的处理。

其他方法见Alan Marcovitz所写的Introduction to Logic Design, Second Edition一书McGraw-Hill, 2005。

3.1  卡诺图简介(1)

本节中我们将介绍两、三及四变量卡诺图的布局方式。卡诺图中的每一个小方块表示函数中的一个最小项。因此,一个两变量卡诺图由4个小方块组成,三变量卡诺图由8个小方块组成,而四变量卡诺图由16个小方块组成。

卡诺图3.1中给出了两变量卡诺图的三种表示形式。我们可以看到卡诺图是按照一定规则排列的,例如,在卡诺图3.1中右上角的小方块对应的就是A=1且B=0,最小项2。

卡诺图3.1  两变量卡诺图

 

由函数的最小项和式填写卡诺图时,应在同式中所含最小项编号相同的小方块中填1,其余添0或不填。若函数中有无关项,则在与无关项相应的小方块中添×。卡诺图3.2即是在含上述两种情况下写卡诺图的示例。

卡诺图3.2  卡诺图表示函数

 

三变量卡诺图有8个小方块排列在一个矩形框,如卡诺图3.3 所示。

卡诺图3.3  三变量卡诺图

 

注意,卡诺图中的最后两列并不是按照数字的顺序写的,这是卡诺图设计中的最关键的技巧。将卡诺图按照这种方式排列,图中相邻的最小项方块可使用合并律进行合并。

 

示例3.1

 

同样,位于卡诺图两端的列(或卡诺图是4行时位于两端的行)也可以合并。因此,

 

若我们将卡诺图中的列按照数字顺序写出,如卡诺图3.4所示(其中仅将m2和m4对应的最小项表达式写出),显然图中的相邻项不能进行合并:

卡诺图3.4  不正确的卡诺图排列

 

但是我们不能将其化简为一个乘积项。

两个最小项和合并后得到的乘积项在卡诺图中是用两个相邻的1表示的。示例3.1中的合并项如卡诺图3.5所示。

有时将卡诺图画成如卡诺图3.6所示的竖向可能会更方便(即写成两列四行的形式)。不管卡诺图的形式如何,得到的结果都是相同的。

如卡诺图3.7所示,对成对的列(在那些有四列的卡诺图中)进行标注对读图非常有帮助。根据标注,可清楚地看到在方块4和6中的1是在A列 行(即不在C行中),对应的乘积项为 。

卡诺图3.5  两组最小项和对应的乘积项

卡诺图3.6  竖向的三变量卡诺图

卡诺图3.7  含列标注的卡诺图

 

四变量卡诺图有16个小方块,是按照4×4形式排列的,如卡诺图3.8所示。

同三变量卡诺图一样,相邻方块中的1(最上最下行以及最左最右列也认为是相邻的)对应一个乘积项(使用P9a进行合并)。示例3.2中给出3个这种乘积项。

卡诺图3.8  四变量卡诺图

 

示例3.2

 

到目前为止,我们给出的所有乘积项都是使用P9a将两个最小项合并后得到的对应乘积项。这些乘积项仅消去了一个字母,即在三变量函数中得到的是两字母乘积项,四变量函数中得到的是三字母乘积项。下面我们来看卡诺图3.9中给出的4个1为一组的卡诺图。

在左边的卡诺图中,我们圈出两组,一组对应的乘积项为 ,另一组对应的乘积项为AC。显然,在得到的两个乘积项上能使用P9a,得到

 

卡诺图3.9  4个1为一组的卡诺图

 

如右边的卡诺图所示,这是4个1组成的一个矩形。通常情况下,由4个1组成的矩形对应的乘积项会消去两个字母(即在三变量函数中得到的是一字母乘积项,四变量函数中得到的是两字母乘积项)。

可从这些最小项中提取公因子 ,得到

 

可以看到,括号中的和就是变量 、 的所有最小项的和,结果肯定为1。因此,只需一步就能得到最终的结果。实际上,可以对P9增加一条补充性质,为

 

该补充性质的证明只需反复使用P9即可。首先对前两项使用P9,然后对后两项使用P9,最后再对前面两次得到的结果使用P9,具体过程如下:

 

卡诺图3.10中给出了四变量问题中含4个1为一组的情况的示例。

卡诺图3.10  4个1为一组的情况示例

 

根据图确定所对应乘积项的最简单的方法就是通过确定所有1在图中所在的行和列。因此,在第一张图中,由于左边的一组1全位于00( )列,因此其对应的乘积项为。另外一组的1位于11和10列,这两列的公因子是A(对应A);此外组中的1是位于01和11两行,这两行的公因子是D。因此,该组1对应的乘积项为AD。中间这张图中,1是在00和10列中,得到 ;且在01和11行中,得到D,因此其对应的乘积项为。(顺便说一下,该项也在第一张图中出现,只是我们未将其圈为一组。)最后一张图中,四个角对应的乘积项为 

(由于所有的1位于00或10列以及00或10行)。中间一组对应的乘积项为BD。当然,我们通过代数法也能得到这些乘积项,首先写出最小项,然后成对使
用P10a,再对得到的乘积项使用P10a(如在三变量示例中的化简过程所做)。然而使用卡诺图可省去我们做代数运算。

两个四个一组的相邻项可用类似的方法组成一个8个方块一组的形式(可消去3个字母)。卡诺图3.11中给出了两个这样的组的示例。左侧的图对应的项是 ,右侧的图对应的项是

卡诺图3.11  8个1一组的卡诺图

 

我们可以将所有的函数用卡诺图表示。若已经知道函数中所含的最小项,可直接利用它们填写卡诺图,或者可以将函数写成SOP形式,按每个乘积项对应的卡诺图中的位置进行填写。

3.1  卡诺图简介(3)

示例3.3

写出下面给出函数的卡诺图。

 

函数F的卡诺图如下,函数中的乘积项已圈出。每一个两字母乘积项对应卡诺图中的两块(因为一个变量已经消去)。 项在10列,AC项在C=1行,11、10列(其变量A值为1的位置)。最后,最小项 对应一块,位置在01( )列,C=0行。

 

我们也可以首先将函数F扩展成最小项和的形式,得到的结果与上相同。

 

删掉重复项并重新排序

然后使用最小项编号填写卡诺图,得到相同的结果。

 

下面我们给出一些与卡诺图相关的术语的定义。函数的蕴含项是指函数用SOP表达式表示时其中的一个乘积项,即当蕴含项为1时,函数值为1(当然,不
管有几个蕴含项,函数值都为1)。从卡诺图中来看,一个蕴含项就是一个1,2,4,8…(2的幂)个1组成的矩阵块。该矩阵块中的值不能有0。所有的最小
项均是蕴含项。

看函数F的卡诺图图3.12。第二张图中圈出了四个2个一组的蕴含项,第三张图中圈出了另外两个2个一组的蕴含项以及4个一组的蕴含项。

卡诺图3.12  举例说明定义

 

函数F的蕴含项是:

 

函数F的任何一个SOP表达式都是蕴含项的和。事实上,我们必须选择足够多的蕴含项,从而使F中的所有1都至少被一个蕴含项包括在内。这样的一个SOP表达式有时也称为函数F的盖子,有时我们也会说一个蕴含项覆盖了对应的最小项(例如,ACD覆盖了m11和m15)。

蕴含项必须是矩形的,而且矩形框中1的数目必须是2的幂。因此,示例3.4的卡诺图不能用一个蕴含项覆盖,而是用两个蕴含项来覆盖(最简形式)。

示例3.4

 

G含有三个最小项,分别是ABC'D、ABCD和ABCD',组成一个矩形。图中给出的已经是最简形式,即
,因为这是一个3个1为一组的矩形,而不是2个或4个1为一组。同样,H中除含有与G中相同的最小项外还多一个最小项A'BC'D;它是4个一组,但不是
一个矩形。如图中所示,其最简表达式为 。(注意, 也是G的一个蕴含项,但其所包含的1已经包含在其他项中了。)

本原蕴含项指的是一个蕴含项(从图的角度来看)中包含的项不能再扩大来包含其他蕴含项。例如,一个2个1组成的矩形不是另一个4个1组成的矩形的一部分。卡诺图3.13中已将函数F的所有的本原蕴含项圈出,它们是A'B'C'D'、 、ABD以及CD。注意,m0是唯一一个不属于其他组的最小项,而其他的四个2个1一组的蕴含项均是4个1一组的蕴含项的一部分。

卡诺图3.13  本原蕴含项

 

从代数的角度来看,若从蕴含项中消去一个字母则将不是蕴含项的蕴含项称为本原蕴含项。从这个角度来看,A'B'C'D'为本原蕴含项,因为
B'C'D'、A'C'D'、A'B'D'以及A'B'C'都不是蕴含项(即,若从该项中删去一个字母后得到的项对于某些输入组合其值为1,而函数值为
0)。而ACD不是本原蕴含项,因为当我们删掉
后,得到的项CD仍然是一个蕴含项。(当然,用图形的方法来确定哪些蕴含项是本原蕴含项比用删去字母试的这种代数法要简单得多。)

使用卡诺图的目的是帮助我们找到最简SOP表达式(我们定义的最简是指乘积项(蕴含项)数最少且在蕴含项数相同的情况下,所含字母数最少的表达式。
然而我们需要做的仅仅是找到本原蕴含项。为什么呢?假设我们找到一个不是本原蕴含项的蕴含项,则其一定包含在一个更大的蕴含项,本原蕴含项中。而且大的蕴
含项(比如4个1的蕴含项与2个1的蕴含项相比)中字母更少。因此含有不是本原蕴含项的项的答案不是最简答案。(例如,CD含两个字母而ACD有三个字
母。)此外,更大的蕴含项可覆盖更多的1,这就意味着可能会减少所需的项数。

本质蕴含项是指一个本原蕴含项中包含的项没有完全被其他本原蕴含项包含。(若我们在卡诺图中圈出函数所有的本原蕴含项,本质蕴含项是指那些至少有一
个1没有被其他本原蕴含项圈去的本原蕴含项。)在卡诺图3.13给出的示例中,A'B'C'D'、ABC'以及
是本质蕴含项,而ABD不是。本质蕴含项是那些在所有最简SOP表达式中都会用到的项。这里要注意的是,最简答案中常常会有某些蕴含项(甚至是在有多个最
简答案的表达式中均出现的蕴含项)并不是本质蕴含项。当由该蕴含项覆盖的1可通过其他方式由其他蕴含项覆盖时就会出现这种情况。在第3.2节中我们将会看
到这样的示例。

3.2  使用卡诺图得到最简乘积项表达式(1)

本节中,我们将介绍用卡诺图来得到最简SOP表达式的方法。尽管该方法也有一定的试探性,但对于三变量或四变量问题,我们可以保证能得到最简SOP
表达式(或者当答案不止一个时,我们也可以得到多个最简SOP表达式)。(该方法对五变量或六变量问题同样有效,但我们在三维表现能力有限。我们将在第
3.6节中详细讨论五变量问题的卡诺图。)

在寻找蕴含项的过程中,我们应该从那些在图中最孤立的1开始。孤立是指其相邻的块中很少(或没有)有1。在一个变量为 的卡诺图中,每一个方块都有 个相邻块。卡诺图3.14中给出了三变量及四变量卡诺图的示例。

卡诺图3.14  三变量及四变量卡诺图中的相邻块

 

用卡诺图化简函数的方法1:

1. 找出所有的本质蕴含项,在卡诺图中将其圈出,并在使其成为本质蕴含项的项上用星号(★)标注。这样做的目的是检查是否已将卡诺图中所有的1均圈出。最快的办法是从最孤立的1开始检查,即从那些相邻块为1最少的块开始检查。

2. 找到足够的蕴含项来覆盖函数。这里有两个标准:

a. 所选的本原蕴含项要覆盖尽可能多的新的1(即那些还没有被选定的本原蕴含项所覆盖的1)。

b. 避免留下未覆盖的孤立的1。

什么是"足够"常常非常明显。例如,有5个未覆盖的1,且没有能覆盖两个以上1的本原蕴含项,则我们最少需要三个蕴含项。有时,三个也未必够,但一般情况下是够的。

下面我们将给出几个使用该方法的示例。首先我们看到的示例是用来说明定义的。

示例3.5

如图所示,m0没有相邻块为1,即它( )是一个本原蕴含项。事实上,由于没有其他本原蕴含项能覆盖到该项,它也是一个本质蕴含项(最小项是本原蕴含项的情况常常出现)。我们下一个要看的是m12,因为它只有1个相邻块为1。这两个1用本原蕴含项 覆盖。事实上也没有其他本原蕴含项覆盖m12,因此 为本质蕴含项。(当一个最小项只有一个相邻块为1时,这组对应的项是一个本质蕴含项)。到此为止,卡诺图变为:

 

 

此时,卡诺图中还未被覆盖的1组成一个4个一组的1,CD。那些两个相邻块一组的1均是这个组的一部
分。这种情况在4个一组的蕴含项中常会出现。(某些块,例如m15有超过两个相邻块为1。)CD是本质蕴含项,这是因为没有其他本原蕴含项覆盖m3、m7
或m11。当该组被圈出后,我们已经将函数覆盖:

 

结果为:

 

在本示例中,当我们找到本质蕴含项时就将其圈出。所有的1均被一个(或几个)本质蕴含项覆盖。我们不需要进行步骤2。其中可能有某些本原蕴含项是无用的(如本例中的ABD)。

示例3.6

我们从最孤立的1,m11开始。它只能被2个的组 覆盖。由m0、m3或m12可知 为另一个本质蕴含项。因为这些项均没有被其他本原蕴含项所覆盖,其中的任何一项都能确定 是一个本质蕴含项。第二张图中画出了这两组的圈图。

 

此时还有两个1未被覆盖。每一块都能用两个不同的本原蕴含项覆盖,但用一项将其覆盖的方法只有一个,如下面给出的第一张图所示。

因此,该函数的最简乘积项和为

 

另外两个本原蕴含项分别为 和XYZ,在后一张图中用灰色圈出。由于它们没有覆盖新的1,因此是冗余项。尽管最简式中必须用到 ,但它不符合本质蕴含项的定义,因为其覆盖的每一个1都能被其他本原蕴含项覆盖。

3.2  使用卡诺图得到最简乘积项表达式(2)

下面我们来看在第2章中"无法化简"的示例(示例2.2)。

示例3.7

 

用代数法处理时,我们首先将前两个最小项分为一组。但如我们在下面给出的左边的图中所示,这样分组后
其余的两个1将无法合并,因此得到一个3项的结果。此外,
也不是一个本质蕴含项。若我们用卡诺图的方法,可以看到选择如右图所示的两个本质蕴含项,覆盖了所有的最小项并得到了最终的结果。

 

有些时候,在选完所有的本质蕴含项后,对剩余的1的覆盖方法有两种,但只有一种能得到最简答案,如示例3.8所示。

示例3.8

 

第一张图中给出了函数的卡诺图,第二张图中圈出了所有的本质蕴含项。我们可以看到,每一个1(用星号★标注的)只能被已圈出的本质蕴含项覆盖。(这从最后一张图中可清楚地看到,其中剩余的两个本质蕴含项也已被圈出。)

 

只有一个1(m8)未被本质蕴含项所覆盖。它有两种覆盖方法,由一个4个一组的蕴含项覆盖(灰色表示)或一个2个一组的蕴含项覆盖(浅灰色表示)。显然,4个一组的蕴含项得到的答案少一个字母,按照这种覆盖方法得到的函数为

 

在四变量卡诺图中,当我们要判断是否可以通过4个1一组的蕴含项中的某个1确定该蕴含项是本质蕴含项时,只需看该1相邻块是否有两个0。若其为0的
相邻块数少于2,则这个1要么是8个1一组的蕴含项中的一块,要么就是2个1一组或1个1一组的一块。如示例3.8所示,m2和m14都有两个相邻块为
0,因此覆盖它们的两个蕴含项均是本质蕴含项。相反,m0、m4、m8以及m12都只有一个相邻块为0,它们也分别被两个或三个本原蕴含项所覆盖。

我们下面来看一些多个最简答案的示例,首先从三变量函数开始。

示例3.9

现在我们来看第2章中用来说明最小项乘积和定义的表达式:

 

左边是该函数的卡诺图,右边的图中圈出了该函数的两个本质蕴含项。

 

在找到这两个本质蕴含项后,m7仍未被覆盖。下面的卡诺图中给出了两种答案。

 

示例3.10

 

第一张图为该函数的卡诺图,第二张图中圈出了该函数的两个本质蕴含项,此时得到的表达式为:

 

尽管此时m2看上去更孤立,它仍可被 (与m6)或
(与m10)所覆盖。在选定本质蕴含项后,剩余的三个1都可被两个不同的本原蕴含项覆盖。由于此时仍有三个1需要被覆盖(在选定本质蕴含项后),且剩余的
本原蕴含项均是2个1一组的,因此每个蕴含项都有三个字母,我们至少需要两个以上这种蕴含项。事实上,用两个以上的本原蕴含项覆盖剩余的1的方法有三种。
使用第一条标准,我们选择覆盖了两个新的1的本原蕴含项 ,如下面最左边的图所示。

 

此时,只剩m10,它可被 覆盖,如上面中间的图所示。使用两个蕴含项完成覆盖的方法是相似的,如上面最右边的图所示。(我们也可以选择 ,但与前面得到的答案中的一个重复。)因此,得到的三种答案为:

 

三个最简答案都需要4项,10字母。

3.2  使用卡诺图得到最简乘积项表达式(3)

此时,有必要做一些说明。若函数有多个最简答案(正如本例所示),这些最简答案的项数和字母数均相同。任何有更多项或更多字母的答案都不是最简答案。

示例3.11

这是我们称为"别贪心"的一个示例。

 

看到该图时,有些人可能首先会圈出4个1一组的项(用浅色圈出)。但该项不是一个本质蕴含项,当我们圈出所有的本质蕴含项后可以明显地看到,该项中的4个1都被本质蕴含项所覆盖。因此,该函数的最简答案是:

 

示例3.12

 

第二张图中已将四个本质蕴含项圈出,还有三个1未被覆盖:

 

已被覆盖的块在最右边的图中用阴影表示。该图中还给出了其他的三个本原蕴含项,这些蕴含项都是4个1一组的。这些本原蕴含项每一个都覆盖剩余的三个1中的两个(没有两个是相同的)。因此可用 中的任意两项来完成最简SOP表达式。最终下面给出的三个答案都是正确的。

 

示例3.13

 

本题中在找到本质蕴含项后还有多个1未被覆盖。第一张图中圈出了所有的本原蕴含项,其中只有YZ是本
质蕴含项,还有5个1需要被覆盖。由于其他的本原蕴含项都是2个1一组的,因此我们需要三个以上的本原蕴含项。这些1是以链状排列的,每个本原蕴含项相互
连接。若我们只是要得到一个答案,我们可以按照步骤2的原则,选择两个都覆盖新1的项,然后再选择一项来覆盖剩余的1。中间的图就是按照这种思路得到的一
种答案,其中首先选择的项是 。若我们想找出所有的答案,从链的一端开始是最有条理的一种方法(如右边的图所示)。(我们也可以从另一端m13开始,得到的答案相同。)我们可以用 ,如上图中用灰色表示的项,或 (如下面的图所示)来覆盖m1。若我们选,则用来覆盖其余的1的项的选择只有一种。因此,得到的答案是:

 

下面三张图是使用 来覆盖m0得到的答案。

 

在选择 后,还有三个1未被覆盖。我们可以选择上面答案中用到的两项(如左图所示),或用 来覆盖m8 (右边的两张图)。因此,得到的其他三种答案为:

 

我们现在来看两个不含本质蕴含项的例子。最典型的示例如示例3.14所示。

示例3.14

 

这里有8个1,所有的本原蕴含项都是2个1一组。因此,最简答案中至少有四项。其中没有明显可以入手的位置,因此我们任意选了一项 。按照步骤2的原则,此时我们应该再选一个覆盖两个新1的项,并按此过程进行,直到所有的1均被覆盖为止。如第三张图所示,我们可以选择从 项开始,也可从 项(最后一行的组)开始。我们将会看到,选择从项开始也会用到项。重复覆盖的过程,我们可以得到如左图所示结果。

 

注意,若我们从 开始,再选择一个未包括在该答案中的本原蕴含项(如
),如中间的图所示,则会留下一个孤立的未被覆盖的1(这样就需要再加一项)以及另外三个1(还需要两个以上的项)。包含这样两项的答案将会含有五个乘积
项(由于我们已经找到一个只含四项的答案,这个答案显然不是最简答案)。

本题的另外一种答案是从 开始,唯一的另外一个覆盖m0的本原蕴含项。按照与上面同样的步骤,得到最右边的图以及另外的一种最简答案。

3.2  使用卡诺图得到最简乘积项表达式(4)

示例3.15

 

所有的本原蕴含项都是4个1一组。由于有13个1,因此我们最少需要四项。左边的图中将所有的本原蕴含项圈出,共有九个。那些只被圈过一次的1对应的项是本质蕴含项。本题中没有满足该条件的项,因此本题中没有本质蕴含项。

 

我们选择一个只被两个本原蕴含项覆盖的最小项入手,比如m0。如第二张图所示,我们选择 来覆盖该项。然后,我们可找到两个都是覆盖4个新的1的本原蕴含项,如右图所示。此时仅剩m13未被覆盖。如左图所示,可用三种本原蕴含项来覆盖该项。现在,我们得到三个最简答案。

 

若用 来覆盖m0 (除 外唯一可覆盖m0的项),如中间图所示,我们可以找到另外两个覆盖4个新的1的本原蕴含项,而且仅剩m13未被覆盖。这样,我们又能找到三个最简答案(与前面找到的覆盖m13的三项相同)。

 

因此,本题共有6个最简答案:

 

从第一个括号中取一组乘积和项再加第二个括号中的一项即是一个最简答案。我们可以确定得到的就是最简答案,因为得到的答案含有的本原蕴含项数就是该题所需的最少的本原蕴含项数。尽管没有尝试其他的组合形式,但本题已经没有其他最简答案了。

例题1中有大量的示例。示例3.16是一个极复杂的四变量问题,其所需项超过了我们的预估。

示例3.16

 

该函数有一个本质蕴含项(一个最小项)及10个1,其他所有的本原蕴含项都是2个1一组。中间的图中圈出了所有的13个本原蕴含项。注意,每个1(除m0外)都可被两或三项所覆盖。

由于有十个1被2个1一组的本原蕴含项所覆盖,因此这十个1至少需要五项,再加

项。右边图中给出了覆盖该函数的一种方法的开始的几步。每一项都覆盖了两个新的1且没有留下孤立的1。(位于顶部的1可与m14合并。)剩余的四个1需要
三项来覆盖。经过几种不同方式的尝试后,我们可以确定覆盖该函数的项数不可能少于七项。本题有32个不同的最简答案。下面给出其中的几个,其余的留作习题
(习题2p)。

3.3  无关项

找出含无关项的函数的最简答案的方法与我们之前介绍的方法没有明显的不同。我们需要对本原蕴含项的定义进行一些修改,并阐明本质蕴含项的定义。

本原蕴含项指的是一个1,2,4,8个1或×组成的矩形不能再扩大来包含其他蕴含项。因此,从找本原蕴含项的角度来看,将×(无关项)作为1对待。

本质蕴含项是指一个本原蕴含项中至少有一个1没有被其他本原蕴含项所覆盖。无关项(×)不能使一个本原蕴含项成为本质蕴含项。

现在,我们使用上节中给出的方法。当我们对函数做到最简式时,可能有些函数含×,有些不含。但我们不关心函数中是否含无关项。

示例3.17

 

我们首先给出函数的卡诺图,将函数中包含的最小项用1表示,无关项用×表示。如中间的图所示,我们找
到两个本质蕴含项。这两项中用星号标注的1均不能再被其他本原蕴含项所覆盖。函数中剩下的两个1用灰色的圈圈出。该项不是一个本质蕴含项,因为其中的每一
个1均能被其他本原蕴含项所覆盖(如右边的图中浅灰色圈出的部分)。但若我们不使用 ,则需再加两项。因此,该函数的最简答案为:

 

是最简答案中未使用的本原蕴含项。注意,若无关项为1的话,我们还需要一项来覆盖m8,得到的答案为

 

而若所有的无关项为0时,函数将变为

 

在两种情况下,得到的答案都比这些项为无关项(或将其中两项变为1,另外两项变为0)时复杂。

示例3.18

 

如中间的图所示,该函数有两个本质蕴含项,分别为 和 。由4个无关项组成的组
是一个本原蕴含项(因为它满足由四个1或×组成的矩形的条件),但不是一个本质蕴含项(因为它没有覆盖一个未被其他本原蕴含项所覆盖的1)。当然,我们不
会使用完全由无关项组成的本原蕴含项,因为这样只会在和中增加一项。剩余的三个1需要两个2个1一组的项,因此该函数有三个最简答案,每个答案都有4
项,11个字母:

 

关于示例3.18要说明的一件非常重要的事是得到的三个表达式并不是完全相等的。第一个式中将无关项m0作为1使用,而后面两式(这两式相等)中将
该项作为0使用。这种情况对含无关项的函数会常常出现。得到的答案中对于原函数的某些特定部分(1和0的部分)是相同的,但对于无关项,不同的答案可能会
将这些项作为不同的值来处理。卡诺图3.15给出了示例3.18中得到的三个函数的卡诺图。

卡诺图3.15  示例3.18的不同的解法

 

示例3.19

 

在左边的图中,我们圈出了唯一的本质蕴含项 以及三个答案中都会用到的项ab。
(该项一定会用到,因为除该项外,唯一一个可覆盖m15的本原蕴含项是bcd, 项不仅多用一个字母,而且也没有覆盖到
不能覆盖到的含1的项。)剩余的三个1需要两项,其中一项必须是2个1一组的项(覆盖m3),另外一项是能覆盖到m10的4个1一组的项。第二张图中,我
们给出了用 项的两个答案;右边的图中,我们给出了用 项的答案。因此,我们得到的答案为:

 

不论原函数中是否含无关项,无关项为我们解决函数卡诺图问题提供了另外一种方法。

用卡诺图化简函数的方法2:

1. 找出所有的本质蕴含项。

2. 将所有由本质蕴含项覆盖的1用×代替。这样就将未被覆盖的1突出出来。

3. 然后选择足够的其他本原蕴含项(同方法1)。

步骤2可行的原因是由于那些被本质蕴含项覆盖的1可能还会用到(作为覆盖新的1项的一部分),但并非一定会用到。因此,一旦我们选定本质蕴含项,其覆盖的最小项实质上就是无关项了。

示例3.20

 

我们首先找到两个本质蕴含项,

抱歉!评论已关闭.