Kaufmann M., Kottler S. (2011) Beyond Unit Propagation in SAT Solving. In: Pardalos P.M., Rebennack S. (eds) Experimental Algorithms. SEA 2011. Lecture Notes in Computer Science, vol 6630. Springer, Berlin, Heidelberg
译文:在SAT求解中超越单位传播
本文的主要内容——译文:我们提出了在当前SAT求解器的主要组件中利用更多推理的有效方法,以减少对正确分支决策的依赖。Our main idea is to consider a clause C for propagation even if it has more than one literal unassigned. 译文:我们的主要思想是考虑子句C用于传播,即使它有多个未分配的文字。译文:在这项工作中,我们的目标是改善布尔约束传播(BCP)在数量方面的影响,可以从一个决策推导。
译文:为了简单起见,我们假定公式F经过简化,不包含任何单元子句。
Abstract.
The tremendous improvement in SAT solving has made SAT solvers a core engine for many real world applications. Though still being a branch-and-bound approach purposive engineering of the original algorithm has enhanced state-of-the-art solvers to tackle huge and difficult SAT instances. The bulk of solving time is spent on iteratively propagating variable assignments that are implied by decisions. |
译文:SAT求解方面的巨大改进使SAT求解器成为许多现实应用程序的核心引擎。虽然仍然是一种分支和限制的方法,但原算法的有目的的工程已经增强了最先进的解决方案,以处理巨大和困难的SAT实例。大量的求解时间花费在迭代传播决策中隐含的变量分配上。 |
In this paper we present two approaches on how to extend the broadly applied Unit Propagation technique where a variable assignment is implied iff a clause has all but one of its literals assigned to false. We propose efficient ways to utilize more reasoning in the main component of current SAT solvers so as to be less dependent on felicitous branching decisions. |
译文:在这篇文章中,我们提出了两种方法来扩展广泛应用的单元传播技术(子句的一个变量赋值是隐含的,当且仅当它的其它所有文字都被赋值为false)。—— BCP的英文表述: The fundamental Unit Propagation technique where a variable assignment is implied iff a clause has all but one of its literals assigned to false. 译文:我们提出了在当前SAT求解器的主要组件中利用更多推理的有效方法,以减少对正确分支决策的依赖。 |
1 Introduction
Satisfiability checking (SAT) is one of the well known NP-hard problems [15] in both theoretical and practical computer science. There are several real-world applications that are actually tackled by modelling parts of these problems as SAT instances like hardware and software verification [34], planning [23], and bioinformatics [28]. 译文:有几个真实的应用程序实际上是通过建模这些问题的部分作为SAT实例来解决的,如硬件和软件验证[34]、规划[23]和生物信息学[28]。 |
The collaboration of theoretical research and algorithm engineering has managed to design and realise highly optimised SAT solvers. 译文:理论研究和算法工程的合作已经设法设计和实现高度优化的SAT求解器。Different types of solvers have been engineered for different types of SAT instances (i.e. real-world, random, handmade). 译文:针对不同类型的SAT实例(即真实的、随机的、手工的)设计了不同类型的求解器。Solvers for real-world applications which are the objective of the presented work compensate the little effort spent for decision making by very fast search and propagation of decisions [12].译文:实际应用的求解器是本文工作的目标,通过非常快速的搜索和决策[12]的传播来补偿在决策制定上花费的很少的努力。 Though this often works for a wide range of instances solvers are highly sensitive to an initial random seed (affecting about 1-2% of decisions [19,10]) and minor changes of parameters.译文:尽管这通常适用于大范围的实例,但求解器对初始随机种子(影响大约1-2%的决策[19,10])和参数的微小变化高度敏感 |
The fundamental Unit Propagation technique where a variable assignment is implied iff a clause has all but one of its literals assigned to false has now been highly optimised and nearly exploited for further speed-ups, so solver engineering has recently taken the line to improve at other stages of solving, e.g. to emphasise more resolution [9,11] and enhanced analysis of conflicting assignments [3,20,31]. 译文:因此,solver engineering最近采取了改进解决问题的其他阶段的路线,例如强调更多的解决问题的能力[9,11]和增强对相互冲突的任务的分析[3,20,31]。 |
However, with this work we are heading for further improvements of propagation from a different point of view. Our motivation is to increase the number of implications that follow from one decision. 译文:然而,通过这项工作,我们将从不同的角度对传播进行进一步的改进。我们的动机是增加一个决策变量所带来的影响。As shown in [35,26] many industrial SAT instances may only require a very small set of variables that are chosen as decision variables. 译文:如[35,26]所示,许多工业SAT实例可能只需要非常小的一组变量作为决策变量。The difficulty is to find such a set of variables. However, an increase of the average number of implications that are caused by one decision will go along with an even smaller set of variables that have to be chosen as decision variables. 译文:然而,一个决策导致的平均影响数量的增加将伴随一个更小的变量集,这些变量必须被选择作为决策变量。Moreover, a smaller number of decisions and a greater number of implications reduces the dependency on felicitous branching decisions.译文:此外,更少的决策和更多的蕴含减少了对正确分支决策的依赖。 |
Our main idea is to consider a clause C for propagation even if it has more than one literal unassigned. 译文:我们的主要思想是考虑子句C用于传播,即使它有多个未分配的文字。 |
The set of unassigned literals in clause C might have a common implication li.译文:子句C中未分配的文字集可能有一个共同的蕴含文字li。 If so, li can be propagated even though C is not unit. In this process we use all binary clauses of a formula to check for common implications of literals. 第一步,我们遍历子句集的全部二元子句检查公共的蕴含文字。In the next section we give basic definitions and sketch the state-of-the-art of SAT solving.接下来,在第二章节我们给出最新求解器的基本定义和发展概述, Section 3 explains two approaches on how to realise extended propagation. 第三章节我们解释了给出如何实现两种扩展传播。In section 4 the two approaches are evaluated. Section 5 finally concludes this work.译文:第4节对这两种方法进行了评价。第5节最后总结了这项工作。 |
2 Basic Definitions and State of the Art
![]() |
![]() |
2.1 Boolean Constraint Propagation |
The main ingredient of any conflict driven SAT solver is clearly a fast implementation of Boolean Constraint Propagation (BCP). For the bulk of SAT instances more than 80% of the runtime is spent on Unit Propagation [30,25]. On the other hand relatively little computational effort is spent on choosing decision variables. This constitutes ongoing research to improve the speed of BCP [30,10,14]. 译文:任何冲突驱动的SAT求解器的主要成分显然是布尔约束传播(BCP)的快速实现。译文:对于大量的SAT实例,超过80%的运行时用于单元传播[30,25]。译文:另一方面,相对较少的计算工作花费在选择决策变量。这构成了正在进行的提高BCP速度的研究[30,10,14]。 |
![]() |
In order to analyse a conflict (line 9 of Algorithm 1) a CDCL solver maintains a so-called reason for each assigned variable. This reason can either be empty for decision variables or it stores the clause which forced the variable to be assigned by Unit Propagation. In the example the variable of l1 has reason Cj . 译文:为了分析冲突(算法1的第9行),CDCL求解器为每个分配的变量维护一个所谓的原因子句。译文:对于决策变量,这个原因子句可以是空的,也可以存储强制由单元传播分配变量的子句。 |
The application of more and advanced reasoning in SAT solving has been studied in several different contexts [33,5]. The so-called Look-ahead solvers [27,8,21,12] aim to improve the quality of branching decisions and thus to guide the solvers search. One of the basic ideas is to propagate both assignments of a variable x before a decision on x is finally made. In doing so further reductions may be applied to the formula [27,8,22]. Look-ahead solvers are particularly successful for handmade and unsatisfiable random instances[1]. Our approach differs in this respect that Unit Propagation itself is extended rather than the decision process. 译文:更多和高级推理在SAT解决中的应用已经在几个不同的上下文中被研究[33,5]。译文:所谓的向前看求解器[27,8,21,12]旨在提高分支决策的质量,从而指导求解器的搜索。译文:其中一个基本思想是在最后对x做出决定之前传播变量x的两个赋值。这样,公式[27、8、22]可进一步裁减。 译文:对于手工的和不可满足的随机实例[1],预先求解器特别成功。我们的方法在这方面有所不同,单位传播本身是扩展的,而不是决策过程。 |
Recent work [3,31,20] improves on the quality of clause learning. In [31] the authors focus on particular missed implications that are not caught by Unit Propagation. 译文:在[31]中,作者关注的是没有被单位传播捕捉到的被忽略的特殊含义。Conflict analysis is modified to learn some additional clauses in order to improve the quality of subsequent propagation. 译文:对冲突分析进行了修改,增加了一些子句,以提高后续传播的质量。Our approach aims to tackle the missed implications already at each propagation step.译文:我们的方法旨在解决在每个传播步骤中已经错过的含义。 |
Our extension of Unit Propagation is eminently based on the set of binary clauses in a formula. 译文:我们对单位传播的扩展主要基于公式中的二进制子句集。In [6,4,13,33] special treatments of binary clauses are proposed. 译文:在[6,4,13,33]中提出了二进制子句的特殊处理。Bacchus introduces the concept of Hyper-binary resolution in combination with the computation of the complete binary closure. 译文:Bacchus将超二进制分辨率的概念与完全二进制闭包的计算相结合。Applying this approach at each level of the SAT search captures the implications generated with our approach. 译文:在SAT搜索的每个级别上应用这种方法,可以得到我们的方法所产生的影响。However, this turns out to be too time consuming for today’s SAT instances. In [13], a similar idea was used but only as a preprocessor for SAT formulae.译文:但是,对于今天的SAT实例来说,这太耗时了。在[13]中,使用了类似的想法,但只是作为SAT公式的预处理器。 |
3.Enhancing BCP
In this work we aim to improve Boolean Constraint Propagation (BCP) in terms of the number of implications that can be derived from one decision. 译文:在这项工作中,我们的目标是改善布尔约束传播(BCP)一个决策变元所能蕴含推导出的文字数量方面的影响。This is contrary to a common focus in research on how to improve the speed of Unit Propagation [30,14]. 译文:这与如何提高单位传播速度的研究普遍关注的焦点相反[30,14]。In this section we introduce two ideas on how to extend classical BCP. An evaluation and comparison of both implementations are given in section 4. We use basic concepts from graph theory and algorithms e.g. [16]译文:在本节中,我们将介绍关于如何扩展经典BCP的两个概念。第4节对这两种实现进行了评估和比较。我们使用图论和算法的基本概念,如[16] |
3.1 General Observations on Clauses and Implications 子句及蕴含的一般性观察结论 |
In classical Unit Propagation any clause Cj ∈ C can imply the value for at most one variable. As described above this applies if all but one literals of Cj are falsified by a partial assignment of the variables. However, it may happen that Cj does not have to become unit until the value of a variable can be implied. This goes along with the fact that Cj may directly imply values for more than one variable.译文:然而,Cj可能不需要成为单位,直到可以隐含变量的值。这与Cj可能直接隐含多个变量的值这一事实相一致。 |
![]() |
![]() |
在赋值l4、l5为false时,原本子句C5不是单元子句。假设还有如图1 (a)所示的四个二元子句存在。基于这四个二元子句可以发现它们在CNF中构成了一个特殊约束:Any binary clause can be understood as two implications. By applying the idea of Unit Propagation one can claim that if one of the two literals is false the value of the other variable is implied.译文:任何二进制子句都可以理解为两个含义。通过应用单位传播的思想,我们可以断言,如果两个字面值中的一个为假,则蕴含得到另一个变量的值。构成的蕴含图见Fig.1(b)。对应于全体二元子句可以建立蕴含图:每个文字及及其反文字是图中的两个顶点,二元子句中一个文字和另一个文字的反文字之间有一条边相连。于是,单纯从图上看,一个顶点文字为真,可以推导出所指向的顶点文字也为真。所以对于Fig.1可知:(1)C5在在赋值l4、l5为false时不是单元子句,需要l1、l2、l3中的任何一个为真C5即可满足;(2)l1、l2、l3中的任何一个为真由蕴含图可以推理出l7必定为真;(3)因此即使C5在在赋值l4、l5为false时形式上不是单元子句,但是可以推理出l7必定为真,实际上C5起到了单元子句的作用。——这就是扩展BCP。 发现这样的样例就实现了扩展单位传播。由于BCP在CDCL解决中是一个非常关键的部分,因此需要快速执行。在接下来的两个小节中,我们将介绍关于如何更有效地实现扩展传播的两个想法。
|
3.2 A Matrix Based Approach |
To extend Boolean Constraint Propagation as described above the algorithm has to determine if for a given clause all unassigned variables have some common implication. 译文:如前所述,要扩展布尔约束传播,算法必须确定对于给定子句,所有未分配的变量是否有一些共同的含义。This is equal to a reachability problem in the implication graph. Additional computation like breadth–first search during BCP is beyond question.译文:这等于隐含图中的可达性问题。在BCP中,像宽度优先搜索这样的额外计算是毫无疑问的。 Clearly, an adjacency matrix of vertices (i.e. literals) could allow for fastest computation. However, industrial SAT instances range up to 10 million variables which makes a quadratic matrix evidently infeasible. 译文:然而,工业SAT实例涉及多达1000万个变量,这使得二次矩阵显然不可行。To cope with a high number of literals by allowing random matrix access we formulate the following observation:译文:为了处理允许随机矩阵访问的大量文字,我们制定了以下观察: |
![]() |
![]() |
Fig. 2. Sink matrix of one component. Inner vertices are drawn as dark octagons, sinks are drawn bright ellipses. In (b) the compression of the matrix by reduction of epigone vertices is given. Epigone vertices have transparent fill colours. |
We denote the set of all sinks in G by σ ⊆ V . With Observation 1 reachability information is only required for pairs of vertices a, b ∈ V where one vertex is a sink (b ∈ σ) and the other is an inner vertex (a ∈ V \ σ). Although Observation 1 is evident this already reduces the size of a reachability matrix drastically in practice (cf. Section 4). Moreover, in our application the implication graph often decomposes into several (disconnected) components γj ∈ V . Hence, the functionality of the adjacency matrix can be achieved by holding several independent nj × sj - matrices, with j being the index, sj the number of sinks and nj the number of inner vertices of the j-th component γj . An example of a reachability matrix is given in Figure 2(a). Note that the indices of sinks and inner nodes are consistently assigned within each component. The observation requires an acyclic directed graph. The removal of strongly connected components (SCC) can be combined with equivalence reasoning.译文:强连接部件的去除可以与等价推理相结合。 Literals belonging to the same SCC are identical and can be replaced by one representing literal as in [6,9]. 译文:属于同一个SCC的文字是相同的,可以被替换为一个表示文字,如[6,9]。Thus, by computing SCCs the algorithm detects equivalent literals and furthermore, achieves the requirements of Observation 1.译文:因此,算法通过计算SCCs来检测等价文字,从而达到观测1的要求。 |
First and foremost the aim of the matrices is to predict whether or not a set V' ⊂ V of vertices reaches a common vertex. It is not important at first place to exactly know the sink that can be reached when starting from V' . Moreover, the matrices are only consulted to provide answers into one direction: ”Do some vertices have a common successor?”, but not the other way around: ”Is a sink reached by some particular inner vertices?”. This allows for further lossless compression of a reachability matrix by Observation 2. 译文:一些顶点有一个共同的后继吗? 译文:某个特定的内部顶点是否到达一个接收器? |
![]() |
In particular with Observation 2 any epigone v of w can be reduced: if w is a sink then v becomes a sink with the same sink ID as w.译文:如果w是一个接收器,那么v就是一个ID和w相同的接收器。译文:特别地,根据观察2,w的任何epigone v都可以简化为: Otherwise v becomes an inner vertex sharing the same column as w in the reachability matrix.译文:否则v成为可达矩阵中与w同列的内顶点。 In Figure 2 the compression of a reachability matrix is shown in an example.译文:在图2中,一个实例显示了可达矩阵的压缩。 |
The reachability matrices can further be compressed by omitting leading and ending blank entries in each column. 译文:可达矩阵可以通过省略每列的前导和末尾的空白项进一步压缩。Two additional integers can give the range for each column. 译文:另外两个整数可以给出每个列的范围。We only apply this for a column if the overhead of the additional integers does not exceed the saving of memory.译文:只有当额外整数的开销不超过节省的内存时,我们才将此应用于列。 |
![]() |
译文:因此(新的)SCCs如上所述被删除。随后计算一个新的矩阵,它需要在这个组件上执行一次深度优先搜索。注意,当顶点从图中移除时,组件也可能被分割。只要学习了一个单元子句,就会出现这种情况。 |
Utilizing matrices in BCP |
During usual BCP each clause has two watched literals [30]. Whenever a literal l becomes false all clauses being watched by l are traversed to check whether a clause becomes unit. 译文:每当一个文字l变为false时,就遍历l监视的所有子句,以检查一个子句是否成为单元。If for a clause C ∈ C another unassigned or true literal ln ∈ C can be found, ln takes over to watch C, otherwise C became unit under the current assignment and Unit Propagation applies as described in 2.1. |
At this point we extend the usual Unit Propagation: For a touched clause that is not yet fulfilled by the current partial assignment we check whether the remaining unassigned literals belong to the same component. For early detection of conflicts Unit Propagation is finished first until those clauses are finally checked for extended BCP. If the corresponding reachability matrix indicates that the free literals of one clause have a common successor a breadth–first search is applied to compute the topmost common successors. Note that the matrix may still be misleading since it may happen that all common successors are already assigned. |
译文:在这一点上,我们扩展了通常的单元传播:对于当前部分赋值尚未完成的touched子句,我们检查其余未赋值的文字是否属于同一组件。对于冲突的早期检测,单元传播首先完成,直到这些子句最终检查扩展BCP。译文:如果相应的可达矩阵表明一个子句的自由字量有一个公共后继,则应用宽度优先搜索来计算最上层的公共后继。译文:请注意,这个矩阵可能仍然具有误导性,因为可能发生的情况是,所有共同的继承人都已被指定。 |
3.3 A Convenient Alternative |
The reachability matrix approach constitutes a feasible way to enhance the broadly used Unit Propagation in SAT solving. 译文:可达矩阵法是提高SAT求解中广泛应用的单元传播的一种可行方法。However, the maintenance of components and their matrices requires quite some computational effort. Moreover, the compression factor varies for different instances. 译文:然而,组件及其矩阵的维护需要相当多的计算工作。此外,压缩因子对于不同的实例是不同的. In this subsection we present an alternative method that approximates the reachability matrix in a practical sense but considerably outperforms the previous approach.译文:在本节中,我们提出了一种替代方法,它在实际意义上近似可达矩阵,但在很大程度上优于前面的方法。 |
![]() |
Fig. 3. The left graph shows the implications of usual Unit Propagation of binary clauses when assigning literal 1. During propagation the sink-tag 1 can be set in the implication graph for all literals having opposite polarity to the literals reached by propagation. |
The idea is to cache reachability information on the fly while usual Unit Propagation is performed. 译文:其思想是在执行通常的单元传播时快速缓存可达性信息。Whenever a variable vi is assigned a value b ∈ {true, f alse}, we first propagate all unit implications that are caused by binary clauses. 译文:我们首先传播由二进制子句引起的所有单位子句蕴含文字。In this step, values are assigned to exactly those variables vj whose vertices lj or lj are successors of li if b = true resp. li if b = f alse in the implication graph. |
![]() |
![]() |
Clearly, the sink-tag approach only caches one possible target that can be reached by a vertex. Furthermore, the target does not necessarily have to be a real sink. Thus, this approach does not require the removal or detection of strongly connected components. In Figure 3 the propagation of 1 assigns sink-tag 1 to the vertices shown in the right graph. When asking for a common successor of vertices 6 and 7 (at a later point in solving) the sink-tag would indicate and even name the correct answer. However, when asking for a common successor of vertices 7 and 8 the sink-tag approach would miss the common successor unless sink-tags are changed by Unit Propagation starting from 2 or 4. |
Utilizing sink-tags in BCP Sink-tags can be utilized in a way similar to components and reachability matrices. However, sink-tags represent and replace both - components and bits in a reachability matrix: When a clause is touched during Unit Propagation we additionally check whether all unassigned literals have the same sink-tag. At this point we differentiate two approaches: |
|
|
Note that a sink-tag literal li of an unassigned variable v can never be f alse since due to binary implications li would have implied an assignment to v. |
译文:显然,纯单位传播比使用矩阵方法的扩展传播需要更多的决策。 |
Fig. 5. Each plotted curve represents the performance of one solver on the set of hard benchmarks. One point (x, y) indicates that x instances were solved within y seconds. |
译文:对于悲观方法,只在有效的公共后继明确存在时应用扩展传播是有好处的。译文:与纯单元传播的标准CDCL相比,它可以解决更多的实例。 |
Our results also indicate that there is no significant difference between satisfiable and unsatisfiable instances for the different techniques.译文:我们的结果还表明,对于不同的技术,可满足和不可满足的实例之间没有显著的差异。 |
4 Experiments
![]() |
Fig. 5. Each plotted curve represents the performance of one solver on the set of hard benchmarks. One point (x, y) indicates that x instances were solved within y seconds. |
5 Conclusion
Our goal was to reduce the number of branching decisions and to improve the quality of propagation of variable values in SAT solving. In this paper we have presented two approaches on how to extend the broadly used Unit Propagation. The first approach of maintaining reachability matrices shows how the quality of propagation can be improved. The second approach constitutes an inexpensive approximation to the matrix approach. Although not reaching the same quality as the former it clearly outperforms not only the other approaches but also the highly optimised standard CDCL with pure Unit Propagation. |
译文:我们的目标是减少分支决策的数量,并提高SAT求解中变量值的传播质量。译文:在本文中,我们提出了两种扩展广泛使用的单元传播的方法。译文:第一种保持可达矩阵的方法展示了如何提高传播质量。译文:第二种方法是一种廉价的近似矩阵方法。译文:尽管没有达到与前者相同的质量,它显然不仅优于其他方法,而且优于高度优化的标准CDCL纯单位传播。 |
The matrix and the sink-tag approach both consider implications given by binary clauses.译文:矩阵和下沉标记方法都考虑二进制子句的含义。 However, this can be called static since clauses that become binary under a partial assignment are not considered. 译文:但是,这可以称为静态的,因为不考虑在部分赋值下变成二进制的子句。Such clauses would add temporary edges to the implication graph.译文:这样的子句会给隐含图增加临时的边。 However, this would require a permanent update of the graph and the matrix. 译文:但是,这将需要对图和矩阵进行永久更新。For future research it would be interesting to analyse a more dynamic approach that is not limited to static binary clauses. 译文:对于未来的研究,分析一种不局限于静态二元分句的更动态的方法将是很有趣的。This will probably further improve extended propagation but it is open how to realise this efficiently.译文:这可能会进一步改进扩展传播,但如何有效地实现这一点是未知的。 |
References
1. The international SAT competition (2002-2009), www.satcompetition.org
2. Aspvall, B., Plass, M.F., Tarjan, R.E.: A Linear-Time Algorithm for Testing the Truth of Certain Quantified Boolean Formulas. Inf. Proc. Lett. 8, 121–123 (1979)
3. Audemard, G., Bordeaux, L., Hamadi, Y., Jabbour, S.J., Sais, L.: A generalized framework for conflict analysis. In: Kleine B¨uning, H., Zhao, X. (eds.) SAT 2008. LNCS, vol. 4996, pp. 21–27. Springer, Heidelberg (2008)
4. Bacchus, F.: Enhancing Davis Putnam with Extended Binary Clause Reasoning. In: 18th AAAI Conference on Artificial Intelligence, pp. 613–619 (2002)
5. Bacchus, F.: Exploring the computational tradeoff of more reasoning and less searching. In: SAT, pp. 7–16 (2002)
6. Bacchus, F., Winter, J.: Effective preprocessing with hyper-resolution and equality reduction. In: Giunchiglia, E., Tacchella, A. (eds.) SAT 2003. LNCS, vol. 2919, pp. 341–355. Springer, Heidelberg (2004)
7. Beame, P., Kautz, H.A., Sabharwal, A.: Understanding the power of clause learning. IJCAI, 1194–1201 (2003)
8. Berre, D.L.: Exploiting the real power of unit propagation lookahead. Electronic Notes in Discrete Mathematics 9, 59–80 (2001)
9. Biere, A.: Precosat solver description (2009), fmv.jku.at/precosat/preicosat-sc09.pdf
10. Biere, A.: Picosat essentials. JSAT 4, 75–97 (2008)
11. Biere, A.: Lazy hyper binary resolution. In: Algorithms and Applications for Next Generation SAT Solvers, Dagstuhl Seminar 09461, Dagstuhl, Germany (2009)
12. Biere, A., Heule, M., van Maaren, H., Walsh, T. (eds.): Handbook of Satisfiability. Frontiers in Artificial Intelligence and Applications. IOS Press, Amsterdam (2009)
13. Brafman, R.I.: A simplifier for propositional formulas with many binary clauses. IJCAI, 515–522 (2001)
14. Chu, G., Harwood, A., Stuckey, P.J.: Cache conscious data structures for boolean satisfiability solvers. JSAT 6, 99–120 (2009)
15. Cook, S.A.: The complexity of theorem-proving procedures. In: STOC (1971)
16. Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, 2nd edn. The MIT Press and McGraw-Hill Book Company (2001)
17. Davis, M., Logemann, G., Loveland, D.: A machine program for theorem-proving. Commun. ACM 5(7), 394–397 (1962)
18. Davis, M., Putnam, H.: A computing procedure for quantification theory. J. ACM 7(3), 201–215 (1960)
19. E´en, N., S¨orensson, N.: An extensible SAT-solver. In: Giunchiglia, E., Tacchella, A. (eds.) SAT 2003. LNCS, vol. 2919, pp. 502–518. Springer, Heidelberg (2004)
20. Han, H., Somenzi, F.: On-the-fly clause improvement. In: Kullmann, O. (ed.) SAT 2009. LNCS, vol. 5584, pp. 209–222. Springer, Heidelberg (2009)
21. Heule, M.: SmArT Solving. PhD thesis, Technische Universiteit Delft (2008)
22. Heule, M., Maaren, H.V.: Aligning cnf- and equivalence-reasoning. In: Hoos, H.H., Mitchell, D.G. (eds.) SAT 2004. LNCS, vol. 3542, pp. 174–181. Springer, Heidelberg (2005)
23. Kautz, H.A., Selman, B.: Planning as satisfiability. In: Proceedings of the Tenth European Conference on Artificial Intelligence, ECAI 1992, pp. 359–363 (1992)
24. Kottler, S.: Solver descriptions for the SAT competition 2009, satcompetition.org
25. Kottler, S.: SAT Solving with Reference Points. In: Strichman, O., Szeider, S. (eds.) SAT 2010. LNCS, vol. 6175, pp. 143–157. Springer, Heidelberg (2010)
26. Kottler, S., Kaufmann, M., Sinz, C.: Computation of renameable horn backdoors. In: Kleine B¨uning, H., Zhao, X. (eds.) SAT 2008. LNCS, vol. 4996, pp. 154–160. Springer, Heidelberg (2008)
27. Li, C.M., Anbulagan: Look-ahead versus look-back for satisfiability problems. In: Principles and Practice of Constraint Programming (1997)
28. Marques-Silva, J.P.: Practical Applications of Boolean Satisfiability. In: Workshop on Discrete Event Systems, WODES 2008 (2008)
29. Marques-Silva, J.P., Sakallah, K.A.: Grasp: A search algorithm for propositional satisfiability. IEEE Trans. Comput. 48(5), 506–521 (1999)
30. Moskewicz, M.W., Madigan, C.F., Zhao, Y., Zhang, L., Malik, S.: Chaff: engineering an efficient SAT solver. In: DAC (2001)
31. Pipatsrisawat, K., Darwiche, A.: On modern clause-learning satisfiability solvers. J. Autom. Reasoning 44(3), 277–301 (2010)
32. Selman, B., Kautz, H., Cohen, B.: Local search strategies for satisfiability testing. In: Cliques, Coloring, and Satisfiability: DIMACS Implementation Challenge (1993)
33. Van Gelder, A., Tsuji, Y.K.: Satisfiability testing with more reasoning and less guessing. In: Johnson, D.S., Trick, M. (eds.) Cliques, Coloring, and Satisfiability: Second DIMACS Implementation Challenge. AMS, Providence (1996)
34. Velev, M.N.: Using rewriting rules and positive equality to formally verify wideissue out-of-order microprocessors with a reorder buffer. In: DATE 2002 (2002)
35. Williams, R., Gomes, C., Selman, B.: Backdoors to typical case complexity. IJCAI (2003)
36. Zhang, L., Madigan, C.F., Moskewicz, M.H., Malik, S.: Efficient conflict driven learning in a Boolean satisfiability solver. In: ICCAD 2001 (2001)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY