我正在尝试编写一段可以将布尔表达式的 LENGTH 减少到最小的代码,因此代码应该将表达式中的元素数量减少到尽可能少。现在我被困住了,我需要一些帮助=[
规则如下:布尔表达式中可以有任意数量的元素,但它只包含 AND 和 OR 运算符,以及括号。
例如,如果我传入一个布尔表达式:ABC+BCD+DE,则最佳输出为 BC(A+D)+DE,与原来的相比节省了 2 个单位空间,因为这两个 BC 合二为一。
我的逻辑是,我会尝试找出表达式中出现频率最高的元素,并将其分解出来。然后我递归地调用该函数对分解的表达式做同样的事情,直到它被完全分解。但是,我怎样才能找到原始表达式中最常见的元素?也就是说,在上面的例子中,BC? 似乎我必须尝试所有不同的元素组合,并找出每个组合在整个表达式中出现的次数。但这听起来真的很幼稚。第二
有人可以提示如何有效地做到这一点吗?甚至我可以在 Google 上搜索到的一些关键字也可以。