我正在尝试实现一个非常快速的布尔表达式引擎。我将使用它来表示非常大的状态空间中的状态,因此需要尽可能地处理每秒钟的操作次数。在这个引擎的基础上是一种积和形式。然而,我在优化NOT运算符方面遇到了问题。例如,如果我有N个minterms的积和形式,其中每个minterm大约有M个变量,那么尝试反转它将创建M^N个minterm,然后使用espresso算法简化。如果在反向操作期间间歇性地运行espresso算法,则可以稍微加速并节省一些内存,但这还不够。我怀疑我不是第一个遇到这个问题的人,我已经尝试过研究,但似乎找不到有效的方法。请问有谁能指点一下吗?
(x1&y1)|(x2&y2)|...|(xn&yn)
。否定后,长度为2^n。 - n. m.n
个变量,则使用这n
个变量编写的函数的真值表中将有2^n
个条目。我相当确定,如果您限制自己仅以乘积和形式表示函数,那么总会有一些分配方式,使得乘积和形式必须具有2^n
个最小项。但是,如果您不限制自己使用乘积和形式呢?也许这可以带来更好的替代方案。 - Apiwat Chantawibul