addition dna
TRANSCRIPT
-
8/8/2019 Addition Dna
1/10
Addressable procedures for logic and arithmetic operations with DNA strands
Akihiro Fujiwara
, Kenichi Matsumoto
, Wei Chen
Department of Computer Science and Electronics
Kyushu Institute of Technology680-4 Kawazu, Iizuka, Fukuoka 820-8502, JAPAN
Faculty of Mathematical Sciences and Information Engineering
Nanzan University
27, Seirei, Seto, Nagoya 489-0863, JAPAN
Department of Computer Science
Tennessee State University
3500 John A Merrit Blvd, Nashville, TN37209, U.S.A.
E-mail: [email protected]
Abstract:
In this paper, we consider addressable procedures with DNA strands for logic and arithmetic operations. Using
a theoretical model for DNA computing, we first show a DNA representation of binary numbers of bits, and
propose a procedure to assign values for the representation. The procedure is applicable to binary numbers of
bits in
lab steps in parallel. Next, we propose a procedure for logic operations. The procedure enables
any boolean operation whose input and output are defined by a truth table, and executes different kinds of boolean
operations simultaneously for any pair of
binary numbers of
bits in
lab steps using
DNA strands.
Finally, we propose a procedure for additions of pairs of two binary numbers. The procedure works in
lab
steps using DNA strands for additions of two -bit binary numbers.
Key words: DNA computing, logic and arithmetic operations
1 Introduction
In recent works for high performance computing, computation with DNA molecules, that is, DNA computing, has
considerable attention as one of non-silicon based computings. The massive parallelism of DNA strands enables
us to solve combinatorial! "
-complete problems, which need exponential computation time on a silicon based
computer, in a polynomial number of steps. As the first work for DNA computing, Adleman[1] presented an idea
of solving the Hamiltonian path problem of size in lab steps using DNA molecules. His idea is successfully
tested in a lab experiment for a small graph. Lipton[6] showed methods for solving the SAT problem of size in
lab steps using DNA molecules. There are a number of other works with DNA molecules for combinatorial
! " -complete problems.
However, procedures for primitive operations, such as logic or arithmetic operations, are needed to apply DNA
computing on a wide range of problems. There are some works for primitive operations in DNA computing[2, 3,
4, 5, 9]. Guarnieri et.al.[3] has proposed the first procedure for the addition of two binary numbers using DNAmolecules. The procedure works in lab steps using different DNA strands for an addition of two -
bit binary numbers. Recently, Hug and Schuler[5] proposed a model for representing and manipulating binary
numbers on the DNA chip, which allows parallel execution of a primitive operation. Their procedure computes
an addition of two
-bit binary numbers in
lab steps using
different DNA strands. However, their
procedure allows only one single operation in parallel execution for DNA strands.
In this paper, we consider addressable procedures for the primitive operations using DNA strands. The primitive
operations are used on a silicon based computer with memory addressing, that is, each variable is stored in a
1
-
8/8/2019 Addition Dna
2/10
memory location whose size is a constant number of bits, and an operation is executed for two memory locations
indicated by the addresses. If the addressing feature is used in DNA computing, we can execute different operations
for different variables stored in DNA strands.
Using a theoretical model for DNA computing, we first show a DNA representation of binary numbers of
bits, and propose a procedure to assign values for the representation. The procedure is applicable to
binary
numbers of bits in lab steps in parallel. Next, we propose a procedure for logic operations. The procedure
enables any boolean operation whose input and output are defined by a truth table, and executes different kinds
of boolean operations simultaneously for any pair of
binary numbers of
bits in
lab steps using
different kinds of DNA strands. Finally, we propose a procedure for additions of pairs of two binary numbers. The
procedure works in lab steps using different kinds of DNA strands for additions of two -bit
binary numbers.
2 Preliminaries
2.1 DNA strands
A set of DNA strands is a key component for DNA computing, like a memory module used on a silicon based
computer. A single strandof DNA is defined as a string of four different base nucleotides. Since any kind of single
strands can be synthesized using biological methods[7], we assume that each single strand represent a symbol over
a finite alphabet ' .A main concept used in DNA computing is Watson-Crick complementarity. We define the alphabet
' (
0 1 2 4 1 7 4 @ @ @ 4 1 C E 7 4 1 2 4 1 7 4 @ @ @ 4 1 C E 7 R
, where the symbols1 S 4 1 S
U V X V b are complements. A single
strand is a sequence of one or more symbols in'
. Two single strands form a double strandif and only if the single
strands are complements of each other. A double strand with1 S 4 1 S
is denoted by
e
1 S
1 S f . Note that two single
strands form a double strand if subsequences of the two single strands are complements. For example, let g , h be
two single strands such thatg (
1 2 1 7
andh (
1 7 1 2
. Then, the following two double strands can be obtained
withg
4
h.
e
1 2 1 7
17
12
f
4
e
1 2 1 7
17
12
f
The strands are stored in a test tube. The following expression denotes a test tube q7
which stores two single
strands1 2 1 7
,1 7 1 2
.
q
7
(
0 12
17
4 17
12
R
Also note that we let the set of strands stored in a test tube be a r -multiset. That is, each strand has r copies in
the test tube, wherer
depends on the lab error in DNA manipulations. We define each strand in a set represented
with a test tube as one unit. For example, the following test tube q s contains two units of1 2 1 7
, and three units of1 7 1 2
. (In this paper, we use one unit of a strand only.)
q s (
0 1 2 1 7 4 13 2 1 7 4 1 7 13 2 I 4 1 7 1 2 4 1 7 1 2 R
2.2 Abstract model for DNA computing
A number of theoretical or practical computational models have been proposed for DNA computing[1, 4, 5, 6, 9,
10, 11]. In this paper, we assume a theoretical computation model based on the RDNA model[11], which is an
abstract mathematical model for the performance of parallel DNA computation. The model allows the followingeight DNA manipulations, which are widely used in DNA computing.
(1) Merge: Given two test tubes q7
4
qs
, x y y q7
4
qs
stores the union q7
qs
in q7
.
(2) Copy: Given a test tubeq
7
, q
7 4
q s produces a test tube
q swith the same contents as
q
7
.
(3) Detect: Given a test tube q , y y q outputs yes if q contains at least one strand, otherwise outputs no.
2
-
8/8/2019 Addition Dna
3/10
q (
0 1 7 1
s
4 1 7 4 1
s
R
y X q
4 0 1 7 4 1
s
R 4
q j q (
0 1 7 R 4
q
j
(
0 1 7 1
s
4 1
s
R
m
y n X q q (
e
1 7 1
s
1 7 1
s
f
m
y n X q y X q q (
0 1 7 1
s
4 1 7 1
s
R
m
y n X q n y y q
4 1 7 1
s q (
e
17
17
f
4
e
1
s
1
s
f
Figure 1: Examples for Cleavage, Annealing and Denaturation.
(4) Separation: Given a test tube q7
and a set of strings | ,
y X q
7 4
|
4
q s removes all single strands
containing a string in|
fromq
7
, and produces a test tubeq s
with the removed strands.
(5) Selection: Given a test tube q7
and an integer}
,
y n y X q
74
}
4
q s removes all strands whose length is
}
from q7
, and produces a test tube qs
with the removed strands. (The length of a strand is the number of
symbols in the strand.)
(6) Cleavage: Given a test tube q and a string of two symbols1
21
7
, n y y q4 1
21
7
cuts each double strand
containing
e
1 2 1 7
1 2 1 7 f in q into two double strands as follows.
e
g
21
21
7
h
2
g
7 1 2 1 7
h
7 f
e
g
21
2
g
7 1G 2 f
4
e
17
h
2
1 7
h
7 f
It is assumed that Cleavage can only be applied to some specified symbols over the alphabet ' .
(7) Annealing : Given a test tube q ,m
y n X q produces all feasible double strands from single strands in
q . (The produced double strands are still stored in q after Annealing.)
(8)Denaturation
: Given a test tubeq
, y X q
dissociates each double strand inq
into two singlestrands.
We use all of the manipulations except for Selection in this paper. Figure 1 shows examples for Separation,
Cleavage, Annealing and Denaturation.
The above eight manipulations are implemented with a constant number of biological steps for DNA strands[8].
In this paper, we assume that the complexity of each manipulation is O(1) lab steps, and consider asymptotic
complexity of a sequence of the manipulations.
3 Bit representation and value assignment
In this section, we first describe a DNA representation of binary numbers, where we use one single DNA strand to
represent one bit. Then, we consider a basic operation Value Assignmentwhich assigns values to every bit.
3.1 Bit representation
We describe the representation of
binary numbers of
bits. In the representation, one single strand corresponds
to one bit of a binary number. Therefore, we use single strands to denote binary numbers.
In some papers, an operationLigation is defined to concatenate single strands afterAnnealing. Weassume that Annealing includesLigation,
that is, Ligation is automatically executed after Annealing.
3
-
8/8/2019 Addition Dna
4/10
We first define the alphabet'
used in the representation as follows.
' (
0
m
24
m
74 @ @ @ 4
m
E 74
24
74 @ @ @ 4
C E 74
24
74
24
74
4
U
4
m2
4
m7
4 @ @ @ 4
m E 7
4 2
4 7
4 @ @ @ 4 C E 7
4
74
s
4
74
s
4
4
U
4 R
In the above alphabet,m
2 4
m
7 4 @ @ @ 4
m
E 7
denote addresses of binary numbers, andF 2 w 4 7 4 @ @ @ 4 C E 7
denote
bit positions in a binary number. 2 4
7
and 2 4
7
are the specified symbols cut by Cleavage, that is,
n y y q
4
2
7
and
n y y q
4
2
7
cut all double strands containing
e
2
7
2
7
f and
e
2
7
2
7
f in
a test tubeq
, respectively. Symbols 0 and 1 are used to denote values of bits, and
is a special symbol for
Separation.
Using the above alphabet, a value of a bit, whose address and bit position areX
and
, is represented by a single
strand
S
such that
S
(
7
m
S
2
7
24
where V = 0 if a value of the bit is 0, otherwise V=1.
We call each
S
a memory strand, and use a set of different memory strands to denote binary
numbers of
bits. (To overcome the lab error, we assume that each memory strand hasr
copies in the test tube.)
3.2 Value assignment
An input ofValue Assignmentis test tube qS
which contains memory strands such that
q
S
(
0
7
m
S
2
7
S
2
U V X V b
4
U V V b
R 4
where
S
0
U
4
R
. An output is also test tube q
such that
q
(
0
7
m
S
2
7
j
2
U V X V b
4
U V V b
R 4
where
j
0
U
4
R
. (Note that all memory strands are set to the same value
j
.)
The procedure for Value Assignment consists of two steps. The first step is deletion of values from memory
strands, and the second step is assignment of values to the strands. In the first and second steps, we use auxiliary
test tubes q and q such that
q (
0
2
7 R 4
q
(
0
7
j
2 4
2
7 R @
Since DNA strands in tubesq
andq
are independent of addresses or values of memory strands, we can prepare
them in advance. In addition, we use a test tubeq
C
to store the strands temporarily. A detailed description of the
procedure is presented below.
Procedure ValueAssignment
j
( q y q y qS
, q y q y q
)0
Step 1: Delete values from memory strands.
x y y q
S
4
q
m
y n X q
S
n y y q
S
4
2
7
y X q
S
y X q
S
4 0
7 4
2 4
7 R 4
q
C
Step 2: Assign values to memory strands.
x y y q
S
4
q
m
y n X q
S
y X q
S
y X q
S
4 0
2
7 R 4
q
R
4
-
8/8/2019 Addition Dna
5/10
S
S
0 0 g2 2
h
2 2
0 1 g2 7
h
2 7
1 0 g7 2
h
7 2
1 1 g7 7
h
7 7
Figure 2: A truth table (whereg
S
4
h
S
0
U
4
R
.)
We illustrate an execution of the above procedure. To simplify the illustration, we assume that an input tube
contains only one memory strand, that is, qS
(
0
7
m
S
2
7
2 R
. After Merge and Annealing operations
in Step 1, test tubeq
S
is given by
q
S
(
e
7
m
S
2
7
2
2
7
f
4
and after Step 1, test tubeq
S
becomes as follows.
q
S
(
0
7m
S
2R
In Step 2, after Merge and Annealing operations, test tube qS
is given by
q
S
(
e
7
m
S
2
7
j
2
2
7
f
4
then, an output tube of the procedure is as follows.
q
(
0
7
m
S
2
7
j
2w R
The complexity of the above procedure is lab steps because only a constant number of DNA manipu-
lations are executed for memory strands in parallel. The DNA strands used in the procedure is
memory
strands and kinds of auxiliary strands in q and q . Then, we obtain the following lemma.
Lemma 1 Value Assignment for
memory strands can be executed in
lab steps using
kinds of additional DNA strands.
4 Procedure for logic operations
In this section, we show a procedure which computes logic operations for pairs of two memory strands in paral-
lel. Let us consider a logic operation whose inputs and outputs are Boolean values S
4 S
and
4
,
respectively, and the values are defined by the truth table in Figure 2.
Also let the following test tube qS
contain two memory strands whose values are S
and
as an input.
q
S
(
0
7
m
S
2
7
S
2w 4
7
m
2
7
2 R
Then, an output of the procedure, for the logic operation defined in Figure 2, is test tube q
given below.
q
(
-
0
7m
S
2
7
g
2 2
24
7m
2
7
h
2 2
2R
S
(
( U
0
7
m
S
2
7
g
2 7
24
7
m
2
7
h
2 7
2R
S
( U
4
(
0
7m
S
2
7
g
7 2
24
7m
2
7
h
7 2
2R
S
(
4
( U
0
7
m
S
2
7
g
7 7
24
7
m
2
7
h
7 7
2R
S
(
(
In the following subsections, we first describe single strands which define a logic operation, and next show an
overview and details of the procedure.
5
-
8/8/2019 Addition Dna
6/10
S
S
logic strands
0 0 0 0 U
2
S
U
U
7
U
0 1 0 1 U
2
S
U
7
1 0 0 0 U
2
S
U
7
U
1 1 1 1
2
S
7
Figure 3: A truth table and logic strands for the AND operation between
S
and
.
4.1 Single strands for logic operations
Four single strands are used to define a logic operation. We call the four strands logic strands, and each of them
corresponds to each row of a truth table. We assume that
S
is a memory strand whose value is
0
U
4
R
,
that is,
S
(
7
m
S
2
7
2
. Then, we consider a logic operation given by the truth table in Figure
2. We define the set of logic strands}
S
for a pair of two memory strands
S
(
7
m
S
2
7 S
2
,
(
7
m
2
7
2
as follows.
}
S
( g
2u 2
2
S
U
U
7
h
2 2 4
g
2 7
2
S
U
7
h
2v 7 4
g
7 2
2
S
U
7
h
7 2 4
g
7 7
2
S
7
h
7 7
In the above definition, each single strand consists of a complemental chain of two input memory strands, and two
strings in a set of single strands0
g
2u 2
2
,g
2 7
2
,g
7 2
2
,g
7 7
2
,
7
h
2 2
,
7
h
2 7
,
7
h
7 2
,
7
h
7 7 R
, which
is a set of auxiliary strings to separate memory strands according to their values.
Figure 3 shows an example of logic strands which denote the AND operation such that
(
S
S
and
(
S
.
4.2 Overview of the procedure
The procedure consists of the following 3 steps.
1. Divide memory strands into two test tubes q2
and q7
according to outputs of the operation. Memory strands
whose output values are 0 are stored inq
2
, and the others are stored inq
7
.
2. Assign values to memory strands in each of test tubes q2
4
q
7
.
3. Merge two test tubes.
The second and third steps are easily executed using Value assignment and Merge, respectively. We describe
outline of the first step in the following.
To simplify the description, we assume that input tubeq
S
contains two memory strands
S
4
, whose
values are|
4
0
U
4
R
, and their corresponding logic strands, that is,
q
S
(
0
S
|
4
R
}
S
.
The first step consists of three substeps. In the first substep, two memory strands are connected according to one
of complemental logic strands. Then, the connected memory strands are separated to a temporal test tube. Thesubstep is executed using mainly Annealing, Denaturation and Separation as follows. (Single or double strands
which do not include a memory strand are omitted in the description.)
0
S
|
4
R
}
S
m
y n X
e
S
|
g
2
S
|
7
h
f
6
-
8/8/2019 Addition Dna
7/10
y X
y X
0
S
|
R
q
C
In the second substep, two memory strands are separated according to their output of the operation. Each
connected memory strand is annealed with a complemental logic strand again. Each auxiliary string in the com-
plemental logic strand denotes an output value of the annealed memory strand. The annealed double strand is cut
into two double strand so that each double strand contain one memory strand. Then, an auxiliary string are added
to each memory strand, and separated into one of two test tubes according to its auxiliary string. After this substep,
a memory strand whose output value isg
0
U
4
R
is stored in test tubeq
with its auxiliary string. The substep is
executed using mainly Annealing, Cleavage, Denaturation and Separation as follows.
0
S
|
R
}
S
m
y n X
e
S
|
g
2
S
|
7
h
f
n y y
e
S
|
g
2
S
|
f
4
e
7
h
f
g
24
7
h
m
y n X
e
g
2
S
|
g
2
S
|
f
4
e
7
h
7
h
f
y X
0
g
2
S
|
4
7
h
R
y X
g
2
S
|
q
2
g ( U
q
7
7
h
q
2
h ( U
q
7
In the third substep, an auxiliary string is cut after annealing, and removed from each test tube. The substep is
executed using mainly Annealing, Cleavage and Denaturation.
(In case of g ( h )
q (
g
2
S
|
4
7
h
m
y n X
e
g
2
S
|
g
2
S
|
f
4
e
|
7
h
7
h
f
n y y
e
S
|
S
|
f
4
e
f
y X
q (
0
S
|
4
R
(In case of g ( h )
q (
0
g
2
S
|
R 4
q
(
0
7
h
R
m
y n X
e
g
2
S
|
g
2
S
|
f
4
e
|
7
h
7
h
f
n y y
e
S
|
S
|
f
4
e
f
7
-
8/8/2019 Addition Dna
8/10
y X
q
(
0
S
|
R 4
q
(
0
R
4.3 Details of the procedure
We summarize details of the procedure for a logic operation in the following.q
S
andq
are test tubeswhich contains input and output memory strands, respectively. We assume memory strands are stored in
q
S
. In addition, } is a test tube which contains logic strands. Test tubes q2
4
q
74
q
j
2
4
q
j
7
and q
C
are
used as temporal storage.
Procedure LogicOperation ( q y q y qS
,q y q y }
,q y q y q
)0
Step 1: Divide memory strands into two test tubes q2
andq
7
according to outputs of the operation
for a pair of two memory strands.
(1-1) Connect and select each pair of memory strands according to their logic strands.
x y y q
S
4
}
m
y n X q
S
y X q
S
y X q
S
4 0
2
7 4
2
7 R 4
q
C
(1-2) Separate memory strands according to outputs of operations.m
y n X q
C
n y y q
C
4
2
7
x y y q
C
4 0
U
2w 4
2 4
7
U
4
7
R
m
y n X q
C
y X q
C
y X q
C
4 0
U
4
U
R 4
q
2
y X q
C
4 0
4
R 4
q
7
(1-3) Cut and remove auxiliary strings from each strand.m
y n X q
2
4
m
y n X q
7
n y y q
2 4
2
7
4
n y y q
7 4
2
7
y X q
2
4
y X q
7
y X q
29 4 0 4 4
2
7 R 4
q
C
4
y X q
7 4 0 4 4
2
7 R 4
q
C
Step 2: Assign values to memory strands in each of test tubes q2 4
q
7
.
n y
m
X y U q
2 4
q
j
2
n y
m
X y q
74
q
j
7
Step 3: Merge two output test tubes.
q
j
2
4
q
x y y q
4
q
j
7
R
The procedure consists of a constant number of DNA manipulations except for Step 2, and Step 2 can be
executed in lab steps from Lemma 1. Since the number of kinds of DNA strands used as memory or logic
strands is
, we obtain the following theorem.
Theorem 1 Logic operations for memory strands can be executed in lab steps using different
additional DNA strands.
Since the above procedure is applicable to any pair of memory strands using a logic strand, we can execute
different operations for pairs of memory strands in parallel. In addition, the other simple operations, such as NOT,
SHIFT or COPY, are also executed with the same complexity.
8
-
8/8/2019 Addition Dna
9/10
5 Procedure for arithmetic operations
In this section, we show a procedure to add two binary numbers represented by memory strands. Since a basic idea
of the procedure is similar to [5], we give a brief explanation only.
We consider addition of two binary numbers, C E 7
C E
s
@ @ @
2
and C E 7
C E
s
@ @ @
2
, which represent two
numbers
4
such that
(
C E 7
2
and (
C E 7
2
. We assume the two numbers
4
are stored in
two sets of memory strands0
S
C E 7 4
S
C E
s
4 @ @ @ 4
S
2 R
and0
S
C E 7 4
S
C E
s
4 @ @ @ 4
S
2 R
, respectively. We
also assume C E 7
(
C E 7
( U to simplify the description. Then, the sum C E 7
C E
s
@ @ @
2
of two numbers 4
is obtained using a procedure consisting of the following four steps. (Binary operators and
are XOR and AND
operations, respectively.)
1. For each U V V b , compute ( , and (
(This step denotes behavior of a half adder. and denote a sum and a carry bit obtained from -th bits,
respectively.)
2. For each U V V b , compute (
.
( ( in case that the -th bit propagates a carry in the b -th bit to the
-th bit.)
3. For each V V b , set ( if E 7
( or there exists
r such that
E 7
(
E
s (
@ @ @
(
7
( and
( , otherwise set
( U.
4. For each V V b , set ( .
The first, second and fourth steps of the above procedure are easily implemented using a constant number of DNA
manipulations and logic procedures described in Section 4. Thus, we discuss implementation of the third step in
the followings.
Let
and
be binary values stored in memory strands
and
for each U V V b
. We first
generate the following single strand for each V V b . ( includes a memory strand for whose
value is 0, that, is,
U .)
(
7
m
2
7
U
2
7
m
(
U
7
m
Next, we generate the following two single strands
and " if ( and ( for each U V V
b , respectively.
(
m
4
"
(
m
m
Finally, we generate a single strand E 7
for each V V b to propagate a carry.
E 7
(
m
m
E 7
The above single strands are stored in a test tube and annealed. We first consider the case that
E 7
( . We
obtain the following double strand for .
E 7
E 7
We next consider the case that E 7
(
E
s (
@ @ @
(
7
( and ( . Single strands
E 7 4
E 7
E
s
4 @ @ @ 4
7
are used to propagate a carry stored in
, and we obtain the following
double strand for
.
"
E 7
"
E
s
@ @ @
"
7
E 7
E 7
E
s
@ @ @
s
7
7
After y X for the test tube, a single strand containing a stringj j
j j
is separated into another test
tube q7
using
y X . (In the above generated single strands, only
contains the string.) The other
single strands containing a memory strand is also separated in test tube q2
.
9
-
8/8/2019 Addition Dna
10/10
Memory strands in separated single strands are cut and extracted by a similar method to Value assignment.
Therefore, we obtain two test tubes: one contains memory strands set to 0, and the other contains memory strands
set to 1. Using Value assignmentand Merge, the third step is completed.
Since the whole procedure consists of a constant number of DNA manipulations and uses kinds of
DNA strands, we obtain the following theorem.
Theorem 2 Additions for pairs of -bit binary numbers can be executed in lab steps using
different additional DNA strands.
The procedure for additions are easily modified to be applied to subtractions. Thus, we can compute subtrac-
tions with the same complexity using DNA strands.
6 Conclusions
In this paper, we proposed two procedures for logic and arithmetic operations using DNA strands. Both procedure
works in
lab steps using
different additional DNA strands. Features of our procedures are that
different logic or arithmetic operations are executed in parallel because addresses and operations are denoted with
single strands. Thus, our procedure archives general parallel processing for DNA strands.
Although our results are based on a theoretical model, they can be implemented practically since every DNA
manipulation used in the model has been already realized in lab level. In addition, arithmetic operations are soprimitive that we believe that our results will play an important role in the future DNA computing.
References
[1] L. M. Adleman. Molecular computation of solutions to combinatorial problems. Science, 266:10211024,
1994.
[2] P. Frisco. Parallel arithmetic with splicing. Romanian Journal of Information Science and Technology,
2(3):113128, 2000.
[3] F. Guarnieri, M. Fliss, and C. Bancroft. Making DNA add. Science, 273:220223, 1996.
[4] V. Gupta, S. Parthasarathy, and M. J. Zaki. Arithmetic and logic operations with DNA. In Proceedings of the
3rd DIMACS Workshop on DNA Based Computers, pages 212220, 1997.
[5] H. Hug and R. Schuler. DNA-based parallel computation of simple arithmetic. In Proceedings of the 7th
International Meeting on DNA Based Computers, pages 159166, 2001.
[6] R. J. Liption. DNA solution of hard computational problems. Science, 268:542545, 1995.
[7] R. B. Merrifield. Solid phase peptide synthesis. I. The synthesis of a tetrapeptide. Journal of the American
Chemical Society, 85:21492154, 1963.
[8] G. Paun, G. Rozeberg, and A. Salomaa. DNA computing. Springer-Verlag, 1998.
[9] Z. F. Qiu and M. Lu. Arithmetic and logic operations for DNA computers. In Proceedings of the Second
IASTED International conference on Parallel and Distributed Computing and Networks, pages 481486,
1998.
[10] Z. F. Qiu and M. Lu. Take advantage of the computing power of DNA computers. In Proceedings of the
Third Workshop on Bio-Inspired Solutions to Parallel Processing Problems, IPDPS 2000 Workshops, pages
570577, 2000.
[11] J. H. Reif. Parallel biomolecular computation: Models and simulations. Algorithmica, 25(2/3):142175,
1999.
10