Boolean Satisfiabiity problem是用于检查布尔表达式的可满足性的概括。现在,布尔表达式由多项式的非负性算法生成。例如,多项式可以是和,其间隔为,其中是变量的数量。我目前使用特殊算法(如分支定界算法)检查多项式的特征,例如非负性,其中我将大问题转化为较小的问题,但缺少某些SAT求解器(如MiniSat所承诺的学习等功能。所以
一些SAT求解器用于检查多项式的属性,如多线性函数或一般多变量函数?
- 醇>
将多变量函数和非负性算法转换为布尔表达式的简单方法是什么?
答案 0 :(得分:1)
粗略搜索之后,似乎没有专门用于此目的的SAT求解器或算法来进行您提到的转换。所以看来你的两个问题的答案都是“不”。
使用SAT求解器也存在一些概念性问题。看来变量的域是连续的,这意味着它不能直接转换为SAT。您需要对您的域名进行自由裁量。第二个问题是你需要检查一个不等式,你可以在SAT中编码,但你有可能在问题规模上呈指数级增长。
更合适的范例是constraint programming,尽管支持连续域的求解器很少。
总而言之,在我看来,您当前的分支和绑定方法可能是最合适的方法。我不相信像子句学习这样的技术对你的特定应用程序有用,因为你正在处理实际的间隔。学习本质上的条款是识别可以用来解决问题的隐藏问题结构。它可能对您的问题的SAT编码有所帮助,但是将要发现的所有结构都是将原始问题编码为SAT会丢失的内容。