让 B 是变量 X = { x 1 ,..上的布尔公式集。 。, x n }和 f :[ n ]→ B 。给定估值 v : X →{0,1}以通常的方式扩展到 B ,找到子集 S < / em>的[ n ],这样对于所有, v ( f ( i ))= 1 > i ∈ S (即[ n ]的子集,映射到给定估值所满足的公式)。天真的解决方案包括针对每个 i ∈[ n]测试 v ( f ( i )) ]并在最坏的情况下花费 O ( nm )时间,其中<em> m 是图像中最大公式的大小 f 。我的问题是:我们可以做得更好吗,尤其是当 n 大而 m 小时?
我对数据结构没有事先的承诺,但是出于具体性, f 可能由抽象语法树或嵌套的文字列表表示为数组或字典和公式(假设转换为DNF或CNF没问题)。此外, f 很少更改,而搜索频繁发生。看来这个问题可以归结为布尔电路最小化之类的东西,但是我还没有找到任何在线研究可以导致对上述朴素算法的改进(具有合理的预处理时间)。