【论文阅读-IJCAI-2020】NLocalSAT: Boosting Local Search with Solution Prediction

NLocalSAT: Boosting Local Search with Solution Prediction

IJCAI-2020

Wenjie Zhang1 , Zeyu Sun1 , Qihao Zhu1 , Ge Li1 , Shaowei Cai2,3 , Yingfei Xiong1 and Lu Zhang1∗
1Key Laboratory of High Confidence Software Technologies (Peking University), MoE; Software Institute, Peking University, China
2State Key Laboratory of Computer Science, Institute of Software, Chinese Academy of Sciences, China 3School of Computer Science and Technology, University of Chinese Academy of Sciences, China
{zhang wen jie, szy , zhuqh, lige, xiongyf, zhanglucs}@pku.edu.cn

标题、摘要、关键字

Boolean satisfiability problem (SAT)是计算机中非常著名的NP完全问题。

解决SAT问题的一种简介方法是使用stochastic local search (SLS,随机本地搜索)方法。 然而这个方法中初始化是随机的方式分配的,效率通常比较低

为了解决这个问题,这篇文章提出了NLocalSAT的方法,此方法结合了SLS和解预测模型。通过使用神经网络来改变初始赋值来提升传统SLS方法。

实验在SAT Competition 2018上与5个SLS solvers(CCAnr, Sparrow, CPSparrow, YalSAT, and probSAT) 进行对比,实验结果显示NLocalSAT提升了27%~62%。

简介、结论、图表

简介

问题背景

Boolean satisfiability is the problem to determine whether there exists a set of assignments for a given Boolean formula to make the formula evaluate to true.

SAT is widely used in solving combinatorial problems, which are generated from various applications:

  • program analysis
  • program verification

These applications first reduce the target problem into a SAT formula and then find a solution using a SAT solver.

但布尔可满足性被证明为NP完全问题,这意味着最坏的情况下,可能需要指数时间。因此提出了很多技术来提升AST solvers的效率。

目前SOTA的SAT solver可以分为两类:

  • CDCL (Conflict Driven Clause Learning) solvers
    • CDCL求解器基于深度回溯搜索,该搜索每次都分配一个变量,并在发生冲突时回溯。
  • SLS (Stochastic Local Search) solvers
    • SLS求解器会初始化所有变量的分配,然后通过不断翻转变量的分配以优化某个分数来找到解决方案。

已经有一些利用神经网络解决SAT问题的研究。 其中一些使用端到端神经网络直接解决SAT问题(直接预测一个输入样例是否是SAT的),而其他一些则使用神经网络预测来增强CDCL求解器。
从NeuroSAT 到 NeuroCore ,使用NeuroCore的CDCL solvers相对原始的版本提升了6%-11%。

本文方法

这篇文章提出NLocalSAT,第一个使用NN来提升SLS solvers的方法,以及第一个提升SAT solvers的线下方法(与NeuroCore方法的在线方式不同)。
方法:

  • first train a neural network to predict the solution space of a SAT instance
  • combine SLS solvers with the neural network by modifying the solvers’ initialization assignments under the guidance of the output of the neural network

NLocalSAT solves 27% ∼ 62% more instances than the original SLS solvers。

图表

NLocalSAT结构

在这里插入图片描述

模型中结合了神经网络和SLS solver。
Given a satisfiable input formula, the neural network is to output a candidate solution and the solver is to find a final solution with the guidance of the neural network.
也就是在神经网络输出的候选解中的指导下,求解器得出最终解。
对于一个输入公示,首先转化为一个公式的图,然后喂给一个图神经网络抽取特征。
然后,NLocalSAT通过神经网络之后的多层感知器输出该公式的候选解。
本文使用候选解来初始化SLS SAT solver的赋值,以此来指导搜索的过程。

1、 Formula Graph

模型的第一步是将公式转化为图的形式。
通用布尔公式可以是由变量,并列,析取,否定和常数组成的任何表达式。
所有布尔公式都可以简化为线性时间线性长度的等值合取范式(conjunctive normal form, CNF) [Tseitin, 1983]。也就是说,在CBF中,每个SAT的公式可以表示为 C 1 ∧ C 2 ∧ … ∧ C n C_1 \wedge C_2 \wedge \dotsc \wedge C_n C1C2Cn的形式。每个子句都是符号的析取(即变量和取反变量),如 C i = L i 1 ∨ L i 2 ∨ … ∨ L i n C_i = L_{i1} ∨ L_{i2} ∨ \dotsc ∨ L_{in} Ci=Li1Li2Lin,其中 L i j = x k o r L i j = ¬ x k L_{ij} = x_k or L_{ij} = \neg x_k Lij=xkorLij=¬xk.

A SAT instance S in the CNF can be seen as a bipartite graph G = ( C , L , E ) G = (C, L,E) G=(C,L,E)

  • C (clause set of S)
  • L (literal set of S) are the node sets of G
  • E is the edge set of G.
    • (c, l) is in E if and only if the literal l is in the clause c.

例如, ( x 1 ∨ x 2 ) ∧ ¬ ( x 1 ∧ x 3 ) (x_1 ∨ x_2) ∧ ¬ (x_1 ∧ x_3) (x1x2)¬(x1x3)是一个布尔公式,它可以被转化为 ( x 1 ∨ x 2 ) ∧ ( ¬ x 1 ∨ ¬ x 3 ) (x_1 ∨ x_2)∧(¬x_1 ∨ ¬x_3) (x1x2)(¬x1¬x3)这种合取范式。这个公式的二分图如下所示:

此图的邻接矩阵为:
KaTeX parse error: No such environment: smallmatrix at position 13: \bigl(\begin{̲s̲m̲a̲l̲l̲m̲a̲t̲r̲i̲x̲}̲ 1 & 0 & 1 & 0 …

2、 Graph-Based Neural Network

Graph-Based Neural Network的目的是为了预测出SAT的的候选解。其中包括了使用gated graph convolutional network(GGCN)来抽取图的结构信息,接着使用2层的感知机来预测结果。

SLS算法(结合NN)

传统的SLS算法

随机局部搜索算法可以被视为优化操作, 即求解器翻转(flip)变量的分配以最大化总分。例如,我们可以使用评估为true的子句数作为得分。 当分数达到与子句数量相同时,SAT实例被解决。

算法1是传统的SLS算法,它存在以下的问题:

  • 初始分配对能否快速找到解决方案有很大的影响
  • 在局部最优附近初始化不当会导致SLS求解器卡住

这篇文章提出了使用神经网来指导最初的赋值。用神经初始化来代替初始化函数,其中不是随机生成0或1,而是将预测值以p0概率分配给变量,并将预测值取反的概率设置为1-p0。

NLocalSAT变量初始化方法

可以看出,当随机值小于p0的时候,直接赋值,否则是取反后赋值。

NLocalSAT算法

上图算法为结合了神经网络的算法,与之前的不同地方使用了下划线标注出来。第一个地方待变了使用神经网络来预测,第二个地方也就是算法2中的初始化赋值算法。

结论

这篇文章探索了将SLS与求解预测模型相结合的新颖视角。通过使用NLocalSAT来增强SLS求解器。 实验结果表明,NLocalSAT显著增加了求解实例的数量,并减少了硬实例的求解时间。

通过这种基于学习的方法,我们可以通过使用来自该域的SAT实例训练NLocalSAT来构建不具有该领域专业知识的特定领域的SAT解算器。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页