Data structures 识别相似的表达方式?

Data structures 识别相似的表达方式?,data-structures,logic,Data Structures,Logic,如何验证逻辑上等价的两个表达式? 例如: a+b+a或a+b+c a+b+c或a&b&a等 我想要一个优化的解决方案,它将从1000个表达式中识别出重复的表达式。与@japreiss的评论相反,这里没有公开的研究问题。在命题表达式的上下文中,如给出的例子,逻辑等价性是很好理解的。我假设OP使用+表示逻辑或,而不是数字加法 OP的一个问题:你对手工操作或通过编程代码实现自动化感兴趣吗 有多种方法,但在大多数逻辑入门课程和教科书中教授的方法是为左侧和右侧构建单独的真值表,并查看每行的最终值是否相同

如何验证逻辑上等价的两个表达式? 例如: a+b+a或a+b+c a+b+c或a&b&a等


我想要一个优化的解决方案,它将从1000个表达式中识别出重复的表达式。

与@japreiss的评论相反,这里没有公开的研究问题。在命题表达式的上下文中,如给出的例子,逻辑等价性是很好理解的。我假设OP使用+表示逻辑或,而不是数字加法

OP的一个问题:你对手工操作或通过编程代码实现自动化感兴趣吗

有多种方法,但在大多数逻辑入门课程和教科书中教授的方法是为左侧和右侧构建单独的真值表,并查看每行的最终值是否相同

如果你有一个计算机系统,它已经可以计算出像a+b+c和a+b+c这样的表达式的真值,那么同样的系统可能会给出整个表达式a+b+c a+b+c,并且可以告诉你它是否是重言式


关于比较1000个表达式以查找重复项,一种技术是将每个表达式转换为,然后使用字符串比较来查看哪些表达式相同。

有趣的问题。通过网络搜索等价的数学表达式,最近发表了许多学术论文,这表明这是一个开放的研究领域。像Mathematica这样的符号数学软件包可能是一个好地方。像多项式这样的受限域很容易,但我打赌它会很快变得复杂。我必须处理所有类型的表达式。它可以是关系的、算术的或逻辑的。对于算术表达式和关系表达式,求值真值表并将表达式转换为CNF将不起作用。