如何简化f = x'yz + xy'z + xyz'?

时间:2019-04-01 09:24:48

标签: boolean-logic karnaugh-map

我正在简化表达式f = x'yz + xy'z + xyz' + xyz。实际上,可能不是这个表达。问题是:简化投票系统的布尔表达式,该系统是:三人对多个候选人进行投票,并且两个或两个以上的人应就该候选人达成一致,然后才能通过。所以我认为答案应该是xy + yz + xz,但我不知道两者之间的过程。谁能解释?

enter image description here

2 个答案:

答案 0 :(得分:1)

根据幂等/恒等律,我们有x + x = x,还有xyz + xyz = xyz。应用此原理,我们可以将您的表达式重写为:

 f = x'yz + xy'z + xyz' + xyz
=> f = x'yz + xy'z + xyz' + xyz + xyz + xyz --OR with xyz twice without affecting the value
=> f = x'yz + xyz + xy'z + xyz + xyz' + xyz --Rearrange
=> f = yz (x + x') + xz (y + y') + xy(z' + z) --Group
=> f = yz + xz + xy --Since x+x' = 1

也就是说,正如该图清楚地显示的那样,您可以将每对输入进行AND运算,然后将它们进行OR运算以获得相同的结果。这样,您可以确保:

  • 如果3个输入中有2个为真,则您的总体结果为真
  • 当3个都为真时,结果仍然为真

以这种方式表示的优势在于,您可以一次专注于每对输入,而不必担心第三个输入的影响。

答案 1 :(得分:0)

一种无需逻辑推理的简单方法

写一个truth table。对于三个输入,有2 ^ 3 = 8行。

四行对应于乘积和表达式中的给定术语。

将表达式的八个值输入到Karnaugh map中:

enter image description here

将相邻的1个项归为块,如图所示。 如果一对单元只是一个输入不同,则可以将它们合并为一个更大的块。这样,块在每个合并步骤中将其单元数加倍,并将输入数减少一。

每个结果块对应于最小化表达式中的一个implicant项。

使用不错的Marburg University online tool,可以自动完成绘制地图和查找街区的操作。