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。我投票将这个问题作为离题题结束,因为它是关于布尔逻辑而不是编程或编码。我投票将这个问题作为离题结束,因为它是关于布尔逻辑,而不是编程。