我正在努力简化表达式f = x'yz + xy'z + xyz' + xyz
。实际上,它可能不是这种表达方式。问题是:简化投票系统的布尔表达式,系统为:三个人对多个候选人投票,两个或两个以上的人应该同意(真实)候选人才能通过。所以我认为答案是xy + yz + xz
,但我无法弄清楚它们之间的过程。谁能解释一下?
根据幂等/身份法,我们有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组合在一起,并将它们组合在一起以获得相同的结果。通过这样做,您可以确保:
以这种方式表达它的优点是,您可以一次只关注每对输入,而不必担心第三对输入的影响。
一种简单的方法,不涉及逻辑推理
写一个truth table。对于三个输入,有2 ^ 3 = 8行。
四行对应于乘积和表达式中的给定项。
在Karnaugh map中输入表达式的八个值:
如图所示,将相邻的1个项组合成块。如果一对单元在一个输入中只是不同,则它们可以合并成更大的块。这样,块在每个合并步骤中将其单元数加倍并将其输入计数减少一。
每个得到的块对应于最小化表达式中的一个implicant项。
绘制地图并找到块可以使用马尔堡大学的一个漂亮的online tool自动完成。