使用定律和属性简化 5-var 布尔 SOP 表达式
Simplifying 5-var Boolean SOP Expression using the Laws and Properties
这个问题让我很困惑,因为我不知道我应该从哪里开始,我应该在开始时选择哪些术语?因为这种令人困惑的表达甚至不让我接受普通话,因为它毫无意义。此外,它甚至不允许我删除赞美(使用法律),因为它也没有任何意义。请帮助我,至少指导我该怎么做?我应该从哪里开始?我将不胜感激。
我用来写表达式的符号说明:
! : 非门
+ : 或门
。 (点):与门
布尔表达式:
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
我使用了在线表达式简化器,得到了以下答案:
!A + B + !C + D + E
但是上面很长的表达方式是如何在这个简短的表达方式中简化的呢?我知道法律和财产,但我不明白我应该如何开始简化长篇?我应该先看哪些条款?请任何人帮助我。
(这是对你的评论的直接回答,也是对你的主要问题的侧面回答。总之,使用不同的方法来获得所需的简化表达式。)
您有一个复杂的表达式,但只使用了 5 个逻辑变量。在这个问题中,建立一个只有 2^5 = 32 行的真值 table 会容易得多。您可以查看结果并使用它们来构建简化的等效表达式。这不使用您的原始问题所需的 "the laws and properties",但它是简化布尔表达式的标准技术。
您应该已经学会了如何在任何离散数学 class 中建立真理 table。简而言之,您创建了一个 table,其中每行中的每个元素对于 True
都是 T
或对于 False
是 F
。这些行包含 Ts 和 Fs 的所有可能组合。对于 5 个变量,这将使用 2^5 = 32 行。对于每一行,您将第一个值分配给 A,第二个值分配给 B,依此类推。然后计算这些值的表达式并将结果写在行尾。
这可以手工完成,但你的表情足够复杂,我们可以避免。这是打印所需 table 的 Python 3 脚本。请注意,Python 具有 product()
函数,可简化获取 Ts 和 Fs 的所有可能组合。此脚本使用 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
我们看到结果总是 T
除了单行 T F T F F
。这意味着你的表达式为真,除非 A 为真,B 为假,C 为真,D 和 E 为假。所以我们可以将您的表达式(使用您的符号)简化为
!(A.!B.C.!D.!E)
简单使用 DeMorgan 定律即可将其更改为标准形式:
!A + B + !C + D + E
这就是你想要的。
这个问题让我很困惑,因为我不知道我应该从哪里开始,我应该在开始时选择哪些术语?因为这种令人困惑的表达甚至不让我接受普通话,因为它毫无意义。此外,它甚至不允许我删除赞美(使用法律),因为它也没有任何意义。请帮助我,至少指导我该怎么做?我应该从哪里开始?我将不胜感激。
我用来写表达式的符号说明:
! : 非门
+ : 或门
。 (点):与门
布尔表达式:
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
我使用了在线表达式简化器,得到了以下答案:
!A + B + !C + D + E
但是上面很长的表达方式是如何在这个简短的表达方式中简化的呢?我知道法律和财产,但我不明白我应该如何开始简化长篇?我应该先看哪些条款?请任何人帮助我。
(这是对你的评论的直接回答,也是对你的主要问题的侧面回答。总之,使用不同的方法来获得所需的简化表达式。)
您有一个复杂的表达式,但只使用了 5 个逻辑变量。在这个问题中,建立一个只有 2^5 = 32 行的真值 table 会容易得多。您可以查看结果并使用它们来构建简化的等效表达式。这不使用您的原始问题所需的 "the laws and properties",但它是简化布尔表达式的标准技术。
您应该已经学会了如何在任何离散数学 class 中建立真理 table。简而言之,您创建了一个 table,其中每行中的每个元素对于 True
都是 T
或对于 False
是 F
。这些行包含 Ts 和 Fs 的所有可能组合。对于 5 个变量,这将使用 2^5 = 32 行。对于每一行,您将第一个值分配给 A,第二个值分配给 B,依此类推。然后计算这些值的表达式并将结果写在行尾。
这可以手工完成,但你的表情足够复杂,我们可以避免。这是打印所需 table 的 Python 3 脚本。请注意,Python 具有 product()
函数,可简化获取 Ts 和 Fs 的所有可能组合。此脚本使用 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
我们看到结果总是 T
除了单行 T F T F F
。这意味着你的表达式为真,除非 A 为真,B 为假,C 为真,D 和 E 为假。所以我们可以将您的表达式(使用您的符号)简化为
!(A.!B.C.!D.!E)
简单使用 DeMorgan 定律即可将其更改为标准形式:
!A + B + !C + D + E
这就是你想要的。