【发布时间】:2017-04-17 18:00:07
【问题描述】:
我有一个 ANTLR 表达式解析器,它可以使用生成的访问者评估 ( A & ( B | C ) ) 形式的表达式。 A 、 B 和 C 可以采用 true 或 false 两个值中的任何一个。然而,我面临着找到表达式为真的 A、B 和 C 的所有组合的挑战。我尝试通过以下方法解决。
- 计算 3 个变量的表达式,每个变量取真假
- 这是 8 种组合,因为 2 ^ 3 是 8
- 我评估将 000、001、010 ...... 111 等值赋予变量并使用访问者进行评估
虽然这种方法可行,但随着变量数量的增加,这种方法会变得计算密集。因此,对于具有 20 个变量的表达式,需要进行 1048576 次计算。我怎样才能优化这种复杂性,以便获得所有真实的表达方式?我希望这属于Boolean satisfiabilty problem
【问题讨论】:
-
这是一个接近的答案,仍然需要我的研究。我在等着看是否会有更多的答案
标签: java boolean logic antlr satisfiability