Factorization patterns in 3-SAT

DEGREE PROJECT, IN COMPUTER SCIENCE , FIRST LEVEL
STOCKHOLM, SWEDEN 2015
Factorization patterns in 3-SAT
ANALYSIS OF CLAUSE ORDERING FOR
REDUCTIONS OF THE
INTEGERFACTORIZATION PROBLEM
ADRIAN HÄGGVIK, MARWAN KHALILI
KTH ROYAL INSTITUTE OF TECHNOLOGY
CSC SCHOOL
Factorization patterns in 3-SAT
Analysis of clause ordering for reductions of the integer
factorization problem
Adrian Häggvik
Marwan Khalili
Degree Project in Computer Science, DD143X
Supervisor: Per Austrin
Examiner: Örjan Ekeberg
CSC, KTH 2015-05-08
Abstract
Dividing a large integer into factors is a well-known difficult problem
that is heavily used in modern cryptography. One approach to achieve
faster factorizations is to reduce the Integer factorization problem to another difficult problem, for example the Boolean satisfiability problem.
Many studies have been done on the optimization of algorithms that
can solve the Boolean satisfiability problem effectively and multiple programs have been created for the purpose of achieving efficiency. This
study focuses on one of these programs, MiniSAT, with the objective of
finding patterns in the input that result in faster runtimes for solving
reduced instances of the Integer factorization problem.
The method used for finding these patterns was to create different
reductions from the Integer factorization problem to the Boolean satisfiability problem and then solving the reduced instances using MiniSAT.
The order of the clauses in the boolean formulas were changed in order to
analyze which order yields the best results. In total, seven orderings were
tested for factorizing four products using three different reductions.
Our conclusions are that none of the patterns lead to better results
for every test case. Not changing the order of the clauses will achieve
consistent results, however there are cases when shuffles with variance
could be preferable.
Sammanfattning
Uppdelning av ett stort heltal i faktorer är ett välkänt svårt problem som
vardagligen används i modern kryptografi för att kryptera data. Ett visst sätt
att uppnå snabbare tider av faktoriseringen går ut på att reducera instanser
av faktoriseringsproblemet till ett annat svårt problem, till exempel satisfierbarhetsproblemet.
Många studier har gjorts med avseende på optimeringar av algoritmer som
löser satisfierbarhetsproblemet, och flera program har skapats i syftet att lösa
problemet mer effektivt. Denna studie fokuserar på ett av dessa program,
MiniSAT, med målet att hitta mönster i indatan som resulterar i snabbare
lösningstider för reducerade instanser av faktoriseringsproblemet.
Metoden som används för att hitta dessa mönster var att skapa olika reduktioner från faktoriseringsproblemet till satisfierbarhetsproblemet och sedan lösa
de reducerade probleminstanserna med MiniSAT. Ordningen av klausulerna i
de booleanska formlerna ändrades och resultaten för varje ordning analyserades.
Totalt testades sju olika sorteringar för att faktorisera fyra produkter med tre
olika reduktioner.
Våra slutsatser är att inget specifikt mönster ger det bästa resultat för varje
testfall. Att inte ändra ordningen på klausulerna ger konsistenta resultat, men
det finns fall då en ordning som har varierande resultat kan vara att föredra.
Contents
1 Introduction
1.1 Thesis Motivation . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Problem Description . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Background
2.1 FACT to SAT reduction . . . . . . . . .
2.1.1 Long multiplication . . . . . . .
2.1.2 Binary adders . . . . . . . . . . .
2.1.3 Tseitin transformation . . . . . .
2.1.4 Propagation delay . . . . . . . .
2.2 SAT solvers . . . . . . . . . . . . . . . .
2.2.1 Backtracking search algorithm .
2.2.2 Conflict-Driven Clause Learning
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
5
6
6
6
7
8
10
10
10
10
3 Method
11
3.1 Literature study . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Circuit construction . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Test method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Results
14
5 Discussion
17
5.1 Ordering of the clauses . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Adder and product implications . . . . . . . . . . . . . . . . . . . 18
5.3 Test discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Conclusions
19
1
Introduction
The art of decomposing a composite number into smaller integers is known as
the Integer factorization problem (FACT). Although the FACT problem has
been known for a long time its complexity has not yet been determined. There
is no published algorithm that can factorize all integers in polynomial time, yet
there is also no definitive proof that such an algorithm does not exist. This
apparent difficulty of factoring large integers is widely used in modern cryptographic algorithms, such as the RSA encryption [1]. Consequently, improving
the modern factorization algorithms is essential to ensure that these cryptographic algorithms can not be exploited.
Although it may be impossible to develop an algorithm that solves the integer
factorization problem in polynomial time for all integers, there are numerous
ways of solving the problem more efficiently. A possible approach is reducing
the FACT problem to an instance of the Boolean satisfiability problem (SAT).
The SAT problem is known to be a NP-complete problem [2]. Since the
FACT problem is known to be in NP [3], it is possible to reduce every instance
of the Integer factorization problem to an instance of the Boolean satisfiability
problem. One way of reducing instances of the FACT problem to SAT is by
creating multiplier circuits and encoding the circuits to boolean formulas of
different SAT variations, most notably 3-SAT (described in Section 1.3). What
makes this a rewarding approach is the fact that SAT-solvers is an area that
has been investigated thoroughly, to the point where contests are being held to
determine the best solvers for various SAT-problems [4].
1.1
Thesis Motivation
The reduction from FACT to SAT comes with a multitude of possibilities considering optimizations. There are a lot of factors that impact how fast an instance
of the boolean satisfiability problem can be solved.
Despite the creation of many high performance SAT-solvers, there exists
other fields where improvements are possible for factorizing integers using SATsolvers. One of these possibilities is to optimize the input that is treated by the
solvers, which can be done by changing the structure of the boolean formula.
Optimizing the input is not as explored as improving the solvers themselves
which makes the area intriguing. There have been some previous studies on
this subject, but only on a basic level. A study made by Gilles Audemard and
Laurent Simon [5] analyzed if the ordering of clauses and literals, in general
SAT instances, affect a SAT solver called MiniSAT. However, the study was
done with the goal of shedding light on new areas that could be investigated.
This thesis will research patterns of the boolean formulas, specifically in reduced
FACT instances, in hope of finding improvements in the field.
4
1.2
Problem Description
This report will analyse how the order of clauses in a boolean satisfiability
formula affect the performance of a typical CDCL-solver MiniSAT (described
in Section 2.2) evoking the following problem description:
Examine how selected reductions of FACT to 3-SAT relate to each other in
regards to time consumption when ordering of clauses in the 3-SAT formula is
changed. Are there patterns for the reduced instances that lead to better results
using MiniSAT and will these patterns be better suited for some specific circuit
designs?
1.3
Terminology
Terms used in this thesis.
FACT Integer factorization problem
SAT Boolean satisfiability problem.
Literal In mathematical logic, a boolean variable.
Clause Proposition for a SAT formula. Each clause is a disjunction of literals.
CNF Boolean formulas composed solely of conjunctions of clauses.
3-SAT CNF with each clause consisting of at most three literals.
Conflict Literal assignments that causes a clause to become indeterminable.
5
2
2.1
Background
FACT to SAT reduction
Stephen Cook and David Mitchell were the first to propose a reduction of a
FACT instance to SAT:
“A SAT instance would be an encoding of a boolean multiplier circuit computing the known product M from unknown inputs P and Q. Variables are the
bits of P and Q (the inputs of the circuit), together with the outputs of the
gates of the circuit. Clauses assert the correct behavior of the gates and assert
that the output of the circuit represent the given value of M.” [6] This theory
can be used as the foundation for reducing FACT instances to SAT.
2.1.1
Long multiplication
When constructing a boolean multiplier circuit the theoretical goal is to implement the functionality of a multiplication method for binary numbers. A natural
way of calculating the product of two factors is by multiplying the multiplicand
by each digit of the multiplier and add up the properly shifted results [7]. Figure
1 shows an example of this approach called long multiplication, which multiplies
42 (multiplicand) by 57 (multiplier) and arrives at 2,394 as the result.
Figure 1: Long multiplication of 42 by 57 in base 2
In order to construct a circuit that multiplies two numbers using long multiplication, as shown in Figure 1, it is necessary to implement circuits that are
able to add up the shifted results. A multiplier circuit that implements long
multiplication for a set size can be seen in Figure 2.
The addition that is done in the long multiplication is distributed among
the logical units such that each row of logical units in the circuit corresponds to
an addition of two rows in the long multiplication method. This circuit design
requires that each logical unit can pass on their calculation to the next unit,
which can be done using binary adders.
6
Figure 2: Circuit for long multiplication of two 5-bit binary factors
2.1.2
Binary adders
Two common logical units used in circuits are the full adder and the half adder.
The use of these binary adders is to add a number of input bits and output the
result as two output values; a sum-bit and a carryout-bit [8].
The full adder is used when adding two input bits and a carryin-bit. There
are many ways to build a full adder with gates but all of them share the same
output given the same input. The truth table represented in Table 1 shows how
variables should behave with given inputs.
Table 1: Truth table for a full adder
Input
Output
A
B
Cin
Sum
Cout
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
7
The half adder is similar to the full adder except that it does not take a
carryin as an input bit [8]. Half adders often find their use at the start of a
circuit where you want to add two inputs before a carryin-bit is needed. A half
adder behaves according to the truth table shown in Table 2.
Table 2: Truth table for a half adder
Input
2.1.3
Output
A
B
Sum
Carry
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
Tseitin transformation
An approach of encoding a logical circuit into a boolean expression is to use
the Tseitin transformation [9], which outputs a 3-SAT formula with a size that
grows linearly relative to the circuit’s gates. The Tseitin transformation will
directly convert the logical gates to their corresponding boolean logic formulas.
Below follows the 3-SAT representation of corresponding logical gates that
will be used in this report, when encoded using Tseitin transformation:
AN D : Z = X · Y → (X ∨ Y ∨ Z) ∧ (X ∨ Z) ∧ (Y ∨ Z)
N AN D : Z = X · Y → (X ∨ Y ∨ Z) ∧ (X ∨ Z) ∧ (Y ∨ Z)
OR :
Z = X + Y → (X ∨ Y ∨ Z) ∧ (X ∨ Z) ∧ (Y ∨ Z)
XOR : Z = X ⊕ Y → (X ∨ Y ∨ Z) ∧ (X ∨ Y ∨ Z) ∧ (X ∨ Y ∨ Z) ∧ (X ∨ Y ∨ Z)
8
Transforming a logical unit
A demonstration of a Tseitin transformation for a logical circuit can be shown
by transforming a half adder into its 3-SAT counterpart.
Figure 3: Circuit of a half adder
As shown in Figure 3, a half adder can be constructed using one XOR-gate
and one AND-gate, which will generate the following clauses when applying the
Tseitin transformation on the gates:
XOR : (A ∨ B ∨ S) ∧ (A ∨ B ∨ S) ∧ (A ∨ B ∨ S) ∧ (A ∨ B ∨ S)
AN D : (A ∨ B ∨ C) ∧ (A ∨ C) ∧ (B ∨ C)
In order to create fully functional clauses, literals have to be used that correspond to the inputs and outputs of the logical circuit unit. Inputs A and B are
assigned to literals 1 and 2 and outputs S and carry C are assigned the literals
3 and 4. The following clauses will be created, where each clause is represented
by the context inside parentheses:
XOR : (1 ∨ 2 ∨ 3) ∧ (1 ∨ 2 ∨ 3) ∧ (1 ∨ 2 ∨ 3) ∧ (1 ∨ 2 ∨ 3)
AN D : (1 ∨ 2 ∨ 4) ∧ (1 ∨ 4) ∧ (2 ∨ 4)
In order to make the boolean formulas readable for MiniSAT the format has
to be changed to a suggested standard format, DIMACS [10]. The DIMACS
format can be achieved by replacing each disjunction with a whitespace character and each conjunction with the number 0. Each negative value is written as
-x where x is the number of the literal. The final clauses for a transformation
of a half adder to 3-SAT will be the following:
-1 -2 -3 0
-1 -2
3 0
1 -2
3 0
1
2 -3 0
-1 -2 -4 0
-1
4
0
-2
4
0
9
2.1.4
Propagation delay
In circuit design, an important goal is to minimize propagation delay through
adding logical gates. However, previous experiments [11] have shown that superior circuit performance does not guarantee efficiency for the SAT solvers.
2.2
2.2.1
SAT solvers
Backtracking search algorithm
Modern SAT solvers work in different ways. Depending on which actions that
are being preformed during the runtime, the solvers can be affected differently
when input data is altered.
One way to explore the space of variable assignments is by employing a
systematic backtracking search algorithm. The algorithm runs by choosing a
literal and assigning a boolean value to it; all clauses which become true under
the assignment are removed and the formula is recursively checked if it still
is satisfiable. If the check fails, the algorithm backtracks and does the same
recursive check with an opposite polarity assigned to the chosen literal [12].
2.2.2
Conflict-Driven Clause Learning
The Conflict-Driven Clause Learning (CDCL) algorithm [13] enhances the backtracking algorithm by simplifying the set of clauses at each step. The simplification is partly done with unit propagation, which is a procedure to simplify a set
of clauses by identifying literals that occur in only one polarity and eliminating
all clauses that contain those literals. The second simplifying procedure, pure
literal elimination, is split into the following steps:
1. Remove all clauses that are satisfiable with the assigned literals.
2. Remove all occurrences of the assigned literals with the opposite polarity.
The main difference between CDCL and earlier versions of SAT solvers is
that CDCL’s backtracking can be non-chronological, in which case it tries to find
an appropriate level for backtracking by analyzing the conflicting assignments
and adding a new clause which explains and prevents repetition of the same
conflict.
10
3
3.1
Method
Literature study
A literature study was made in order to get a better understanding of how
a reduction from FACT to SAT can be done and the underlying theories for
those reductions were studied. In addition, the literature study identified flaws
in previous research which could provide a basis for this thesis. The information sources were gathered from electronic libraries, mainly academic publishing
websites.
3.2
Circuit construction
Multiplier circuits were implemented for the reductions with a design similar
to the one described in Figure 2 (see Section 2.1.1). Using the same design
structure, the circuit was expanded with additional gates and adders in order
to handle larger factors.
In order to vary the reduced instances, this study used three different implementations of full adders named FA1, FA2 and FAN1. Both FA1 and FA2 are
full adders consisting of two XOR-gates, two AND-gates and one OR-gate. FA2
was implemented as two half adders and one OR-gate whereas FA1 was coded
as individual gates added together, which can be seen in Figure 4 and Figure 5.
Figure 4: Circuit for the full adder FA1, consisting of separate gates
Figure 5: Circuit for the full adder FA2, consisting of two half adders
11
The designs of FA1 and FA2 are almost identical but implemented differently.
The implementations create different orders of the literals within the clauses,
when the circuits are encoded to 3-SAT.
FAN1 varies from FA1 and FA2 in its structure, being made up of only
NAND-gates, as seen in Figure 6. Apart from having less variation of gates,
there is also a difference in the amount of gates that make up the FAN1 full
adder. While both FA1 and FA2 consist of five gates, FAN1 is constructed with
eight gates, resulting in more literals when the circuits are encoded to 3-SAT.
These adder implementations give the tests a broad variation that includes
changes in both gate structure and literal order, which is essential for establishing whether a pattern is suited for a specific circuit design or if the pattern is
universal.
Figure 6: Circuit for the full adder FAN1, consisting of NAND-gates
3.3
Test method
Each multiplier circuit was implemented and encoded to 3-SAT using Tseitin
transformation on each gate in the circuit. The DIMACS format was used for
the representation of the encoded multiplier circuits in 3-SAT because of its
widespread use and easy conversion to other formats [10].
The program of choice for solving the reductions was MiniSAT [14] for its
good documentation and extensive use in previous studies. The test cases were
executed using MiniSAT version 2.2.1 with the default settings enabled. MiniSAT outputs the performance statistics which includes the CPU time and memory usage required for the execution. The program can also present search
statistics such as the number of literals, conflicts and decisions.
All tests were executed on resource machines provided by Royal Institute of
Technology’s School of Computer Science and Communication that are specifically assigned to run computational tests. This will contribute to the test
results’ credibility since the resource machines have the same specifications and
provide limited interferences.
12
The preliminary tests showed that 24-bit factors was suitable for testing a
relatively large amount of reductions while still factorizing big numbers, which
makes differences in performance distinguishable. Since the factors of all products are of a constant 24-bit size, the implemented circuit structures will not
vary between the numbers, apart from using different full adders.
Since prime numbers are used as factors in cryptographic algorithms [11],
all the test cases will factorize semiprime numbers (a semiprime number is a
product of two prime factors).
The products that were factorized in the test cases are the semiprimes listed
below, followed by their prime factors:
• 112,781,490,138,769 = 10,619,863 x 10,619,863
• 178,084,726,903,849 = 10,619,863 x 16,769,023
• 225,827,040,912,091 = 13,466,917 x 16,769,023
• 281,200,132,374,529 = 16,769,023 x 16,769,023
The products were factorized with the three full adders and seven different
sortings of the clauses. The factorization for each sorting was repeated 20 times
for each product and full adder, resulting in 1680 test cases in total. The seven
sortings are described below.
Unshuffled, UN All clauses keep their original order from the input data. The
clauses that represent the literals of the product that is being factorized,
the product clauses, are placed first and the rest of the clauses, rest clauses,
that represent the encoded gates of the circuit is placed after the product
clauses.
Unshuffled reverse UNR Similar to UN, with the exception that the the
product clauses are placed after all the rest clauses. The order of the
product clauses in relation to each other are still the same. The order of
the rest clauses in relation to each other are also the same.
Productshuffle, PROD The order of the rest clauses remains unchanged
while the order of the product clauses, in relation to each other, are shuffled. Product clauses are placed before rest clauses.
Productshuffle reverse, PRODR Similar to PROD with the exception that
the product clauses are placed after the rest clauses.
Restshuffle, REST The order of the product clauses remain unchanged while
the order of the rest clauses are shuffled, in relation to each other. The
product clauses are placed first.
Restshuffle reverse, RESTR Similar to REST with the exception that product clauses are placed last (after the rest clauses).
Fullshuffle, FULL All clauses are shuffled as a group, every clause is therefore
placed randomly in the input data.
13
4
Results
By compiling all the test results into a graph for each factorization, an overview
can be created for the runtimes of the different clause sortings. These graphs
are shown in Figure 7 to Figure 10.
All graphs are represented as box plots which ”uses the median, the approximate quartiles, and the lowest and highest data points to convey the level,
spread, and symmetry of a distribution of data values.”[15] For the these box
plots, the whiskers correspond to the extrema (minimum and maximum values)
while the horizontal line inside each box corresponds to the median value.
For each graph, the horizontal axis represents the different reduced instances
(varying in clause order and full adder). The vertical axis represents the runtime
for the corresponding tests (in seconds).
Figure 7: Box plot for factorizing the product 10619863 x 10619863
14
Figure 8: Box plot for factorizing the product 10619863 x 16769023
Figure 9: Box plot for factorizing the product 13466917 x 16769023
15
Figure 10: Box plot for factorizing the product 16769023 x 16769023
Factorizing the product 16769023 x 16769023 had remarkably low runtime
results for all of the reduced instances. The test cases for this product had
such low runtimes that patterns can perhaps not be conclusively obtained from
these results. The variance shown in Figure 10 could be caused by unrelated
conditions that varied during the runtime of MiniSAT.
16
5
5.1
Discussion
Ordering of the clauses
The results indicate that there is a correlation between the order of the clauses
and the runtime of the MiniSAT solver. By shuffling the clauses, the runtime
in the tested cases could be increased by up to 259000%, corresponding to 1679
seconds (see extrema for FA1 RESTR in Figure 7). This is largely dependant on
how the order of the clauses influence how MiniSAT operates when solving the
SAT instance. In the case mentioned above, the extrema for FA1 RESTR, the
correlation between the number of executed operations and runtime is clear. For
the worst test case, MiniSAT faced 1,492,895 conflicts while only 8,759 conflicts
occurred during the test case with the shortest runtime. Hence, the program
had to solve more conflicts during the execution of the worst test case.
The results showed that the implications of the order had both positive and
negative effects for the runtime of the test cases. The sortings PRODR, REST,
RESTR and FULL produced both the longest and shortest runtimes for all
factorized semiprimes. It would be profitable to use a pattern with variance
if the occasional higher runtimes can be overlooked. That being said, it is
generally preferred to have consistent results in a working environment.
However, changing the order of the clauses does not always affect the results.
If the product clauses are shuffled and placed first among the clauses, the results
do not show any variance. As can be seen in Figure 7 to Figure 9, the maximum
and minimum value for the Productshuffle (PROD) is almost identical to the
mean value. The consistency in the results of PROD indicate that MiniSAT
is not influenced by previous clauses unless they share a literal with the clause
that is being processed. Since there are no literals shared between the product
clauses in any reduction, MiniSAT will not be affected by the order of the
product clauses if they are placed first. In essence, MiniSAT can process product
clauses in any order and achieve consistent results as long as the product clauses
are placed before the rest clauses. This theory is also shown in the graphs by
comparing the box plots for Unshuffled (UN) and PROD, despite the product
clauses being shuffled in PROD they still show similar results as UN for every
test case.
The discrepancy in the results of PRODR compared to PROD could be a
result of how the literals in the product clauses conflict differently with previous literal assignments. If each product clause generates different conflicts
depending on when the clause is processed, the amounts of conflicts will vary
depending on the order of the product clauses. This would mean that the order
of the product clauses does have an impact when they are processed last by
MiniSAT. However, it is not clear from the results if any particular product
clause (for example the clause representing the highest bit of each product) has
a bigger impact on the amount of conflicting literals.
17
5.2
Adder and product implications
As shown in the graphs in Figure 7 to Figure 10, the runtimes varied significantly when different products were factorized. However, for a given product
number the reductions had proportionately similar median values compared to
the differences in their extrema. This implies that the different adder implementations and sortings generally result in similar runtimes. Although with a
small margin, FAN1 persistently showed better results compared to the other
adders, for all the sortings with variance.
5.3
Test discussion
A factor that could have skewed the results were the number of test cases.
In this study, 20 test cases were run for each reduction of the four semiprime
factorizations and this could have led to implications for the resulting data.
Sortings with consistent input data, such as UN, would still show the same
results with more test cases because the sequence of literal assignments in MiniSAT are the same through every test run. This is not the case for the sortings
with variance, these sortings could have given different results over the course
of more test runs. One reason we consider the varying results in this study to
be viable for discussion is because all the test results with high variance have
their first, second and third quartiles within a small interval compared to their
maximum value. The plot for FA2 RESTR in Figure 7 illustrates how small the
box can be compared to the maxiumum, where the three quartiles are equal to
a fourth of the entire interval. This means that a high percentage of the test
results are gathered in a small interval and therefore it is highly likely that the
maximum value is a distinct deviation from the norm.
If this study was to be expanded however, the number of test cases could
be increased to gain more credibility. Also different sorting of the clauses, aside
from the ones used in the study, could be added for comparison. One example
would be sorting the clauses based on the number of literals. This could give
a more clear understanding of the implications that specific clauses orderings
have for the runtime of MiniSAT.
18
6
Conclusions
The test results showed that the order of clauses had a definite impact on
the time consumption for solving selected reductions. While FAN1 generally
produced the shortest runtimes among the reductions with variance, all three
of FA1, FA2 and FAN1 had varying results among the other reductions.
There are no evident patterns that lead to better results for every test case
or for a specific circuit structure. Not changing the order of the clauses will
result in consistent runtimes using MiniSAT, which is desirable for avoiding
irregularities. However, it could be profitable to use a pattern with variance if
the occasional higher runtimes can be overlooked.
19
References
[1] B. Ambedkar, A. Gupta, P. Gautam, S. Bedi. 2011. An Efficient Method
to Factorize the RSA Public Key Encryption. IEEE Communication Systems
and Network Technologies (CSNT), 2011 International Conference. pp. 10811.
[2] S. Cook. 1971. The Complexity of Theorem-Proving Procedures. Proceedings
of the third annual ACM symposium on Theory of computing. pp. 151-158.
[3] É. Tardos, J. Kleinberg. 2005. Algorithm Design, Definition of NP.
Princeton University, Department of Computer Science. Available at:
http://www.cs.princeton.edu/courses/archive/spr05/cos423/lectures/08npcomplete.pdf
[4] M Järvisalo, D Le Berre, O Roussel, L Simon. 2012. The International SAT
Solver Competitions. Association for the Advancement of Artificial Intelligence. pp. 89-94.
[5] G. Audemard, L. Simon. 2008. Experimenting with Small Changes in
Conflict-Driven Clause Learning Algorithms. Principles and Practice of Constraint Programming: 14th International Conference. pp. 630-634.
[6] S. Cook, D. Mitchel. 1997. Finding hard instances of the satisfiability problem: A survey. Volume 35 of DIMACS Series in Discrete Mathematics and
Theoretical Computer Sciene. American Mathematical Society.
[7] A. House. 2003. Design Example: 4-bit Multiplier. University of Toronto,
Department of Electrical and Computer Engineering. Available at:
http://www.eecg.toronto.edu/ ahouse/mirror/engi3861/multiplier example web.pdf
[8] B. Perhami. 2010. Computer Arithmetic - Algorithms and Hardware Designs.
Oxford University Press, Inc. Second Edition.
[9] G. S. Tseitin. 1983. On the Complexity of Derivation in Propositional Calculus. Automation of Reasoning. Second edition. pp. 466-483.
[10] DIMACS Challenge. 2003. Satisfiability Suggested Format. Available at:
http://www.cs.ubc.ca/ hoos/SATLIB/Benchmarks/SAT/satformat.ps
[11] C. Fiorini, E. Martinelli, F. Massacci. 2003. How to Fake an RSA Signature
by Encoding Modular Root Finding as a SAT Problem. University of Trento
Department of Information Engineering and Computer Science.
[12] J. Marques-Silva, K. Sakallah. 1996. Conflict Analysis in Search Algorithms
for Propositional Satisfiability. Proceedings of the Eighth IEEE International
Conference on Tools with Artificial Intelligence. pp. 467-469.
20
[13] J. Marques-Silva. 2010. Boolean Satisfiability Solving Past, Present &
Future. University College Dublin, School of Computer Science & Informatics. Available at: http://www.csi.ucd.ie/staff/jpms/talks/talksite/jpmsitw10.pdf
[14] N. Eén, N. Sörenssson. 2003. An Extensible SAT-solver. Chalmers University of Technology.
[15] D. F. Williams, R. A. Parker, J. S. Kendrick. 1989 The Box Plot: A Simple
Visual Method to Interpret Data. Annals of Internal Medicine, Volume 110.
pp. 916-921.
Figure references
Figure 2
Tree and Array Multipliers. Circuit and System Design Center. Available at:
http://casdc.ee.ncku.edu.tw/class/CA/CH11.pdf#page=20
Figure 5
4-bit binary full adder Doctronics, Educational Publishing for Design & Technology. Available at: http://www.doctronics.co.uk/images/4008 06.gif
Figure 6
S. Ahmed. 2014. Circuit Diagram of NAND-only Full Adder Available at:
http://students.cs.tamu.edu/tanzir/csce350/handout/files/fulladderNAND.png
21
www.kth.se