布尔表达式求解器/简化器

时间:2012-11-24 23:40:05

标签: java c++ boolean eval solver

我正在寻找一个非常大(但不复杂)代数的布尔表达式求解器,如: Boolsche Ausdrücke vereinfachen (Axiome) 我想有一些代码(c ++或java [或库])来简化巨大的布尔表达式。我还没发现什么。我只是想做一些“简单”的转换,如:

a && ~a -> 0

a || a && (b || c) -> a

但更长。我想在目前使用符号(a,b,c1,d1 ..)而不是TRUE,FALSE,0或1。 提前谢谢。

修改 如果我自己写,我可以使用Javaluator并进行评估。 当我有:(adb+c) && d时,我想从繁多开始。有人有想法吗?

1 个答案:

答案 0 :(得分:1)

我最喜欢的工具是Logic Friday 1。 它可以免费用于非商业用途。

Logic Friday 1接受布尔表达式作为公式和真值表。它包括Berkeley工具Espresso和misII的已编译二进制文件。后者用于多级功能。

另一个工具是bc2cnf。它将布尔表达式(或一组表达式)作为“电路”读取并将其转换为连接正常形式(CNF),基本上是OR表达式的乘积。 bc2cnf在此转换期间应用了一些简化规则。对于适度大小的表达式,可以选择将CNF转换为析取正常形式(DNF)并使用Espresso来获得最小化的形式。