我有一个 ANTLR 表达式解析器,它可以使用生成的访问者评估表单 ( A & ( B | C ) ) 的表达式。A 、 B 和 C 可以采用 2 个值中的任何一个true
或false
。但是,我面临着找到表达式为真的 A、B 和 C 的所有组合的挑战。我试图通过以下方法解决这个问题。
- 评估 3 个变量的表达式,每个变量取真假
- 这是 8 种组合,因为 2 ^ 3 是 8
- 我评估将 000, 001, 010 .... 111 之类的值赋予变量并使用访问者进行评估
虽然这可行,但随着变量数量的增加,这种方法变得计算密集。因此,对于具有 20 个变量的表达式,需要进行 1048576 次计算。如何优化这种复杂性以便获得所有真实的表达式?我希望这属于布尔可满足性问题