真相 Table 太大而无法计算

Truth Table too big to compute

我有一个这样解析的布尔条件:(a v b) ^ (c ^ d)... 包含列表中的元素。算上变量、括号和运算符,该列表大约有 1000 个元素长。条件中大约有 80 个变量。

我尝试了两种不同的方法,但 none 有效:如果我使用真值 table 来解决条件为真,我在最坏的情况下需要 2^80 次迭代,这需要大量的时间来计算。另一种方法是将条件转换为析取范式,并为一个操作数找到解决方案。此方法适用于较小的条件,但对于较大的条件,系统会耗尽内存,因为结果条件有数百万个元素。

有没有解决这类问题的有效技巧?也许使用数据库来存储元素,或者将真相 table 转换为某种二叉树?

提前致谢,

米格尔

真值表是一种有效的技术——只是并不总是可行

这是 NP 完全问题(事实上, 第一个被 Cook back in 1971). There has been decades of work 证明为 NP 完全问题的问题导致良好的启发式和精确 可能 解决你的问题的方法(有时工作得很快,有时需要数十亿年),但如果你发现一种总能解决此类问题的可行技术,你将既富有又出名。