【发布时间】:2019-05-28 13:08:59
【问题描述】:
我有一个布尔表达式来评估,它很长,有很多不同的情况:
return (a && b && c) ||
(d && e && f) ||
...
这应该返回一个布尔值!
a, b, c, d, e 和 f 是简单的相等比较并且都是不同的。 这将持续 12 行,并给我 44 的圈复杂度
我试图查看 Map 对象以降低复杂性,但没有找到方法。
如何降低这种表达式的复杂性?
【问题讨论】:
-
"a, b, c, d, e 和 f 是简单的相等比较" 相等比较中使用的值是否与问题相关? (是否都将它们与相同的值进行比较)
-
@adiga 否,这些值与问题无关。他们都是不同的
-
@AnthonyMaffert 您返回的预期值是布尔值或组的最后一个值,其中所有值都为真,即
(a && b && c)c 如果所有值都为真 -
@CodeManiac 它期望返回一个布尔值
-
如果没有冗余信息,你希望如何减少它们?您可以更改语法,但不能减少逻辑。您可以查看 Quine-McCluskey,但如果几乎没有重复比较,那将无济于事。编辑:@tevemadar,Carnaugh 不适用于那么多变量。如果有一对总共只有 3 个参数的子句,我们会很幸运,这大约是 Carnaught 所能做到的。
标签: javascript arrays node.js algorithm complexity-theory