PauSat
Benjamin Kaiser and Marc Hartung
Zuse Institute Berlin
Berlin, Germany
{kaiser,hartung}@zib.de
译文:通过引入额外的赋值过程,实现了一种结合CDCL求解和SLS求解器特性的方法
关键的知识点:(1)变量依赖列表;(2) CCS ------ conflicting clause stack
|
The search routine of a typical Conflict-Driven-Clause-Learning (CDCL) solver starts in a state in which the variables of a subset of the variables used in the problem are assigned in such a way that there exists no clause in which all occurring literals are assigned false, i.e. a CDCL solver is at this moment always in a state of a non-conflicting partial assignment. 译文:搜索的一个典型Conflict-Driven-Clause-Learning (CDCL)解算器的开始状态变量中使用的变量的一个子集问题被分配的方式,不存在条款中所有文字被分配错误的发生,即CDCL解决这时总是处于非冲突性的部分任务。
译文:然后,CDCL求解器会进一步为一个尚未分配的变量分配一个真值,并使用布尔约束传播(BCP)来查明最后这个决策是否会导致部分分配冲突,并推断出进一步的分配。
In the first case conflict analysis is invoked in order to learn an additional clause from the conflict, which is added to the problem, and conflicting variables are unassigned such that the partial assignment of the variables are nonconflicting. 译文:在第一种情况下,调用冲突分析是为了从冲突中了解添加到问题中的附加子句,并且不分配冲突变量,这样变量的部分分配就不会冲突。 This search routine is repeated until either either a full non-conflicting assignment is reached or the empty clause is learned during conflict-analysis, i.e. either a model of the problem is found or the problem is proven to be unsatisfiable. 译文:这个搜索例程被重复,直到达到一个完整的非冲突的赋值,或者在冲突分析中学习了空子句,也就是说,要么找到了问题的模型,要么证明了问题是不可满足的。 The decision which variable to assign next is based on an activity value assigned to each variable, which is updated during conflict analysis. 译文:下一个分配哪个变量的决定基于分配给每个变量的活动值,该活动值会在冲突分析期间更新。 |
||
|
A typical Stochastic Local Search Solver on the other hand is at any given moment in a state in which all variables are assigned. If this full assignment is conflicting, i.e. if there exists a clause in which all occurring variables are assigned false, a variable is chosen whose assignment is changed from truth to false or vice versa. 译文:另一方面,典型的随机局部搜索求解器是在任意给定时刻,所有变量都被赋值。如果这个完整的赋值冲突,例如,如果存在一个子句,其中所有发生的变量都被赋值为假,那么选择一个变量,它的赋值从真变为假,反之亦然。 We say the truth value of this assignment is flipped. In order to choose a variable, first a clause is chosen in which all occurring literals are assigned false under the current assignment. In the following we will call such a clause a conflicting clause1. 译文:我们说这个任务的真值被翻转了。为了选择一个变量,首先选择一个子句,在当前赋值下,其中所有出现的文字都被赋值为false。在下文中,我们将把这样的条款称为SLS中的冲突条款1。
Afterwards, the variable whose assignment is to be flipped is chosen randomly among the variables occurring in this conflicting clause using some probability distribution.译文:然后,利用一定的概率分布,从冲突子句中出现的变量中随机选取分配翻转的变量。 This process is repeated until a nonconflicting full assignment is reached, in which case a model of the problem is found.译文:重复这个过程,直到达到一个不冲突的完整分配,在这种情况下,问题的模型被发现。 Unlike a CDCL Solver, a typical SLS Solver cannot prove unsatisfiability of the problem. |
||
|
Among other techniques, both solver types, CDCL and SLS, make use of regularly scheduled restarts and furthermore a CDCL solver is forced to regularly delete some of the learned clauses due to the fact that too many (possibly useless) clauses in the problem highly affect the speed of BCP (and due to memory issues). 译文:在其他技术中,解算器类型,CDCL SLS,利用定期重启,此外CDCL解决者被迫经常删除一些条款,由于太多(可能是无用的)条款,高度影响BCP的速度(因为内存问题)。 |
||
|
PauSat is a hybrid solver that tries to combine both Solver types using a novel approach of differentiating between two kinds of variable assignments. PauSat is an implementation of this approach based on the CDCL-Solver Maple LCM Dist [1]. 译文:PauSat是一个混合求解器,它试图使用一种区分两种变量赋值的新方法来结合这两种求解器类型。PauSat是基于cdcl求解器Maple LCM Dist[1]实现的这种方法。 |
||
|
II. PAUSAT’S HYBRID SEARCH |
||
|
In the following, assignments used by BCP and conflict analysis in a standard CDCL solver are called hard assignments. 译文:在下面,标准CDCL求解器中BCP和冲突分析使用的赋值称为硬赋值。
However, at any given moment any variable which is not hard assigned, is furthermore assigned an additional soft truth-value.译文:然而,在任何给定的时刻,任何不是硬赋值的变量,进一步分配一个额外的软真值。 A variable is never both, soft and hard assigned concurrently.译文:一个变量永远不会同时被软和硬分配。 |
||
|
So at the beginning of the CDCL search routine of PauSat the state of the Solver is determined by a potentially conflicting full assignment of the variables, which consist of a nonconflicting partial hard assignment used by the CDCL search routine and a soft assignment of all the variables which are not assigned hard. 因此,在PauSat的CDCL搜索例程的开始,求解器的状态由变量的完全赋值可能产生冲突而确定,这些赋值由CDCL搜索例程使用的非冲突的部分硬赋值和非硬赋值的所有变量的软赋值组成。
Note that at the beginning of the CDCL search routine no clause is conflicting with respect to all hard assignments.译文:注意,在CDCL搜索例程的开始,对于所有的硬赋值,没有子句是冲突的 Thus, at this moment every conflicting clause contains at least one soft assigned variable.译文:因此,此时每个冲突子句至少包含一个软分配变量。 |
||
|
To each variable a list of references of clauses is assigned. In the following this list will be called dependency list of this variable.译文:为每个变量分配子句的引用列表。下面的列表将称为此变量的依赖项列表。 Whenever in the search routine of PauSat a clause is found that is satisfied with respect to the current full assignment (both, soft and hard), one of the true literals in the clause is chosen and a reference of this clause is stored in the dependency list of the corresponding variable. 译文:只要在搜索常规PauSat条款是发现对当前完整的作业感到满意(两者,软、硬),真正的文字之一选择和参考条款的依赖列表存储在相应的变量。 This way it is remembered that this clause remains non-conflicting until the assignment of the chosen variable is flipped. 译文:这样,在所选变量的赋值被翻转之前,这个子句将保持不冲突。 |
||
| B. Initialization of the search | ||
|
After preprocessing the problem at the very beginning of the search, for every variable a soft assignment is chosen randomly. 译文:在搜索开始时对问题进行预处理后,对每个变量随机选择软分配。 PauSat also makes use of restarts, and after every restart every variable is soft assigned according to the last hard assigned truth-value. 译文:PauSat也利用了重新启动,每次重新启动后,根据最后一次硬分配的真值,对每个变量进行软分配。
Hence, the initial state of the search of PauSat is determined by a full assignment consisting of soft assignments only. 译文:因此,PauSat搜索的初始状态是由仅由软分配组成的完整分配决定的。 |
||
|
All remaining clauses are sorted with respect to the maximum of the activities of the variables in the clause and saved in a stack with the clauses containing the variable with highest activity on top. 译文:所有剩余子句都根据子句中变量的最大活动对其进行排序,并保存在堆栈中,在顶部的子句包含活动最高的变量。
At any given moment all clauses in the original problem that are conflicting are contained in this stack. 译文:在任何给定时刻,原始问题中冲突的所有子句都包含在这个堆栈中。 However, this stack may contain satisfied clauses. In the following this stack is called conflicting clause stack (CCS). |
||
| C. Alteration of the CDCL Branching Heuristic | ||
|
The top element of the CCS is removed. If this clause happens to be satisfied, it is added to the list of depending clauses of the variable corresponding to some true literal in the clause. 译文:CCS的顶部元素被删除。如果恰好满足了这个子句,它就被添加到变量的依赖子句列表中,与子句中的某个真正的字面量相对应。
Otherwise, among all soft assigned literals in the clause the one which has highest activity is chosen to be the next decision variable. 译文:否则,在子句中的所有软赋值文字中,活动最高的一个将被选择为下一个决策变量。
All clauses in the dependency list of the corresponding variable are removed from this list and copied onto the top of the CSS. (2020-8-1 疑问:是ccs?)
The assignment of this literal is changed to be hard and flipped. Now, the clause which was on top of the stack of possibly unsatisfied clauses is satisfied, and thus a reference to this clause is added to the dependency of the new decision variable. 译文:这个文字的赋值被改变为硬赋值和标识为已翻转。现在,位于可能未被满足的子句堆栈顶部的子句被满足,因此对该子句的引用被添加到新的决策变量的依赖项中。 |
||
| D. BCP and Conflic Analysis | ||
|
After choosing a new decision variable BCP is invoked in order to check whether the new hard assignment leads to a conflicting partial assignment with respect to all hard assignments and in order to infer further hard assignments. 译文:在选择一个新的决策变量后,BCP被调用,以检查新的硬分配是否会导致与所有硬分配相冲突的部分分配,并推断出进一步的硬分配。 In this process soft assignments are possibly overwritten by hard assignments. Whenever a soft assignment of a variable is overwritten by a hard assignment and simultanously the truthvalue of this variable changes, all clauses in the dependency list of this variable are removed from this list and copied onto the top of the CCS. 译文:在这个过程中,软赋值可能被硬赋值覆盖。当硬赋值覆盖了一个变量的软赋值,同时该变量的真值发生变化时,该变量依赖列表中的所有子句都将从这个列表中删除,并复制到CCS的顶部。 |
||
|
If BCP finds a conflicting clause with respect to all hard assignments, the conflict is analyzed as in any CDCL solver. 译文:如果BCP发现与所有硬赋值有关的冲突子句,则会像在任何CDCL解决程序中一样分析冲突。 However, in order to restore a non-conflicting partial assignment with respect to all hard assignments, variables are not unassigned as in a typical CDCL solver, but rather the hard assignment is turned into a soft assignment and preserved. 译文:但是,为了恢复与所有硬分配不冲突的部分分配,在典型的CDCL求解器中不分配变量,而是将硬分配转换为软分配并保留下来。 |
||
| ACKNOWLEDGMENT | ||
|
We want to express our gratitude towards the organizers of the SAT Competition 2020 for making such an event possible. Additionally we like to thank Florian Schintke for his support and the IT and Data Services members of the Zuse Institute Berlin for providing the infrastructure and their fast help. Also we like to thank the authors of Maple LCM Dist and everyone else contributing to this solver. |
||
|
REFERENCES |
浙公网安备 33010602011771号