【问题标题】:How to reduce a logical statement?如何减少逻辑语句?
【发布时间】:2010-10-14 13:53:40
【问题描述】:

我很确定我记得在我的一门大学课程中做过这样的事情,并且有某种公式,但除此之外,我的想法让我失望。

给定语句: ( a OR b OR d ) AND ( a OR c )

我很确定这可以简化为:( a OR b OR d OR c )

但我不记得我将如何证明这一点。

也许是一系列逻辑表?

【问题讨论】:

    标签: computer-science logic equivalence


    【解决方案1】:

    您不能将“(a OR b OR d)AND(a OR c)”简化为“(a OR b OR d OR c)”,因为前者不满足“c=true, a,b,d =false”,而后者是。所以你也不能证明减少是正确的:)

    总的来说,减少布尔公式大小的方法有很多,这也是你要优化什么的问题(总大小?条件评估的平均次数?)。卡诺图仅适用于少数变量。将大布尔公式简化为更小的布尔公式是一个高级主题,在例如自动逻辑电路设计。

    【讨论】:

    • 那么他们的程序可以做到这一点吗?
    【解决方案2】:

    Karnaugh maps?逻辑表达式减少?

    【讨论】:

      【解决方案3】:

      卡诺图是您的朋友:

      http://en.wikipedia.org/wiki/Karnaugh_map

      您将不得不从上述等式逆向构建它,但它是一个很好的工具,可以告诉您它是否可以进一步减少。

      【讨论】:

        【解决方案4】:

        卡诺图,关键是“绘制”所有可能的输入并指出它们的输出。然后您可以开始过滤掉对输出没有影响的输入,从而减少映射。优化后,您就可以从中生成逻辑。

        【讨论】:

          【解决方案5】:

          ( a OR b OR d ) AND ( a OR c )

          这意味着当 a 为真时,一切都为真!

          => a OR { (b OR d) AND (c) }

          => a OR (b AND C) OR (d and C)

          我认为结果 ( a OR b OR d OR c ) 是错误的,但是当它出错时请帮我一把。

          【讨论】:

            【解决方案6】:

            a 或 {(b OR d) AND c}

            推理: 如果为“a”,则该陈述为真。 否则,您需要 b 或 d(以满足语句的第一部分)和 c(满足 !a

            的情况下的后半部分

            【讨论】:

              【解决方案7】:

              使用Karnaugh maps

              这是一个 OR b OR d:

              \ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | X| X| X| 01 | X| X| X| X| 11 | X| X| X| X| 10 | | X| X| X| +-----------+

              这是一个 OR c:

              \ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | | X| X| 01 | | | X| X| 11 | X| X| X| X| 10 | X| X| X| X| +-----------+

              相交它们,我们得到:

              \ab 光盘\ 00 01 11 10 ---+-----------+ 00 | | | X| X| 01 | | | X| X| 11 | X| X| X| X| 10 | | X| X| X| +-----------+

              显然,这是一个 OR(某事),其中(某事)是:

              00 01 11 | X| X| 10 | | X|

              由于 (something) 不是一个矩形,它需要两个表达式,可以是 AND'ed 或 OR'ed 一起,这取决于我们想要如何处理它。我们将在本例中使用 OR,因为它给出了更简单的表达式。

              在这种情况下,我们可以将两个相邻的 X 组合成另外两个以填充整个 cd 行,因此 cd 可以是表达式之一。我们也可以将两者放在一起,将两者放在右侧,形成一个正方形。这个正方形代表表达式 bc,因为 a 和 d 在正方形内都不同。

              所以最后的表达式是a OR ((c AND d) OR (b AND d)),或a + cd + bd。好多了,不是吗?

              【讨论】:

                【解决方案8】:

                SOP 最小形式:

                y = a | b&c | c&d;
                

                POS 的成本相同(实现逻辑图的门数):

                y = (a|c)&(a|b|d);
                

                【讨论】:

                  【解决方案9】:

                  是的,你可以证明这一点。您不能将其简化为 ( a OR b OR d OR c )

                  请看下面的第 3 行。您的减少将无法产生正确的答案。

                  运行一下:

                  A B C D
                  0 0 0 0 = 0
                  0 0 0 1 = 0
                  0 0 1 0 = 0
                  .
                  .
                  .
                  1 0 0 0 = 1
                  1 0 0 1 = 1

                  到目前为止,我得到了 (A OR (???)) :(

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2016-02-28
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2022-12-16
                    相关资源
                    最近更新 更多