Optimization 真值表太大,无法计算

Optimization 真值表太大,无法计算,optimization,boolean-expression,np,Optimization,Boolean Expression,Np,我有一个如下解析的布尔条件:(avb)^(c^d).,元素在列表中。将变量、括号和运算符都计算在内,该列表大约有1000个元素。该条件中大约有80个变量 我尝试过两种不同的方法,但都不起作用:如果我使用真值表来解决条件为真的问题,在最坏的情况下,我需要2^80次迭代,这将需要大量的计算时间。另一种方法是将条件转换为分离范式,并仅为一个操作数找到一个解决方案。这种方法确实适用于较小的条件,但对于较大的条件,系统会耗尽内存,因为结果条件有数百万个元素 有没有一种有效的方法来解决这类问题?也许使用数据

我有一个如下解析的布尔条件:
(avb)^(c^d).
,元素在列表中。将变量、括号和运算符都计算在内,该列表大约有1000个元素。该条件中大约有80个变量

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

有没有一种有效的方法来解决这类问题?也许使用数据库来存储元素,或者在某种二叉树中转换真值表

提前感谢,

米格尔

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

这是NP完全问题(事实上,这是1971年第一个被证明是NP完全的问题)。在这个问题上,有很多好的启发法和精确的方法(有时工作很快,有时需要数十亿年)可以解决你的问题,但是如果你发现一种可行的技术总是能解决这些问题,你就会既富有又出名。

miniat()也许是解决这个问题最著名的OSS软件。正如@JohnColeman的回答,这是一个NP完全问题,但研究了许多好的启发式方法。