SAT求解器确定多变量函数的特征?

时间:2013-12-04 17:02:50

标签: algorithm math optimization boolean-logic satisfiability

Boolean Satisfiabiity problem是用于检查布尔表达式的可满足性的概括。现在,布尔表达式由多项式的非负性算法生成。例如,多项式可以是$x_1x_2+x_2x_3$$x_1$,其间隔为$x_i\in[0.1,0.3]\;\;\forall i=1,...,n$,其中$n$是变量的数量。我目前使用特殊算法(如分支定界算法)检查多项式的特征,例如非负性,其中我将大问题转化为较小的问题,但缺少某些SAT求解器(如MiniSat所承诺的学习等功能。所以

  
      
  1. 一些SAT求解器用于检查多项式的属性,如多线性函数或一般多变量函数?

  2.   
  3. 将多变量函数和非负性算法转换为布尔表达式的简单方法是什么?

  4.   

1 个答案:

答案 0 :(得分:1)

粗略搜索之后,似乎没有专门用于此目的的SAT求解器或算法来进行您提到的转换。所以看来你的两个问题的答案都是“不”。

使用SAT求解器也存在一些概念性问题。看来变量的域是连续的,这意味着它不能直接转换为SAT。您需要对您的域名进行自由裁量。第二个问题是你需要检查一个不等式,你可以在SAT中编码,但你有可能在问题规模上呈指数级增长。

更合适的范例是constraint programming,尽管支持连续域的求解器很少。

总而言之,在我看来,您当前的分支和绑定方法可能是最合适的方法。我不相信像子句学习这样的技术对你的特定应用程序有用,因为你正在处理实际的间隔。学习本质上的条款是识别可以用来解决问题的隐藏问题结构。它可能对您的问题的SAT编码有所帮助,但是将要发现的所有结构都是将原始问题编码为SAT会丢失的内容。