十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Y=AB+A'B'+BC
霍城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
=AB(C+C')+A'B'(C+C')+(A+A')BC
=ABC+ABC'+A'B'C+A'B'C'+A'BC
=∑m(0,1,3,6,7)
5为数字对应二进制数:000 001 011 110 111,对应Y输出1
Y取反:Y'=∑m(2,4,5),对应010 100 101,Y输出0
所以,真值表如下:
ABCY
000 1
001 1
010 0
011 1
100 0
101 0
110 1
111 1
用bool数组表示就可以。不用使用二叉树什么的。
你需要解决的有两点:
如何将输入的变量,编码为数组的元素索引。
真值的运算过程是一系列关系操作,即与或非。
1、逻辑运算符是根据表达式的值来返回真值或是假值。在C语言中没有专门的真值和假值,认定非0为真值,0为假值。
2、逻辑运算符运算规则:
|| 或:两个条件中,只要有一个成立,则结果就成立;
与:两个条件中,两个同时成立,则结果成立,否则不成立;
! 非:取反之意,如果是真,结果是假,如果是假,结果是真。
逻辑函数,函数的一种.与常见的数学函数(如线性函数、反比例函数、一元二次函数、指数函数等)相比,区别是:
(1)以上初等数学函数的自变量只有一个 x;而逻辑函数的自变量通常有很多,比如你给的例子 F1 的自变量就有 3 个:A、B、C;
(2)普通数学函数的定义域和值域通常为实数域(或它的一个子集),通常是连续的,是个无穷集合;而逻辑函数“每个自变量的取值范围”和函数的值域都只有两个元素:{真,假},它还有很多等价的表示方法:{T, F}、{0, 1};而“整个函数的定义域”则为所有自变量取值集合的“笛卡儿积”;比如你给的例子 F1 的定义域就是:
{0, 1} × {0, 1} × {0, 1}
= {, , , , , , , }
基于以上区别,两类函数的表示方法就有所不同.除了所有函数都通用的表达式方法外,普通函数通常用函数图像表示;而逻辑函数则可以用真值表来表示——因为它的定义域和值域中的元素个数都比较少,而且很有规律.
真值表作为逻辑函数的表示方法,目的就是将函数定义域中每个元素(即自变量元组)与它所对应的函数值一一列出.所以真值表的行数(R)是由自变量的个数(n)确定的:
R = 2 ^ n;
而真值表的列是由自变量列和函数值列组成的,所以列数(C)为:
C = n + 1;
当然,就像多个函数的图像可以画在同一个坐标系中一样,多个函数的真值表也可以合并为一张真值表.这时,真值表的定义域就应该是所有函数的定义域的并集.对于 m 个逻辑函数,如果它们共包含 N 个自变量,那这些函数的真值表的行数和列数分别为:
R = 2 ^ N;
C = N + m;
前面已说过,画真值表就是要建立逻辑函数定义域中每个元素与其函数值的对应关系.其过程为:
第1步:根据函数个数和自变量个数建立空表,一般是要加个表头的;——这一步相当于画坐标系;
第2步:填入定义域元素,即:填写所有自变量的取值组合;——这一步相当于标记定义域;
第3步:为每个逻辑函数,计算定义域的每个元素的函数值,并填入;——这是唯一需要计算的地方,相当于画函数图像上的每个点;
对于你的例子,F1 = ABC + A'B'C';(A' = 非A),F1 的真值表是一个 8 行(不算表头)4 列的表格.前两步就不说了,唯一有难度的地方就是函数值的计算.比如,当自变量为时,函数值为:
F1 = 0 · 0 · 0 + 0' · 0' · 0' = 0 + 1 · 1 · 1 = 0 + 1 = 1;
其他的函数值可自行求解.
补充:关于真值表的制作,最难也最麻烦的地方就是函数值的计算.不过由于逻辑函数的特殊性,使得它的表达式和真值表直接有着很有规律的联系,我们可以直接从函数表达式得出真值表中的函数值列.只不过需要将表达式转化为标准形式,即:积之和式(又叫析取范式).从逻辑函数的积之和式,可以直接看出真值表中 “函数值为 1 的行”,剩下的行的函数值自然就是 0 了.
分析:不管是表达式还是真值表,都是要表示自变量与函数值直接的取值关系.对于积之和式,只要它的任何一个“与项”的取值为 1,函数值就为 1.所以:使得任何一个“与项”为 1 的“自变量取值组合”,必然使得整个函数取值为 1,这样的自变量组必然对应真值表中函数值为 1 的行;反之,不能使任何一个与项为 1(即:使得每个与项都为 0)的自变量组,必然使整个函数的值为 0,这样的自变量组必然对应真值表中函数值为 0 的行.
每个“与项”(用 p 表示)都会有一个或多个使它取值为 1 的自变量组,它(们)构成一个集合:P.我们只要依次分析每个“与项”(p1、p2、p3…),就可以得到相应的自变量组的集合:P1、P2、P3….而这些集合的并集,就是所有函数值为 1 的自变量组构成的集合.通过例子说明:
例:F = A + A'B;
(1)p1 = A:当 A = 1时,无论B、C取何值,该项的结果为 1;而 A = 0时,该项也必为0;所以,它所对应的自变量组集合为:P1 = {, };
(2)p2 = A'B:当且仅当 A = 0、B = 1时,该项 = 1;P2 = {};
现在,规律很明显了:对于每个与项,分析函数的每个变量:当变量以“原变量”形式出现时,记为 1;当以“反变量”形式出现时,记为 0;当变量不出现时,应当考虑它(们)所有的 0、1 组合.由此就能得到使该与项为 1 的自变量组(或自变量组的集合).
对于你给的例子:F1 = ABC + A'B'C';
(1)p1 = ABC:P1 = {};
(2)p2 = A'B'C':P2 = {};
所以,在F1的真值表中,就只有和两行的函数值为1,其他行为0;