计算机智能化简多变量逻辑函数的算法分析

合集下载

2.5逻辑函数的化简(2011)

2.5逻辑函数的化简(2011)
= BC D + BC D = BD
消去B
11 10
结论: 1、 2 n 个最小项合并,消去n 个变量。 2、消去K圈中变量取值发生过 变化的量。保留取值没有变 化的量。
ABC D + ABC D + ABC D + ABC D
消去A、C
A BCD + ABCD + ABCD + A BCD + ABC D + ABC D + ABC D + ABC D = ACD + ACD + AC D + AC D = CD + C D = C
消去A、B、D
4、 用卡诺图化简逻辑函数 (1)求最简与或式 化简的步骤: • 作出逻辑函数的卡诺图; • 圈卡诺圈; • 将每个卡诺圈中的最小项合并成相应的与项。 圈卡诺圈的原则: 在卡诺图上,以最少的卡诺圈数和尽可能大的卡诺圈覆盖所有填1的 方格。(即:最小覆盖原则) 注释: • 将 2 n个相邻的填1方格圈起来,圈子尽可能大; • 所有填1格都必须被圈过,在此前提下K圈的个数尽可能少; • 任何一个填1格可以被不同的K圈多次圈过,但如果在一个K圈中, 所有的1格均已被别的K圈圈过,则该圈为多余的。
F = A BC + ABC + D + AD
AB CD
01
11
10
00 01
11 10
1 0 0 1
1 0 1 0
1 0 1 0
0 1 0 1 1 1 1 1 1 1 1 1 1 1
原则:分别寻找各与项中变量相交的小方格填1. (0——反变量,1——原变量)
(3)由或与式填卡诺图(填0) 举例:
F = ∏ M (0, 2, 6) = ( A + B + C )( A + B + C )( A + B + C )

多变量卡诺图及其在逻辑函数化简中的应用

多变量卡诺图及其在逻辑函数化简中的应用

多变量卡诺图及其在逻辑函数中的应用摘要:卡诺图是在数字电路中十分有用的工具,本文介绍了多变量卡诺图在逻辑函数化简中的应用。

关键词:卡诺图、逻辑函数、化简Multi-variable Karnaugh Map and the Application of it in Logic Function Abstract:Karnaugh map is very useful in the study of digital design, in this article; we have introduce the application of multi-variable Karnaugh map in simplification of logic functions.Key words:Karnaugh map, simplification, logic function.卡诺图(Karnaugh map)是由美国科学家卡诺首先提出的。

在数字电子技术中,卡诺图是逻辑函数真值表的一种图形表示,即用图形表示输入变量与函数之间的逻辑关系。

就n个变量的卡诺图来说,它是由n2个小方格组成,每一小方格代表一个最小项。

在卡诺图中,几何位置相邻(这里的几何位置相邻包括边缘、四角)的小方格在逻辑上也是相邻的,卡诺图用几何位置上的相邻, 形象地表示了组成逻辑函数的各个最小项之间在逻辑上的相邻性。

在数字电路原理与实践课程中,我们常常将卡诺图作为化简逻辑函数的工具。

利用卡诺图化简逻辑函数的方法称为卡诺图化简法或图形化简法。

化简时依据的基本原理就是具有相邻性的最小项可以合并,以此消去不同的因子。

由于在卡诺图上几何位置相邻与逻辑上的相邻性是一致的,因而我们能够从卡诺图上直观地找出那些具有相邻性的最小项并将其合并、化简。

利用卡诺图合并最小项的规则如下:如果两个最小项逻辑相邻,那么二者可以合并成为一项并消去一对因子,合并后的结果中只包含公共因子。

逻辑函数代数法化简

逻辑函数代数法化简
(A B)(A B) A AB AC BC AB AC
A B AB AB A B
逻辑函数代数法化简
代数法化简方法:
• 消项法: 利用A+AB=A消去多余的项AB
• 消元法: 利用
消去多余变量A
• 并项法: 利用A(A+B)=AB AB+AB=A并项
• 配项法: 利用
和互
补律、重叠律, 先增添项,再化简:
例1: 化简逻辑函数 F AB AC ABC
F AB AC ABC
A(B C BC) …提取公因子A A(B C B C) …应用摩根定律
AB AB A
A
…消去互非变量,并项。
逻辑函数代数法化简
例2: 利用公式A+A=A配项
F ABC ABC ABC ABC (ABC ABC ) (ABC ABC ABC ABC) AB AC BC
小结
代数法化简函数,就是借助于公式、定理、 规则实现函数化简。适用于变量较多的函数。 但是没有一定的规律可循,要熟记公式,凭 借经验。
数字电子技术
数字电子技术
逻辑函数代数法化简
1、逻辑函数化简意义
1)所用的元器件少 2)器件间相互连线少
成本低,速度高
3)工作速度高
这是中小规模逻辑电路设计的基本要求。
逻辑函数代数法化简
2、逻辑函数化简方法
方法
代数法化简
最简标准:1)乘积项最少 2)每一项因子最少
卡诺图法化简
逻辑函数代数法化简
基本公式
A AB A A(A B) A A (AB) A B

精选数字电路逻辑函数的化简方法讲解讲义

精选数字电路逻辑函数的化简方法讲解讲义

000 001 010 011 100 101 110 111
0
1
2
3
4
5
6
7
m0
m1
m2
m3 m4
m5
m6
m7
第四页,共28页。
4. 最小项是组成逻辑函数的基本单元
任何逻辑函数都是由其变量的若干个最小项构成,都 可以表示成为最小项之和的形式。
[例] 写出下列函数的标准与或式:
Y F ( A ,B ,C ) AB AC [解] Y AB(C C ) AC(B B)
核心
Y AB AC BC 最简与或式
最简
与非-与非式
AB AC
AB AC
最简或与非式 ( A B)( A C )
最简与或非式
AB AC BC
最简或与式 ( A B) ( A C )
A B AC
最简或非-或式
最简或非-或非式
AB AC
第七页,共28页。
1. 2. 2 逻辑函数的公式化简法
Y F ( A ,B ,C ,D ) ( 4 变量共有 16 个最小项) ABC D ABCD ABC D … … ABC D ABCD
( n 变量共有 2n 个最小项)
第二页,共28页。
2. 最小项的性质:
ABC
000 001 010 011 100 101 110 111
ABC ABC ABC ABC ABC ABC ABC ABC
(1) 两个相邻最小项合并可以消去一个因子
BC
A 00 01 11 10
00
32
CD AB 00 01 11 10
00
1
01 4
6
14

卡诺图法化简多变量逻辑函数的探讨

卡诺图法化简多变量逻辑函数的探讨

卡诺图法化简多变量逻辑函数的探讨
卡诺图法是一种多变量逻辑函数有效化简或分析方法,它可以用有限的运算步骤计算出一个复杂多变量函数匀强度分布模型图。

在国际上,卡诺图法已经得到广泛的应用,其中包括模糊数学中熵神经网络、灰色理论和先进控制等领域。

卡诺图法是一种通过有限上转换,从某种复杂的逻辑关系中获取有用结果的计算机系统,其基本原理是:首先选定一个参数k,然后从一组在[0,1]下的复杂的函数中,选取一个距离给定参数k最近的函数作为对应的输出,再进行复杂函数的递归调整并更换参数k,直至最终获得所需的最佳多变量模型结果。

由于卡诺图法更容易收敛,尤其在极端环境中可以获得准确的执行结果,使其成为多变量函数拟合、化简中最优选择之一,它可以获得比传统方法更佳的拟合函数,使得复杂多变量模型获得精准图形描述,有效提高多变量函数拟合的效率。

此外,卡诺图法还可以大大减少多变量函数搜索空间,使得最优解获得时间更短,这将反映在多变量函数拟合建模和解码机制中,由此可见,卡诺图法在化简多变量逻辑函数方面发挥了很重要的作用。

综上所述,卡诺图法化简多变量逻辑函数有着很多优点,它能够提供复杂模型的准确拟合,同时大大减少搜索空间,提高拟合效率,因此受到了广泛的应用。

多变量卡诺图化简的算法实现

多变量卡诺图化简的算法实现

多变量卡诺图化简的算法实现汪靖;林植【摘要】提出了一种对包含任意多个变量的卡诺图进行化简的算法,给出了算法整体设计流程图以及关键函教伪代码.借助计算机实现多变量卡诺图的化简,为后续工程系统的设计分析提供了可靠依据.【期刊名称】《智能计算机与应用》【年(卷),期】2010(000)002【总页数】3页(P75-77)【关键词】布尔代数式;多变量;卡诺图;算法【作者】汪靖;林植【作者单位】【正文语种】中文【中图分类】TP3021 算法介绍布尔代数式化简的原则是逻辑电路所用的门电路最少,各个门电路的输入端最少,表现在布尔代数式化简中就是使用尽可能少的布尔变量表示布尔代数式。

使用卡诺图化简得到的最简布尔代数式可以用与或式、或与式和无反变量形式表示[1]。

仅以与或式为例进行算法描述,其他两种形式可以在此基础上稍加修改。

1.1 化简原理假设需化简的逻辑表达式A中含有m个逻辑项ai(i为整数,0≤i≤m),其中ai 由若干个布尔变量组成,记为x0x1…xn。

例如:逻辑表达式图1 逻辑表达式A的卡诺图卡诺图化简的基本原理是合并A中所有相邻项,使得布尔变量数最少。

所谓相邻项是指在两个逻辑项中,除某个对应位布尔量相反外,其余对应位都相同的项[2,3]。

例如,逻辑项a0=0000和a1=0001相邻,可以合并为000*,合并时相异位用“*”作标记,从组成形式上可以看出000*消去了一个逻辑变量。

1.2 算法分析根据卡诺图的标注方式和化简表达式的基本原理,算法分四个步骤实现。

(1)求出各项的相邻项。

从a0开始,依次求出ai在A中出现的各相邻项。

(2)合并相邻项。

首先将ai依次与其各相邻项aj合并新的逻辑项bt,此处相异位可以是0与1相异、0或1与*相异。

其次,将ai和aj作为bt的源项。

如果ai或aj本身已由其他逻辑项合并而来,则将ai或aj的源项替代ai或aj。

最后,为了与未合并项区别,将已参与合并的逻辑项ai、aj及各自源项的合并次数分别增加1。

matlab化简逻辑函数

matlab化简逻辑函数

matlab化简逻辑函数Matlab是一种强大的数学软件,可以用来进行逻辑函数的化简。

逻辑函数化简是一种将复杂的逻辑表达式转化为简化形式的方法,可以提高程序的效率和可读性。

在Matlab中,可以使用逻辑运算符(如与、或、非)和条件语句(如if-else、switch-case)来构建逻辑函数。

然后,可以使用化简方法将复杂的逻辑函数化简为简化形式。

为了展示逻辑函数化简的过程,我们以一个简单的例子来说明。

假设我们有一个逻辑函数F,它由多个逻辑变量和逻辑运算符组成。

我们的目标是将这个逻辑函数化简为简化形式。

我们可以使用真值表的方法来确定逻辑函数F的真值。

真值表是一个表格,其中包含了逻辑函数F在所有可能的输入组合下的输出值。

通过观察真值表,我们可以找到逻辑函数F的一些特殊输入组合,这些特殊输入组合可以帮助我们进行化简。

接下来,我们可以使用一些常见的逻辑等价关系来化简逻辑函数F。

例如,我们可以使用德摩根定律、分配律和吸收律等等来进行化简。

这些等价关系可以将逻辑函数F转化为更简单的形式,从而提高程序的效率和可读性。

我们可以使用Matlab中的逻辑函数化简工具来自动化简逻辑函数F。

Matlab提供了一些函数和工具箱,可以帮助我们进行逻辑函数的化简。

这些函数和工具箱可以根据输入的逻辑函数F,自动化简为简化形式,并输出化简后的逻辑函数。

逻辑函数化简是一种将复杂的逻辑表达式转化为简化形式的方法,可以提高程序的效率和可读性。

Matlab提供了丰富的函数和工具箱,可以帮助我们进行逻辑函数的化简。

通过合理运用这些方法和工具,我们可以将复杂的逻辑函数化简为简化形式,从而提高程序的效率和可读性。

逻辑函数化简方法

逻辑函数化简方法
00 1 1 1 1
01 1
11
11
10 1
11
Y A B AC A C D B D
[例] 用图形法求反函数的最简与或表达式
Y AB BC AC
[解] (1) 画函数的卡诺图
(2) 合并函数值为 0 的最小项
(3) 写出 Y 的反函数的 最简与或表达式
BC A 00
00
10
01 11 10 010 11 1
对应规律:原变量 1 反变量 0
ABC ABC ABC ABC ABC ABC ABC ABC
000 001 010 011 100 101 110 111
0123456
7
m0
m1 m2 m3 m4
m5
m6 m7
4. 最小项是组成逻辑函数的基本单元
任何逻辑函数都是由其变量的若干个最小项构成, 都可以表示成为最小项之和的形式。
卡诺图的缺点:函数的变量个数不宜超过 6 个。
4. 卡诺图中最小项合并规律:
(1) 两个相邻最小项合并可以消去一个因子
BC
A 00 01 11 10
00
32
CD AB 00 01 11 10
00
1
01 4
6
14
11
10
9
ABC ABC BC ABCD ABCD BCD
ABC ABC AB ABC D ABC D ABD
[例] 利用图形法化简函数
F( A , B , C , D ) m ( 1 , 4 , 5 , 6 , 8 , 12 , 13 , 15 )
[解] 注意:先圈孤立项
(1) 画函数的卡诺图 (2) 合并最小项:
画包围圈 (3) 写出最简与或表达式

多变量逻辑函数式化简方法探讨

多变量逻辑函数式化简方法探讨

多变量逻辑函数式化简方法探讨油雨忻孔志勇*(山东中医药大学智能与信息工程学院山东济南250000)摘要:多变量逻辑函数式的化简在数字电路设计和优化中起到关键性作用,函数式越简单,其所表示的逻辑关系越明显,越有利于用最少的电子器件实现这个逻辑函数。

对于多变量逻辑函数化简,该文分别以6变量逻辑函数和8线-3线编码器为例,通过介绍卡诺图化简法、互斥变量化简法、Q-M化简法以及Multisim软件仿真等化简方法,以展示多变量逻辑式化简的不同思路和方法。

关键词:卡诺图互斥逻辑变量Q-M化简法Multisim软件仿真中图分类号:TN791文献标识码:A文章编号:1672-3791(2021)12(a)-0001-05Discussion on the Simplification Method of Multivariable LogicalFunctionYOU Yuxin KONG Zhiyong*(College of Intelligence and Information Engineering,Shandong University of Traditional Chinese Medicine,Jinan,Shandong Province,250000China)Abstract:The simplification of multivariable logical function plays a critical role in designing and optimizing digital circuits.The simpler the formula is,the more obvious the logical relationship it represents,and the more beneficial it is to realize this logical function with the least number of electronic devices.For the simplification of multivariable logic function,taking6-variable logic function and8-wire-3-wire encoder as examples,this paper introduces the simplification methods such as Karnaugh Map simplification method,Mutually Exclusive Variable simplification method,Q-M simplification method and Multisim software simulation,so as to show the different ideas and meth‐ods of multivariable logic simplification.Key Words:Karnaugh Map;Mutually exclusive logical variable;Q-M simplification;Multisim software simulation在数字电路中,一般用逻辑函数来表示逻辑电路输入与输出的关系。

利用Q-M原理进行的逻辑化简程序

利用Q-M原理进行的逻辑化简程序

引言:逻辑函数化简在数字电路中有着非常重要的作用。

如果一个逻辑函数的表达式比较简单,那么实现它的电路使用的元器件就少,设备就简单,运算速度就快。

在本文中讨论的逻辑函数化简,是将一个逻辑函数的表达式简化成最简或-与式。

所谓最简或-与式,是或-与表达式中乘积项(与项)的个数最少,而且力求每一个乘积项中包含的变量数最少。

我们熟悉的逻辑函数化简方法是卡诺图法。

卡诺图法具有简单、直观的优点,但当变量数目达到或超过5个以后,卡诺图将变得很复杂,甚至无法使用。

而列表法对于解决多变量逻辑函数化简具有显著的优越性,并且这种方法有严格规则和步骤,便于计算机操作。

列表法最早由Quine和Mcluskey提出,因此该法又称为Q-M法。

许多数字电路课本上给出了便于手工计算的列表法,但并没有给出实际利用计算机语言实现的方法。

本文探讨利用C语言实现Q-M法。

一:制作内容:利用Quine-McCluskey表格法原理,用c++语言实现一个简易的逻辑代数化简程序,求出最简表达式,做到准确,迅速,方便人们进行逻辑化简。

二:实验原理:算法简述:1,列出函数的所有最小项2,找出所有的质蕴涵项(第一步和第二步)3,第一步:将最小项按重量(1的个数)分组。

4,第二步:穷尽地找出所有的质蕴涵项。

5,找出最小的质蕴涵项覆盖(第三步和第四步)6,构造质蕴涵项表7,选择最小数目的质蕴涵项覆盖(最小覆盖)覆盖过程(Covering Procedure)1,第一步:标示出所有只被某个PI覆盖的最小项,将这些PI加入覆盖中(实质蕴含项)。

2,第二步:在质蕴涵项图中去掉所有在第一步中标示出的PI覆盖的行,同时去掉被这些PI覆盖的最小项的列。

3,规则1:如果一行被其它行覆盖,去掉该行4,规则2:如果一列覆盖其它列,去掉该列5,第三步:如果第二步的结果是一个循环图表,进入第五步。

否则再次执行第一部和第二步。

6,第四步:如果第三步的结果是一个循环图表,进入第五步。

数字电子技术- 逻辑函数的化简(卡诺图化简)

数字电子技术- 逻辑函数的化简(卡诺图化简)

CD AB 00 01 11 10
00 0
2
01 4 5 7 6
11 12 13 15 14
10 8
10
C
B
D
总结: 2n 个相邻最小项合并可以消去 n 个取值不同因子。
2. 用卡诺图化简逻辑函数的基本步骤
(1)首先将逻辑函数变换为最小项之和表达式。 (2)画出逻辑函数的卡诺图。 (3)将卡诺图中按照矩形排列的相邻1画圈为若干个相邻组。 (4)合并最小项。 (5)将合并后的乘积项加起来就是最简与或表达式。
② 约束项: 不会出现的变量取值所对应的最小项。 ③ 约束条件: 由约束项相加所构成的值为 0 的逻辑表达式。
例如,上例中 ABC 的不可能取值为 000 011 101 110 111
约束项: ABC ABC ABC ABC ABC
约束条件:A B C ABC ABC ABC ABC 0
01 1
11
11
10 1
11
Y A B AC A C D B D
[例4] 用卡诺图法求反函数的最简与或表达式
Y AB BC AC
[解] ① 画函数的卡诺图
② 合并函数值为 0 的最小项
③ 写出 Y 的反函数的 最简与或表达式
BC A 00 01 11 10
00 010
10 111
Y AB BC AC
(3)化简举例 [例] 化简逻辑函数
F(A,B,C,D )
m( 1 , 7 , 8 ) d( 3 , 5 , 9 , 10 , 12 , 14 , 15 )
[解] 化简步骤:
① 画函数的卡诺图,顺序 为:先填 1 ╳ 0
② 合并最小项,画圈时 ╳ 既可以当 1 ,又可以当 0

多变量逻辑函数化简方法的技巧探讨和研究

多变量逻辑函数化简方法的技巧探讨和研究

多变量逻辑函数化简方法的技巧探讨和研究数字电路中经常会遇到多变量逻辑函数,卡诺图化简方法是我们经常用的一种直观、简单的方法。

在此主要针对多变量逻辑函数的卡诺图化简方法进行分析探讨,起到一个抛砖引玉的作用,也为了让卡诺图化简方法能够得到更加广泛的运用。

标签:逻辑函数化简;多变量逻辑函数;方法技巧探究在数字逻辑电路的分析和设计过程中,对于逻辑函数的化简是非常重要的一个环节。

在数字逻辑电路的分析和设计过程中,对于逻辑函数的化简是非常重要的一个环节。

一般逻辑函数的化简方法有三种,分别是代数化简法,卡诺图化简法和列表化简法。

代数化简法不受变量数目的限定,但技巧性强;卡诺图化简法比较简单、直观,但由于它的化简是基于卡诺图来进行化简的,卡诺图的方格数由逻辑函数的变量来决定,这就限制了卡诺图的应用,特别是当逻辑函数的变量增加到5个或5个以上时,卡诺图化简法就显得比较繁琐;列表化简法规律性较强,对于变量数较多的函数,化简的工作量也十分大,一般适用于计算机处理。

由此看来,选取一种合适的方法来化简多变量逻辑函数对数字逻辑电路的设计和研究具有非常重要的意义。

一、卡诺图化简和代数法化简的特点在数字电路的设计工作中,电路的整体稳定性受到了逻辑函数表达式复杂程度、市场竞争力及成本高低的直接影响。

具备复杂逻辑函数表达式的实际电路一般都是成本比较高,但是稳定性却比较差市场的整体竞争力也不是很强。

所以在数字电路整体的设计工作中化简逻辑函数始终是一项非常重要的工作。

目前在业界对待逻辑函数主要用的就是代数法化简和卡诺图法化简,前者要求在使用的时候必须对公式记忆非常清楚以及对公式的运用技巧也非常的熟练,并且在化简之后能否真正的实现最简还需要具备一定的判断力。

而后者卡诺图化简法却相对来说显得非常直观、简洁,在现实中也得到了非常广泛的运用【1】。

从某种意义上来说卡诺图实际上就是一种真值表的变形,一个多变量逻辑函数的真值表有多少行那么对应的卡诺图就有多少个方格。

逻辑函数的化简逻辑函数的最简形式逻辑函数的公式化简法

逻辑函数的化简逻辑函数的最简形式逻辑函数的公式化简法

AB BC
上页
11
下页
返回
2019/1/10
第五节 逻辑函数的化简
根据公式
A A 1
( A A) ,
可在逻辑函数式中的某一项乘
然后拆成两项分别与其他项合并。 [例2.5.13]: Y
BC AC AB
( A A)BC AC AB
ABC ABC AC AB
Y A( BC ) ABC [例2.5.3]: A(( BC ) BC ) A
上页
5
下页
返回
2019/1/10
第五节 逻辑函数的化简
[例2.5.4]:用并项法将
Y BCD BCD BCD BCD
化简为最简与-或表达式。 解: Y BCD BCD BCD BCD
AB AC
上页
12
下页
返回
2019/1/10
第五节 逻辑函数的化简
综合法
[例2.5.14]:
Y AC BC BD CD A( B C ) ABCD ABDE
AC BC BD CD A( BC ) ABCD ABDE AC ( BC A( BC )) BD (CD ABCD) ABDE
上页
10
下页
返回
2019/1/10
第五节 逻辑函数的化简
5.配项法 根据公式
A A A
可在逻辑函数式中重复写入某一项。 [例2.5.12]: Y
ABC ABC ABC
ABC ABC ABC ABC
AB(C C ) ( A A)BC
返回

多变量逻辑函数的卡诺图化简方法

多变量逻辑函数的卡诺图化简方法

多变量逻辑函数的卡诺图化简方法作者:高青赵文艺来源:《电脑知识与技术》2014年第11期摘要:数字电路中的逻辑函数卡诺图化简是一种简单、直观的方法,常用于四变量化简。

该文分析了多变量逻辑函数的卡诺图法化简,使卡诺图化简法得到了更广泛的应用。

关键词:多变量逻辑函数;卡诺图;降维;化简;对折;分幅中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2014)11-2622-05在数字逻辑电路中,逻辑函数的化简是进行数字电路分析与设计的重要环节。

逻辑函数的化简一般有两种方法:一种是代数法,此方法有其局限性,它不仅要求熟记公式,还要有一定的化简技巧,其最大弊端在于不易判断化简结果是否为最简。

另一种是卡诺图法。

用卡诺图化简逻辑函数是一种既简单,又直观的方法。

它可以直接写出最简逻辑函数,避免了繁琐的逻辑代数运算。

常见教材卡诺图化简只介绍到四个变量,当变量增加到五个及五个以上时,卡诺图的方格数目增多、输入变量取值之间的相邻关系变得复杂,使得作图和填写都十分繁琐,这在一定程度上削弱了卡诺图的优势。

因此,采用适当的方法用较少变量的卡诺图表示多变量逻辑函数,使多变量逻辑函数的卡诺图化简变得简单,有助于数字逻辑电路的分析与设计。

1 卡诺图的特点卡诺图是将函数的最小项用方格来表示的一种逻辑函数表示方法。

一个方格对应一个最小项,为保证几何位置相邻的两个小方块的变量取值有一个是相反的,行列变量的取值必须按格雷码规律排列。

由于格雷码任意相邻的两项之间,其变量取值只有一个是互补的,其余变量的取值完全相同。

按此规律画出的卡诺图中,任意两个相邻方格的变量取值中只有一个变量取值是互补的,根据[AB+AB=A],可消去互补变量,使两个相邻的方格合并为一项,达到化简的目的。

2 卡诺图化简多变量逻辑函数对含有五个及五个以上变量的卡诺图化简可有以下方法。

2.1 降维卡诺图法化简多变量逻辑函数卡诺图中的每个方格是逻辑函数的一个最小项,这种全变量卡诺图,用于四个及四个以下变量的逻辑函数化简较方便。

多变量卡诺图及其在逻辑函数化简中的应用

多变量卡诺图及其在逻辑函数化简中的应用

多变量卡诺图及其在逻辑函数化简中的应用在逻辑函数的化简中有很多方法,如代数化简法、列表化简法和卡诺图法。

卡诺图是其中最常用之一。

逻辑函数的化简在逻辑电路设计中具有重要的意义,而用卡诺图化简逻辑函数具有简单、直观、快捷等优点。

但变量不能太多,因为随着变量的增加,卡诺图的格数是按2的变量个数次方在增加,就使得画图时不太容易识别了。

因此用卡诺图化简逻辑函数一般变量不宜过多。

卡诺图是由美国工程师卡诺(Karnaugh)提出的一种描述逻辑函数的特殊方法. 这种方法是将n个变量的逻辑函数填入一个矩形或正方形的二维空间即一个平面中,把矩形或正方形划分成2n个小别代表方格,这些小方格分n个变量逻辑函数的2n个最小项,每个最小项占一格,几何相邻或处在对称位置上的小方格所表示的最小项是逻辑相邻项。

我们可以用卡诺图来表示任意一个逻辑函数.。

具体的方法是:首先将逻辑函数化为最小项之和的形式,然后在卡诺图上与这些最小项对应的位置上填入1,在其余的位置上填入0,就得到了表示该逻辑函数的卡诺图. 也就是说.任何一个逻辑函数都等于它的卡诺图中填入1的那些最小项之和卡诺图是逻辑函数真值表的图形表示,所有要得到卡诺图必须先知道真值表,再根据真值表画出相应的卡诺图。

下面是3变量卡诺图:4首先要明确逻辑函数各变量值在卡诺图中的分布,一是可以按函数变量的“与”式直接填入卡诺图,二是在化简过程中便于确定某个化简包围圈应消去哪些变量,保留什么变量,从而决定所对应的“与”式。

一个n输入逻辑函数的卡诺图是一个含有2的n次方个单元的矩阵图,每个单元代表一个可能的输入组合或最小项。

应该要注意的是从00到10是按格雷码的顺序而不是自然码的顺序。

在画给定函数的卡诺图时,图中每个单元都包含函数真值表对应的信息。

如果对应输入组合的函数值为0时,图中单元内也是0,否则为1。

卡诺图的画法是利用逻辑相邻最小项合并,消去不同的因子,保留相同的因子,从而使逻辑函数得到最简的方法。

逻辑函数两“寻找”化简法

逻辑函数两“寻找”化简法

逻辑函数两“寻找”化简法【摘要】数字电路教材中,在介绍逻辑函数化简方法时,主要讲解了两种化简方法:公式化简法又称代数法和卡诺图化简法。

前一种方法教材中分别介绍了并项法、吸收法、消项法(消元法)和配项法进行讲解,本文针对公式化简法的几种方法,结合教学应用经验,将几种方法进行揉合,形成公式化简法的两条基本思路,思路一:寻找相同变量,合并后简化逻辑表达式;思路二:寻找同一变量的原变量与反变量,利用吸收率的两个公式进行化简。

【关键词】逻辑函数;公式法;原变量;反变量;化简在数字电子技术中,设计组合逻辑电路过程中,因为要考虑电路的制作成本,因而都需要简化相应的逻辑函数。

在《数字电路》各种教材中,关于逻辑函数化简的方法都提到两种,一是公式化简法,又称作代数化简法,二是卡诺图化简法。

本文针对第一种公式化简法,结合多年教学归纳总结,现提出逻辑函数化简的两条基本思路。

在《数字电路》教材中,逻辑函数公式化简法一般包含并项法、吸收法、消元法、消项法和配项法这几种。

笔者在本节内容组织教学时,发现其中消元法和消项法在具体应用时有相同之处,基本都是挑选每项中同时出现的逻辑变量,然后将其合并进行化简。

因而,利用学生初中时期数学课本中提到“寻找相同项,提取公因式”的思路,本文提出逻辑函数化简的第一条基本思路:寻找一:根据逻辑表达式先寻找每一项中是否含有相同的逻辑变量,然后考虑把这些逻辑变量提取,剩余表达式利用公式1:和公式2:进行合并,若能简化表达式,则该变化过程保留,若不能简化表达式,则考虑其他方法。

例如:化简逻辑函数。

看到该题目,首先考虑函数中存在相同变量D和AB,其中若提取中间两项逻辑变量D,表达式变为:,括号中AB+C并不能简化,因而合并无效;若提取前两项中AB,表达式变为:,括号部分结果为1,直接消去,合并有效。

然而,有的逻辑函数表达式根本就找不到相同逻辑变量,因此思路一显然行不通,此时就采用第二条基本思路:寻找二:在表达式中寻找同一个变量的原变量与反变量(如A和),利用吸收律公式1:和公式2:简化表达式。

利用计算机实现多变量逻辑函数的化简

利用计算机实现多变量逻辑函数的化简

利用计算机实现多变量逻辑函数的化简
樊东燕
【期刊名称】《电脑开发与应用》
【年(卷),期】2003(016)007
【摘要】@@ 在数字系统中,实现某一逻辑电路的复杂性与描述功能的逻辑函数的表达式密切相关.一般而言,逻辑函数表达式越简单,则设计出来的逻辑电路也越简单.【总页数】1页(P42-42)
【作者】樊东燕
【作者单位】山西大学商务学院
【正文语种】中文
【中图分类】TP3
【相关文献】
1.针对一般式多变量逻辑函数的化简方法与技巧 [J], 张辉;李竹
2.互斥多变量逻辑函数的化简方法 [J], 马敬敏
3.用解逻辑方程的方法化简互斥多变量逻辑函数 [J], 周亮
4.列表法化简多变量逻辑函数的方法探讨 [J], 郑四海;郑昌睿
5.多变量逻辑函数式化简方法探讨 [J], 油雨忻;孔志勇
因版权原因,仅展示原文概要,查看原文内容请购买。

适于编程的逻辑函数的化简方法

适于编程的逻辑函数的化简方法

适于编程的逻辑函数的化简方法
王峻;陈广宏
【期刊名称】《安庆师范学院学报(自然科学版)》
【年(卷),期】2004(010)001
【摘要】本文阐述了一种便于使用的逻辑函数化简方法,该方法适用于计算机编程处理.文中还给出了一个简单的实例.
【总页数】3页(P80-82)
【作者】王峻;陈广宏
【作者单位】淮南师范学院,信息技术系,安徽,淮南,232001;淮南师范学院,信息技术系,安徽,淮南,232001
【正文语种】中文
【中图分类】TP331
【相关文献】
1.逻辑函数的另一种化简方法--Q-M化简法 [J], 张冰
2.一种新型逻辑函数化简方法——立体化简法 [J], 陶永明
3.用解逻辑方程的方法化简互斥多变量逻辑函数 [J], 周亮
4.具有大非号逻辑项的较复杂逻辑函数化简的简便方法 [J], 邱志川;李满成
5.计算机编程实现逻辑函数的化简 [J], 汪丽
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机智能化简多变量逻辑函数的算法分析摘要:
在设计逻辑电路图时,由真值表直接得到的函数往往比较复杂。

代数法和卡诺图法等方法对于变量数目较多的逻辑函数则效果不佳,本文介绍一种可编程化简复杂逻辑函数的方法──q-m法(也叫表格法),该方法可以对变量数目较多的逻辑函数进行计算机智能化简。

关键词:
逻辑表达式结构体链表结构体数组化简合并比较研究真值表
蕴涵表
在清楚本论文的基本原理后,我们将整个化简过程划分为四个模块,并针对每个模块进行相应的设计,最后通过一个主函(main)调用实现化简功能。

这四个模块为
第一模块,输入与建立最小项模块:建立c/c++的输入界面,将一般的逻辑函数和最小项表达式输入,并转换成计算机可识别的形式,若含约束项则一并输入,建立同下面模块的联系,保存最小项表达式和约束项表达式,将其代入下一模块操作中。

第二模块,调整最小项和约束项模块:用相应算法将逻辑函数表达式化成最小项的与-或式,若存在约束条件,则将最小项表达的约束项传给化简合并模块。

将传入的最小项与约束项链表重新用一个内容更丰富的结构体指针接受,并按“1”个数的多少进行排
序,为q-m化简作准备。

第三模块,化简合并模块:用q-m法化简逻辑表达式和约束项表达式,得到本质蕴含表。

第四模块,优化及输出模块:在本原蕴含表上采用行、列归并法对结果进行优化;若答案不唯一,则将多个答案全部输出;在答案中去掉单纯由约束项构成的蕴含项。

一、算法的具体实现:
输入与建立最小项模块
针对用户可能输入的情况进行判断。

如果用户想输入的是逻辑表达式(例如f=a+b+cd)则告诉用户以规定的形式——逻辑“与”用”&&”;“或”用“!!”;“非”用“!”;括号一律用“(”,“)”表示,刚才的例子可写成f=!(!(a+b)!!(c&&d))的形式。

如果用户想输入的是最小项,则在规定的范围内(如0 ~ 1023)允许输入,无论是那种情况都应该之后建立最小项表,并提示用户是否对输入约束项进行选择,输入的方法同上。

妥善保管好约束项,并把最小项和约束项传给下一模块。

(二)调整最小项和约束项模块
我们之所以要把这一模块提出来单独研究,是因为原有的tab 链表中所存在的信息确实有限,不能满足合并最小项,求质蕴涵的需求。

根据我们之前介绍的原理不难发现,在化简过程中,我们必须记住一些内容,比如每项中“1”的个数,是否参加合并,生成
项的来源?等等。

这些问题不解决或者不能很好的解决,我们的化简就会出现问题,优化则无从下手。

针对源程序代码分析,我们这里重新定义了一个结构体table,值得注意的是这里sco的作用,该结点链接的是该项合并前每项的信息纪录。

要把tab中的每个结点依次加入到table中,之后,再把约束项tab1的内容加在已有的table中,组成一个新的完整的table表。

我们通过语句:table1=table;把table1用来存放下步操作的结构体链表,空出table来存放tab1(约束项)的内容。

(三)化简合并模块
这一模块是我们整个程序的核心部分,他体现着q-m法的精髓,是对计算机能否成功化简多变量逻辑函数的有力证明,是整个程序的关键所在。

我们仔细读过该模块的原程序后就会发现:整个合并过程是分三个大的循环进行的。

最外层进行的是合并次数的循环,当所有可合并的最小项都不能再合并的时候(最后形成的临时链表t4为空),该层循环结束,这也标志着合并的结束;中间层次的循环是合并列的循环。

(四)优化及输出模块
这是整个程序的最后一个模块,操作的对象仍然是table1结构体链表。

我们要去掉其约束项,以数组的形式行列进行化简,并输出正确形式的信息显示给用户。

具体算法如下:
首先,为了体现比较友好的人机交流的氛围,程序作到这里我们可以将table1表所包含的质蕴涵信息输出一下,把每个结点的信息就显示给用户。

其次,对于table1表,我们还要多一种考虑,如果每项a[i]的信息中,合并后都不再有“0”或“1”的存在,说明了什么?是的,这种情况下就根本没有质蕴涵项,证明输入到计算机的逻辑表达式本身就是最简的,我们只需将其原原本本的输出就可以了(或输出一条语句,告诉用户“输入即输出”也可以)。

第三,这里我们将输入时所合并过来的约束项从table1表中删去。

具体做法:将table1表中来源在tab1中的去掉,并将tab中不在table1的最小项去掉。

将tab作为列(即源程序中的n);table1作为行(即源程序中的m),对新生成的二维数组行列合并,化简为最简形式。

最后,行列合并化简部分实质是对一个二维数组线性操作的过程,在次段程序里可以看出:a[i][j]我们是用(*(a+i*(n+1)+j))形式表示的,这里不在多讲。

优势评价
1、不同模块,不同类型数据链表过度自然。

2、针对具体问题具体分析,算法合理,问题解决较得当。

3、基本实现计算机智能化简多变量逻辑函数的任务.
4、模块设计合理.
5、同一问题,多种思路,多种算法进行研究取得了很好的效果.
三、编程中值得注意的问题
1、注意和“”的区别. 指的是从源程序文件中调用的内容; “”则是指从用户文件中调用的内容。

2、程序中多次定义全局变量(extern struct ),也多次调用,注意其作用.
3、“<<”左移位运算.在程序中通过它完成二进制取位信息的任务. 例:!2=!((n<<i1)&1).
4、注意“空”和“假”的区别。

在我们table的结构体中,我们用a[i]数组存放结点的信息,其中用“3”表示“空”;用“0”表示“假”。

“0”是指一个“假”的信息;而“空”则说明该位置没有信息。

请看例子:
for(i=1;i<n+1;i++)
{for(j=1;j<n+1;j++)
if(*(a+i*(n+1)+j)==1)k++;(i是行,j是列)
……}
我们在后面的程序中运用的就是通过这种方式构建二维数组的,这里的*(a+i*(n+1)+j)相当于a[i][j]。

相关文档
最新文档