我有这个问题搞砸了我,因为我没有得到我应该从哪里开始,我应该从一开始就选择哪个术语?因为这种令人困惑的表达甚至不让我采取共同点,因为它毫无意义。此外,它甚至不让我删除赞美(使用法律),因为它也没有任何意义。请帮帮我,至少只是指导我该怎么办?我应该从哪里开始?我真的很感激。
我用来编写表达式的符号说明:
! :NOT Gate
+:或门
。 (点):AND Gate
布尔表达式:
A.!BE +!(BC).D。!E +!(CD).E +!AD!E + A。!(CD).E + AE + AB!E +!(AC) )+ BC!D
我使用了在线表达式简化器,它给了我以下答案:
!A + B +!C + D + E
但是如何在这短暂的表达中简化上述长表达式?我知道法律和财产,但我没有得到我应该如何开始简化长期的?我应该先看哪个条款?请有人帮助我。
答案 0 :(得分:1)
(这是对你的评论的直接回答,以及对你的主要问题的侧面回答。简而言之,使用不同的方法来获得所需的简化表达。)
你有一个复杂的表达式,但只使用了5个逻辑变量。在这个问题中,构建一个只有2 ^ 5 = 32行的真值表要容易得多。您可以查看结果并使用它们来构建简化的等效表达式。这不使用原始问题所需的“法律和属性”,但它是简化布尔表达式的标准技术。
您应该已经学会了如何在任何离散数学课程中构建真值表。简而言之,您创建了一个表格,其中每行中的每个元素都是T
的{{1}}或True
的{{1}}。行包含Ts和Fs的所有可能组合。对于5个变量,这将使用2 ^ 5 = 32行。对于每一行,将第一个值分配给A,将第二个值分配给B等。然后,计算这些值的表达式,并将结果写在行的末尾。
这可以手工完成,但你的表达很复杂,我们可以避免这种情况。这是一个打印所需表的Python 3脚本。请注意,Python具有F
功能,可简化获得Ts和Fs的所有可能组合。此脚本使用False
将布尔值转换为单个字符product()
或B[]
。
T
结果如下:
F
除了单行from itertools import product
"""Make a truth table for the Boolean expression
A.!B.E + !(B.C).D.!E + !(C.D).E+!A.D.!E + A.!(C.D).E + A.E + A.B.!E + !(A.C) + B.C.!D
"""
B = ('F', 'T')
print('A B C D E : Result')
print('- - - - - : ------')
for a, b, c, d, e in product((True, False), repeat=5):
print(B[a], B[b], B[c], B[d], B[e], end=' : ')
print(B[
(a and not b and e)
or (not (b and c) and d and not e)
or (not (c and d) and e)
or (not a and d and not e)
or (a and not (c and d) and e)
or (a and e)
or (a and b and not e)
or (not (a and c))
or (b and c and not d)
])
外,我们发现结果始终为A B C D E : Result
- - - - - : ------
T T T T T : T
T T T T F : T
T T T F T : T
T T T F F : T
T T F T T : T
T T F T F : T
T T F F T : T
T T F F F : T
T F T T T : T
T F T T F : T
T F T F T : T
T F T F F : F
T F F T T : T
T F F T F : T
T F F F T : T
T F F F F : T
F T T T T : T
F T T T F : T
F T T F T : T
F T T F F : T
F T F T T : T
F T F T F : T
F T F F T : T
F T F F F : T
F F T T T : T
F F T T F : T
F F T F T : T
F F T F F : T
F F F T T : T
F F F T F : T
F F F F T : T
F F F F F : T
。这意味着除非A为True,B为False,C为True,D和E为False,否则表达式为true。因此,我们可以简化您的表达(使用您的符号)
T
DeMorgan法律的简单使用将其更改为正常形式:
T F T F F
这就是你想要的。