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

How do i simplify f = x'yz + xy'z + xyz'?

我正在努力简化表达式 f = x'yz + xy'z + xyz' + xyz。实际上,可能不是这个表达。问题是:简化投票系统的布尔表达式,该系统是:三个人对多个候选人投票,并且两个或更多人应该同意(真)候选人才能通过。所以我认为答案是xy + yz + xz,但我无法弄清楚这之间的过程。谁能解释一下?

根据 idempotent/identity 定律,我们有 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个都为真时,结果仍然为真

这样表达的好处是一次可以只关注每一对输入,不用担心第三个的影响。

不涉及逻辑推理的简单方法

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

四行对应于您的积和表达式中的给定项。

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

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

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

绘制地图和查找街区可以使用马尔堡大学的一个不错的 online tool 自动完成。