【问题标题】:Any good boolean expression simplifiers out there? [closed]有什么好的布尔表达式简化器吗? [关闭]
【发布时间】:2013-02-15 19:42:04
【问题描述】:

我在重构旧代码时遇到了几个过于复杂和冗长的 IF 条件,我确信它们可以被简化。我的猜测是,由于后来的修改,这些条件增长了很多。

无论如何,我想知道你们中是否有人知道我可以使用的好的在线简化器。我对任何特定的语言都不感兴趣,只是一个简化的例子:

((A OR B) AND (!B AND C) OR C)

如果有的话,给我一个简化版的表达式。

我查看了其他类似的问题,但没有人指出一个好的简化器。

谢谢。

【问题讨论】:

  • WolframAlpha 也到达 C。没有额外的大门...
  • 有一个不错的在线工具 - tma.main.jp/logic/index_en.html
  • 另一个工具是boolean-algebra.com,它将显示解决问题的步骤。例如,你的问题可以只用吸收定律 A+AB = A 来解决。它不是太先进,所以如果你需要最小形式以外的东西,那么你最好使用另一个站点。

标签: boolean-logic boolean-expression


【解决方案1】:

【讨论】:

  • 当布尔公式变得更复杂时,该网站似乎不太适合简化布尔公式。试试这个:(((NOT C) AND (NOT A)) OR ((NOT B) AND (NOT C) AND (NOT D) AND (NOT A)) OR ((NOT B) AND (NOT C) AND D AND A) OR (B AND C AND (NOT D) AND (NOT A)) OR (B AND C AND D AND A))
  • 确实如此。奇怪的。它甚至会在简化版 NOT C AND NOT A OR NOT B AND NOT C AND NOT D AND NOT A OR NOT B AND NOT C AND D AND A OR B AND C AND NOT D AND NOT A OR B AND C AND D AND A 上吐槽。
  • 请注意,如果您想要真值表,对于某些表达式并不总是输出,那么以“真值表”字样开始查询,后跟表达式
【解决方案2】:

试试Logic Friday 1 它包含来自加利福尼亚大学的工具(Espresso 和 misII),并使其可与 GUI 一起使用。您可以根据需要输入布尔方程和真值表。它还具有图形门图输入和输出。

最小化可以进行两级或多级。两级形式产生最小的乘积之和。多级形式创建了一个由逻辑门组成的电路。门的类型可以由用户限制。

您的表达式简化为C

【讨论】:

  • 对于一个快速的在线工具,这真的很有帮助:tma.main.jp/logic/index_en.html
  • 有些计算机代数系统可以使用 Quine-McCluskey 算法简化布尔表达式,例如Sympy
  • Quine-McCluskey 是两级最小化的祖父。Espresso 在 30 年后的 1986 年问世。了解该领域的最新发展会很有趣。
【解决方案3】:

我发现The Boolean Expression Reducer 比Logic Friday 更容易使用。此外,它不需要安装并且是多平台 (Java)。

同样在 Logic Friday 中,表达式A | B 只返回真值表中的 3 个条目;我预计是 4 个。

【讨论】:

  • 在 Logic Friday 1 中激活选项“Truthtable/Show all Rows”。否则,您只会得到输出值为 1 的所有行。
  • 在内部,bexpred 使用简单的算法来合并最小项。它可能对小型表达有所帮助,但绝对不是最先进的。
  • 对于 "A*B*(!A*B+!A*!B)" 输入此 jar 返回 SOP False 但 POS True。不完全可靠的脚本...
  • 链接坏了,谁有工作链接?
猜你喜欢
  • 2016-07-13
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多