Logical operators 布尔表达式的简化

Logical operators 布尔表达式的简化,logical-operators,boolean-logic,boolean-expression,Logical Operators,Boolean Logic,Boolean Expression,我有一个函数f(a,b,c,d)=b*(a++~c)+d*(a++~b),其中*(AND),+(OR),~(NOT) 利用分布律,我得到:ba+b~c+da+d~b 但答案是ab+b~c+d~b 我想不出,如何摆脱da 我试着分解出一个a来得到:a(b+d)+b~c+d~b,但我什么都做不到。您可以创建一个包含每个参数[1,0]所有可能值的表,并计算这两个表达式。如果你能证明在每种情况下,它们的计算结果都是相同的,那么你就会证明它们是等价的,因此ad可以被删除 我将演示并让您完成练习: 所以问题

我有一个函数
f(a,b,c,d)=b*(a++~c)+d*(a++~b)
,其中
*(AND)
+(OR)
~(NOT)

利用分布律,我得到:
ba+b~c+da+d~b

但答案是
ab+b~c+d~b

我想不出,如何摆脱
da


我试着分解出一个a来得到:
a(b+d)+b~c+d~b
,但我什么都做不到。

您可以创建一个包含每个参数[1,0]所有可能值的表,并计算这两个表达式。如果你能证明在每种情况下,它们的计算结果都是相同的,那么你就会证明它们是等价的,因此
ad
可以被删除

我将演示并让您完成练习:


所以问题是为什么ba+b~c+da+d~b=ab+b~c+d~b

原因很简单,
da
不会在左侧添加任何内容

如果是这样的话,就会出现这样的情况,
da=true
ab+b~c+d~b=false
。但是,如果
da=true
,则
d=true
a=true
。如果
b
也是
true
,则
ab=true
,我们没有在右侧添加任何内容。如果
b=false
,那么
d~b=true
,我们也没有添加任何内容


使用表或转换规则(如分布等)是可以的。但是,最好尝试理解为什么两个表达式是等效的。

我投票结束这个问题,因为它不是一个编程问题。它可能更适合不同的站点,例如instead。我投票将这个问题作为离题题结束,因为它是关于布尔逻辑而不是编程或编码。我投票将这个问题作为离题结束,因为它是关于布尔逻辑,而不是编程。