【问题标题】:Simplifying the boolean expression: A ^ B * C简化布尔表达式:A ^ B * C
【发布时间】:2019-01-05 05:59:41
【问题描述】:

我一直在尝试简化 布尔表达式: A ^ B * C 一段时间了。我可以先将其简化为:A * ~B + ~A * B * C,但之后我似乎无法进一步简化它。使用在线简化,它说它简化为(A + B) * (A + C) * (~A + ~B),但这是为什么呢?什么法律被用来简化它?

【问题讨论】:

    标签: boolean computer-science boolean-logic boolean-expression boolean-operations


    【解决方案1】:

    这取决于运算符的优先级。通常 AND 出现在 XOR 之前,它是 A XOR (B AND C)。一些编程语言在不使用括号时严格从左到右计算表达式,导致(A XOR B) AND C,假设您使用^ 表示XOR* 表示AND

    您的简化似乎适用于后一种变体,但通常在布尔代数中您会先评估 AND:

      A * ~(B*C) + ~A * B * C
    = A * (~B + ~C) + ~A * B * C
    = A * ~B + A * ~C + ~A * B * C
    

    我使用这样的布尔表达式已经有一段时间了,所以我不知道是否可以进一步简化(或者即使我的方法是正确的)。

    您确定您正确地记下了在线简化器的结果吗?因为术语(A + B) * (~A * ~B) 的计算结果为A * ~A * ~B + B * ~A * ~B = 0 + 0,因此整个术语的计算结果为false。这一切都假设有以下运算符的优先级:NOT > AND > OR。如果他们解决方案中的最后一项是(~A + ~B),它会更有意义并评估为您的术语A * ~B + ~A * B * C,它只是它的合取范式。

    【讨论】:

    • 感谢您的回答,我确定我在简化器上输入正确;但是,我确实打错了表达式。在线简化器输出:(A + B) * (A + C) * (~A + B)
    • 这个答案比原来的形式简单吗?原来的表格在我看来已经很简单了。
    • @TomMozdzen 原始形式可能更容易阅读,但普通形式(结果)仅使用 ANDOR(和 NOT),可用于应用自动定理证明和其他技术。
    • @sven hoek 我将 ^ 误读为 OR。 “简化”这个词对我来说是模糊的。如果他说转型,我会更清楚。