Logic 两个布尔表达式的等式
我有两个布尔表达式:Logic 两个布尔表达式的等式,logic,boolean-logic,boolean-expression,boolean-operations,boolean-algebra,Logic,Boolean Logic,Boolean Expression,Boolean Operations,Boolean Algebra,我有两个布尔表达式: ¬aΛ¬b V ¬aΛ¬c V aΛ¬bΛ¬c #1 ¬aΛ¬b V ¬aΛ¬c V ¬bΛ¬c #2 我知道它们是一样的,因为它们的真值表是一样的。我的问题是,我怎样才能使它们在表达上平等 你可能会注意到它们之间的唯一区别是#1在其最后一个或最后一个学期中有一个额外的“a”。尝试去除额外“a”的各种分解方法都失败了。我不知道“表达式方面”的确切含义,但如果你根据a是真是假来分解它们,就会很容易看到 如果a为真(前两项在Eq1和Eq2中均为假): Eq1=>~b&~c
¬aΛ¬b V ¬aΛ¬c V aΛ¬bΛ¬c #1
¬aΛ¬b V ¬aΛ¬c V ¬bΛ¬c #2
我知道它们是一样的,因为它们的真值表是一样的。我的问题是,我怎样才能使它们在表达上平等
你可能会注意到它们之间的唯一区别是#1在其最后一个或最后一个学期中有一个额外的“a”。尝试去除额外“a”的各种分解方法都失败了。我不知道“表达式方面”的确切含义,但如果你根据a是真是假来分解它们,就会很容易看到 如果a为真(前两项在Eq1和Eq2中均为假):
Eq1=>
~b&~c
Eq2=>
~b&~c
如果a为假:Eq1=>
~b| ~c
Eq2=>
~b | ~c(~b&~c)
==Eq1
编辑:
您可以使用布尔标识更正式地生成相同的参数:
(~a&~b&~a&~c&~b&~c)==(~a&~b)|(~a&~c)|(~b&~c))&(a&~a)
因为(a | ~a)==1
和x&1=x
然后使用&
在|
上的分布:
=(((~a&~b)|(~a&~c)|(~b&~c))&a)|((~a&~b)|(~a&~c)|(~b&~c))&~a)
现在,在主|
的两侧都有了每个“案例”作为附加事实。再次应用分发将把这个事实推到内部案例中,并最终做出与我上面所做的相同的取消。只看左侧的第一个分布:
((~a & ~b) | x) & a) == (a & ~a & b) | (a & x) == 0 | (a & x) == a & x
其中x是其他两个或多个表达式。遵循此策略将给出与上述相同的答案。如果你被卡住了,我可以带你走得更远,但你应该可以从这里开始。一般来说,你需要将表达式转换为。要做到这一点,你需要对基本连词进行析取:对于真值表中的每一个1,写出所有变量或其倒数的对应连词,然后对所有这些连词进行析取。合取范式也存在,但使用较少 对于许多变量的表达式,析取范式变得相当大。在这种情况下,您可能希望使用最小化算法(例如),但这非常复杂,计算成本也很高(最小化的问题非常复杂,而且这些算法的运行时通常比只计算真值表还要糟糕) 如果您只需要一个通用表示来比较相同变量的任何布尔表达式,您还可以比较这些表达式的真值表:
¬aΛ¬b V ¬aΛ¬c V aΛ¬bΛ¬c #1
¬aΛ¬b V ¬aΛ¬c V ¬bΛ¬c #2
- 以字典顺序作为变量的每个可能组合的表达式值字符串(零或一)
- 或者作为真值表中表达式为真的行的排序列表。行按变量的字典顺序编号