如何验证两个逻辑等效的表达式? 例如: (a + b)< => (b + a) 或 (a +(b + c))< => ((a + b)+ c) 或 (a&& b)< => (b&& a) 等
我想要一个优化解决方案,它将从1000个表达式中识别出重复的解决方案。
答案 0 :(得分:0)
与@japreiss的评论相反,这里没有公开的研究问题。在像给出的例子那样的命题表达的语境中,逻辑等价被很好地理解。 (我假设OP使用+
表示逻辑OR而不是数字加法)
OP的一个问题:您是否有兴趣手动执行此操作或通过编程代码自动执行此操作?
有多种方法,但在逻辑课程和教科书的大多数介绍中教导的方法是为左侧和右侧构建单独的真值表,并查看每行的最终值是否相同
如果您的计算机系统已经可以评估(a+(b+c))
和((a+b)+c)
这样的表达式的真实性,那么同一个系统可能会被赋予整个表达式(a+(b+c)) <=> ((a+b)+c)
并且可以告诉它你是否是重言式。
关于比较1,000个表达式以查找重复项,一种技术是将每个表达式转换为conjunctive normal form,然后使用字符串比较来查看哪些是相同的。