Sunteți pe pagina 1din 10

Addressable procedures for logic and arithmetic operations with DNA strands

 
Akihiro Fujiwara , Ken’ichi Matsumoto , Wei Chen


Department of Computer Science and Electronics
Kyushu Institute of Technology
680-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: fujiwara@cse.kyutech.ac.jp

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 DNA
molecules. 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
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 strand of 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
!#"$&%'")(*()(*"$,+.-/%" 01" %2")(*()()" 3+.-3%4
complementarity. We define the alphabet 
65" /5
, where the symbols 798;:<8= ?>@  are complements. A single
strand is a sequence of one or more symbols in  . Two single strands form a double strand A ,5 if and only if the single
,5$" 35
strands are complements of each other. A double strand with is denoted by /5<B . Note that two single
strands form a double strand if subsequences
,0%
of the two single strands are complements. For example, let C , D be
0%F,
two single strands such that C@ and DE . Then, the following two double strands can be obtained
"
with C D . A !&% A ,*&%
"
 %  B  %  B

%
The  strands are stored in a test tube. The following expression denotes a test tube G
 %  % 
which stores two single
strands , . %   % "  %  4
G 

Also note that we let the set of strands stored in a test tube be a H -multiset. That is, each strand has H copies in
the test tube, where H 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 G3I contains two units of , and three units of
0%F,
. (In this paper, we use one unit of a strand only.)
!&%"K!&%'" 0%L!1" 0%F,M" &%)!'4
G3IJ

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 following
eight DNA manipulations, which are widely used in DNA computing.
% " % " %VU %
(1) Merge: Given two test tubes G G I , NPOQ*RSOT G G I  stores the union G G I in G .
% %2" %
(2) Copy: Given a test tube G , WYX[Z,\3 G G3I) produces a test tube G3I with the same contents as G .
(3) Detect: Given a test tube G , ]^O_O`F_F G. outputs “yes” if G contains at least one strand, otherwise outputs “no”.

2
acb!d!eSf &%F " g%"  4
GE I I
h "F&%"  4#"
 
 
% 1
4 " 0%L "  4
OKZ6i1Q2i#_c:cXV G I GJjklGE G j  I I
A 0L % 
m I
3/OiTn:o0R0 G. Gprq 0%L Bts
I
m &%F " 0%L 4
3/OiTn:o0R3 G.uv]^O/i1_cw6Q2i1_c:cXV G. GE I I
A  % A 
m "$0% " I
3/OiTn:o0R3 G.uxWYnOi1y1i#RSO1 G I Gzrq  % B  B{s
I

Figure 1: Examples for Cleavage, Annealing and Denaturation.

% h %" "
(4) Separation: Given a test tube G % and a set of strings | , OKZ6i1Q2i1_c:oXV G | G3I) removes all single strands
containing a string in | from G , and produces a test tube G0I with the removed strands.
% h % " "
(5) Selection:% Given a test tube G and an integer } , OnO`L_c:cXV G } G I  removes all strands whose length is }
from G , and produces a test tube G I with the removed strands. (The length of a strand is the number of
symbols in the strand.)
  % "K  %
(6) Cleavage: Given
A ,a0test
%
tube G and a string of two symbols , WYnOi1y1i#RSOT G  cuts each double strand
containing ,0%~B in G into two double strands as follows.

A   % A  A  %
C D C " D
% !&% %B€ % /B g% %B
C D C D

It is assumed that Cleavage can only be applied to some specified symbols over the alphabet  .
m
(7) Annealing ‚ : Given a test tube G , 3/OiTn:o0R3 G. produces all feasible double strands from single strands in
G . (The produced double strands are still stored in G after Annealing.)

(8) Denaturation: Given a test tube G , ]^O/i1_cw&Qi1_c:cXV Gƒ dissociates each double strand in G into two single
strands.

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 Assignment which 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 operation Ligation is defined to concatenate single strands after Annealing. We assume that Annealing includes Ligation,
that is, Ligation is automatically executed after Annealing.

3
We first define the alphabet  used in the representation as follows.
 m " m % ")()(*()" mJ… -/% "$† "K† % ")(*()()"K† +.-/% " " % " " % " " "K‡
  W W ] ] 7
m " m % ")()(*()" mJ… -/% " † " † % ")()(*(F" † +.-3% " % " " % " " " " ‡[4
W W I ] ] I 7
m #" m %'")(*()(F" m … -/% †.M"$†v%"*()(*()"$†ƒ+.-3%
In the above alphabet, 1"
denote
%
addresses
M" %
of binary numbers, and denote
bit positions in a binary number. W W and ] ] are the specified symbols
A cut by Cleavage,
A that is,
% %
" % " % W W ] ]
WYnˆOi#yTi#RTOT G W W  and WYnOi1y1i#RSOT G ] ]  cut all double strands containing % B and % B in
W W ] ]
‡
a test tube G , respectively. Symbols “0” and “1” are used to denote values of bits, and “ ” is a special symbol for
Separation.
Using
h 5
the above alphabet, a value of a bit, whose address and bit position are : and ‰ , is represented by a single
strand  Š such that h 5 % m 5 † %F‹ "
 Š z] Š W W ]

where V = “0” if ah value


5
of the bit is 0, otherwise V=“1”.
We call each  Š 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 has H copies in the test tube.)

3.2 Value assignment


5 …Œ)*Ž
An input of Value Assignment is test tube G which contains memory strands such that
5 …Œ)Ž  % m 5† % ‹ 5 v " 41"
G  ] Š W W Š ] 7 8‘:V8‘>‘ 7<8’‰€8“ ”>‘
‹ 5  " 4 Ž—Œ)Ž
where  Šv• 7 . An output is also test tube G/– such that
*Ž—Œ)Ž  % m 5 † %*‹  " 4#"
G –  ] Š W W j] 7 8“:˜8“>“ 7™8’‰€8š ›>“
‹  " 4 ‹
where j • 7 . (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 G œ and G/ž such that
 %4#"  % ‹ M" %41(
G œŸ W W G ž  W j—] W W

Since DNA strands in tubes G œ and G ž are independent


Ž + Œ
of addresses or values of memory strands, we can prepare
them in advance. In addition, we use a test tube G to store the strands temporarily. A detailed description of the
procedure is presented below.
‹ 5 …Œ)*Ž Ž—Œ)*Ž 
Procedure ValueAssignment j (GJO2 *_cG¡w3¢LO£G , GJO2 )_cGJw0¢LOVG3– )
Step 1: Delete values from memory strands.
5 …Œ)*Ž "
NPOQ*RSOT G G œ 
m 5 …ŒFŽ
3/OiTn:o0R3 G 
5 …ŒFŽ " %
WYnOi1y1i#RSOT G W W 
5
… ŒFŽ
]^O/i1_cw6Q2i1_c:cXV G 
h 5 …Œ)Ž "F %2" 1" %4#" Ž + Œ
OKZ6i1Q2i1_c:oXV G W W W G 

Step 2: Assign values to memory strands.


5 …Œ)*Ž "
NPOQ*RSOT G G ž 
m 5 …ŒFŽ
3/OiTn:o0R3 G 
5 …ŒFŽ
]^O/i1_cw6Q2i1_c:cXV G 
h 5 …Œ)Ž "F %41" Ž—Œ)Ž
OKZ6i1Q2i1_c:oXV G W W G/– 
4

4
‹ 5 …1¤ ‹ 5 …'¥ ‹ Žˆ¤ ‹ Ž¥
– –
K K
0 0 C D
F% F%
0 1 C D
% %
1 0 C D
%K% %K%
1 1 C D
5 " 5  " 4
Figure 2: A truth table (where C Š D Šv• 7 .)

We illustrate an execution of the above5 …procedure.


ŒFŽ 
To simplify% ‹ the M4illustration, we assume that an input tube
% m 5†
contains only one memory strand, that is, G  ] Š W W ] . After Merge and Annealing operations
5 …Œ)Ž
in Step 1, test tube G is given by
A % m 5† % ‹
5 …Œ)Ž ] Š W W ] "
G  q % Bts
W W
5 …Œ)Ž
and after Step 1, test tube G becomes as follows.
5 …Œ)Ž  % m 5 † 4
G  ] Š W

5 …ŒFŽ
In Step 2, after Merge and Annealing operations, test tube G is given by
A % m 5ˆ† % ‹
5 …Œ)*Ž ] Š W W "
j]
G ¦q % B{s
W W

then, an output tube of the procedure is as follows.


Ž—Œ)Ž  % m 5ˆ† % ‹ M4
G/–  ] Š W W jk]

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 G œ and G /ž . 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
‹65 … ¤ " ‹65 … ¥
in paral-
‹ Ž ¤ " ‹ Ž ¥
lel. Let us consider a logic operation whose inputs and outputs are Boolean values and – – ,
respectively, and the values are defined by
5 …Œ)Ž
the truth table in Figure 2. ‹65 ‹,¨
Also let the following test tube G contain two memory strands whose values are  Š and  © as an input.
5 …ŒFŽ  % m 5† % ‹ 5 M" % m ¨† % ‹ ¨ M4
G  ] Š W W Š ] ] © W W © ]

Ž—Œ)Ž
Then, an output of the procedure, for the logic operation defined in Figure 2, is test tube G – given below.
 % m 5 † % $ " % m ¨ † % K 4 ‹,5 ‹,¨
] Š W W C ] ] © W W D ] ¯±° Š  © p  7#
­  % m 5 † % L% " % m ¨ † % F% 4 ‹,5 " ‹,¨
Ž—ŒFŽ ] Š W W C ] ] © W W D ] ¯±° Š E7  © P 
G – «ª¬¬  % m 5 † % %c " % m ¨ † % % 4 ‹,5 " ‹,¨
] Š W W C ] ] © W W D ] ¯±° Š ²  © z71
 % m 5 † % %$% " % m ¨ † % %K% 4 ‹,5 ‹,¨
] Š W W C ] ] © W W D ] ¯±° Š   © ³ 
¬¬®

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
‹ 5 …#¤ ‹ 5 …'¥ ‹ Žˆ¤ ‹ Ž¥
– – logic strands
‡ h 5 Š h ¨ © % ‡
0 0 0 0 7 ]  71  71] 7
‡ h 5 Š h ¨ © % ‡
0 1 0 1 7 ] 71  ]
‡ h 5 Š h ¨ © % ‡
1 0 0 0 7 ]   71] 7
‡ h 5 Š h ¨ © % ‡
1 1 1 1 ]    ]

h 5 Š h ¨ ©
Figure 3: A truth table and logic strands for the AND operation between and .

4.1 Single strands for logic operations


Four single strands are used to define a logic operation. h We 5
call
‹
the four strands logic strands, and ‹ each of  " 4
them
corresponds to each row of a truth table. We assume that Š  is a memory strand whose value is • 7  ,
h 5 ‹ % m 5ˆ† % ‹
that is,  Š €´] Š W W ] . 5 Then,
¨
we consider a logic operation given by the truth
h 5 Š % m 5ˆ†
table in Figure
% ‹ 5
2. We define the set of logic strands }  Š$  © for a pair of two memory strands µ] Š W W Š ] ,
h ¨ © % m ¨2†
©
% ‹ ¨
 ©
E] W W ] as follows.
5 ¨ K‡ h 5 Š h ¨ © % $‡L" F%F‡ h 5 Š h ¨ © % L%)‡L"
}  ŠK  ©  ¶ C ] 71 71] D C ] 71  ] D
% ‡ h 5 Š h ¨ © % %c ‡L" %K% ‡ h 5 Š h ¨ © % %$% ‡·
C ]   71] D C ]    ] D

In the above definition, each single strand consists


 K‡ F%*‡
of a%c‡complemental
%$%)‡
chain of two% input
% $2‡ L%)‡
memory
% %‡
strands,
% %K%F‡L4
and two
strings in a set of single strands C ] ,C ] ,C ] ,C ] ,] D ,] D ,] D ,] D , which
is a set of auxiliary strings to separate memory strands according to their values. ‹ Ž ¤ ‹65 … ¤¹¸ ‹65 … ¥
Figure 3 shows an example of logic strands which denote the AND operation such that – 
‹ Ž ¥ ‹65 … ¥
and –  .

4.2 Overview of the procedure


The procedure consists of the following 3 steps.
%
1. Divide memory strands into two test tubes G and G according to outputs % of the operation. Memory strands
whose output values are 0 are stored in G , and the others are stored in G .
" %
2. Assign values to memory strands in each of test tubes G G .
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. 5 …Œ)Ž h 5 Š " h ¨ ©
To simplify
"Kº
the  description,
" 4
we assume that input tube G contains5 …two
)
Π*
 Ž
memory
 h 5
strands
" h ¨ º 4 U
, whose
5 ¨
values are | • 7  , and their corresponding logic strands, that is, G   Š | ©  }  ŠK  © .
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. The
substep 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.)
A h 5 Š h ¨ © º
 h 5 " ¨ º 4 U 5 ¨
 Š  |9 h  ©  }  Š$  ©  q ‡ h 5 Š
 |
h ¨ © º

% ‡ Bts
m Cg»½¼ ]  | ] D&»½¼
3/OiTn:o0R

6
  h 5 ¨ º 4ƒ¾ Ž + Œ
 Š  | h  ©  G
]^O/i#_cw&Q2i1_c:oX
h
u O$Z&i1Qi1_c:cX

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,
 " 4
a memory strand whose output value is C • 7 is stored in test tube G/¿ with its auxiliary string. The substep is
executed using mainly Annealing, Cleavage, Denaturation and Separation as follows.
A h 5 Š h ¨ © º
 h 5 ¨ º 4 U 5 ¨
 Š  | h  ©  }  ŠK  ©  q ‡ 5
h Š
 |9
h ¨ © º

% ‡ B{s
m C »À¼ ] | ] D »½¼
3/OiTn:o0R
A h 5 Š A h ¨ © º
 | " 
 q ‡ h 5 Š B h ¨ © º % ‡ B{s
Ct»À¼ ] | ] D6»½¼
WYnOi1yTiMRSO
Á6 ‡ " A ‡ h 5 Š A h ¨ © º % ‡
C »½¼ ] C »À¼ ]  | " ] D »½¼
q % ‡ÃstÄ  q ‡ h 5 Š B h ¨ © º % ‡ B{s
] D »½¼ m Ct»À¼ ] | ] D6»½¼
3/OiTn:o0R

 ‡ h 5 Š " h ¨ º % ‡£4
 Cg»½¼ ]  | © ] D6»½¼
]^O/i1_cw6Q2i1_c:cX
‡ h 5 Š ¾ G ¯k°{Ct»½¼šz71
C »½¼ ]  | q % f$Æ,Ç)ÈKÉ Ç
G Å ¯—Ê 

h h ¨ © º % ‡V¾ G ¯k°tD&»À¼Ÿp7#
OKZ6i1Q2i1_c:cX ] D&»À¼ q % fKÆ!Ç)ÈKÉ Ç
G Å ¯ËÊ 

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 Cg»½¼šED6»½¼ )
‡ h 5 Š " A ‡ h 5 Š A h ¨ © % ‡
C À» ¼ ]  | C »½¼ ]  | "  |] D »½¼
G/¿#Ì0Í3Î0ÏÌ0ÍÐ q h ¨ © º % ‡?s  q ‡ h 5 Š B h ¨ © º % ‡ B{s
] D »½¼ m Cg»½¼ ]  | ] D6»½¼
3/OiTn:o0R
A h 5 Š A h ¨ © º
 | " 
 q h 5 Š B h ¨ © º B{s
 |  
WYnOi1y1i#RSO

 h 5 " ¨ º 4
 G/¿#Ì&Í3Î3ÏÌ0Í9  Š  | h  © 
]^O/i1_cw6Q2i1_c:cX

(In case of C »½¼ÒE Ñ D »½¼ )


 ‡ h 5 Š 4#" A ‡ h 5 Š A h ¨ © % ‡
G/¿MÌ0ÍÐ C ½
» ¼ ] |9 C »½¼ ] | "  |] D »½¼
 h ¨ º % ‡[4  q ‡ h 5 Š B{s q h ¨ © º % ‡ Bts
G Ï Ì0́ ©   ] D »½¼
6 m Ct»½¼ ]  | ] D6»½¼
3/OiTn:0R
A h 5 Š A h ¨ © º
 |9 " 
 q h 5 Š B{s q h ¨ © º Bts
|9 
WYnˆOi1yTi#RTO

7
 h 5 4#"  h ¨ º 4
 G ¿ Ì0Í9  Š  |9 G Ï Ì0́ © 
]^O/i1_cw&Qi1_c:cX

4.3 Details of the procedure


5 …Œ)Ž Ž—ŒFŽ
We summarize details of the procedure for a logic operation in the following. G and G – are test tubes
which contains input and output memory strands, respectively. We assume
  memory strands are stored in
5 …Œ)Ž " % " " % Ž + Œ
G . In addition, } is a test tube which contains
  logic strands. Test tubes G G G j G j and G are
used as temporal storage.
5 …Œ)*Ž *Ž—Œ)Ž 
Procedure LogicOperation (GJO2 *_cG¡w3¢LO£G , GJO2 )_cGJw0¢LO˜} , GJO2 *_cG¡w3¢LO£G/– )
%
Step 1: Divide memory strands into two test tubes G and G 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.
5 …Œ)*Ž "
NPOQ*RSOT G }Ó
m 5 …ŒFŽ
3/OiTn:o0R3 G 
5 …ŒFŽ
]^O/i1_cw6Q2i1_c:cXV G 
h 5 …Œ)Ž "F % " % 4#" Ž + Œ
OKZ6i1Q2i1_c:oXV G ] ] ] ] G 

(1-2) Separate memory strands according to outputs of operations.


m Ž + Œ
3/OiTn:o0R3 G 
Ž + Œ " %
WYnOi1y1i#RSOT G ] ] 
Ž + Œ ") ‡ M" ‡ '" % ‡F" % ‡[4
NPOQ*RSOT G 7 ] ] ] 7 ] 
m Ž + Œ
3/OiTn:o0R3 G 
Ž + Œ
]^O/i1_cw6Q2i1_c:cXV G 
h Ž + Œ F "  L ‡ " ‡K41"
OKZ6i1Q2i1_c:oXV G 7 7 G 
h Ž + Œ "F L ‡ " K ‡ 41" %
OKZ6i1Q2i1_c:oXV G G 

(1-3) Cut and remove auxiliary strings from each strand.


m " m %
3/OiTn:o0R3 G  3/OiTn:o0R0 G 
'" % " %" %
WYnOi1y1i#RSOT G ] ]  WYnˆOi#yTi#RTOT G ] ] 
" %
]^O/i1_cw6Q2i1_c:cXV G  ]^O/i1_cw6Q2i1_c:cXV G 
h '"F2‡L" ‡F" %4#" Ž + Œ " h %"F‡F" ‡F" %24#" Ž + Œ
OKZ6i1Q2i1_c:oXV G W W G  OK6
Z i1Q2i#_c:cXV G W W G 
" %
Step 2: Assign values to memory strands in each of test tubes G G .
‹ m "
iTnw0O   *:R13 ÔO3_ 7, G G j 
‹ m % " %
iTnw0O   *:R13 ÔO3_ # G G j 
Step 3: Merge two output test tubes.
" Ž—Œ)Ž
WYX[Z,\3 G j / G – 
*Ž—Œ)Ž " %
NPOQ*RSOT G/– G j
4

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
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 +.-3% +J-
only.
()(*( +.-3% +.- (*()(
+.-3binary
% i +.-/i %
We consider
"
addition of two numbers,
Š I Š i and ¢ ¢ I ¢ , which represent two
"
numbers i ¢ such that iÕ²Ö  h Š Î 5—Ù +.i -/ŠÀ%×À Ø and ¢J²Ö Š Î
" h 5—Ù +J- ")(*()(*" h 5ËÙ M4
¢ Š¹×½Ø . We assume the two numbers i ¢ are stored in
 h 5—Ú +.-/%" h 5ËÚ +.- ")(*()()" h 5ËÚ '4
two sets of memory strands   I  and   I  , respectively. We
+.-3% +.-3% +.-/% +.- (*()( "
also assume i ³¢ Ò7 to simplify the description. Then, the sum     I   of two numbers i ¢
¸
is obtained using a procedure consisting of the following four steps. (Binary operators Û and are XOR and AND
operations, respectively.)
¸
1. For each ‰ 7 8’‰€8“ ”>‘  , compute Ü Š pi Š ۓ¢ Š , and \ Š zi Š ¢ Š

(This step denotes behavior of a half adder. Ü Š and \ Š denote a sum and a carry bit obtained from ‰ -th bits,
respectively.)
2. For each ‰ 7 8’‰€8“ ”>‘  , compute Z Š zÜ Š ¸Ý \ Š . Â
(Z Š ³
 in case that the ‰ -th bit propagates a carry in the k‰Þ>‘  -th bit to the —‰  -th bit.)
-/% -/% - ()(*(
3. For each ‰^  8“‰~8E ›>ß  , set ` Š r if \ Š à or there exists H á߉1 such that Z Š zZ Š Iv 
%
Z&âFã P and \#âvP , otherwise set ` Š E7 .

4. For each ‰  v8’‰€8“ ”>‘  , set   Š zÜ Š ۚ` Š .


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. h3ä h Œ
Let \ Š and Z Š be binary values stored in memory strands  Š and  Š for each ‰^ ˆ78‘‰8p å>z  . We first
generate the followingh/æ  Š
single strand W Š for each ‰^  Þ8š‰8z ›>ß  . ( W Š includes a memory strand for ` Š whose
value is 0, that, is, 7# .)
% m æ † % % m ä † ‡ hæ  Š % m ä † ‡
W Š ç] Š W W 7.] ] Š  ˆ 7#] Š

º
Next, we generate the following two single strands Š   and  Š   if \ Š å and Z Š å for each ‰ ˆ78@‰98
›>“  , respectively.
º ‡ m ä † ‡ " ‡ m ä † † ‡
Š  V Š  Š  V Š m ä Š
-/%
Finally, we generate a single strand è ŠKé.Š for each ‰  v89‰^8“ Ã>‘  to propagate a carry.
-/% m ä † Š ‡g‡ m ä † Š -3%
è ŠKé.Š 
-3%
The above single strands are stored in a test tube and annealed. We first consider the case that \ Š ¦ . We
obtain the following double strand for ` Š . êë
º -3%
W Š Š  
-3% ìí
è ŠK郊

-/% - (*()( %
We-3%Mnext
"
consider
-3%
the case% that Z Š
- ")(*()()"
îZ Š Iï ðZ&âLã 
º
and \#âñ . Single strands
è K
Š .
é Š è Š .
é Š I èxâLã é â are used to propagate a carry stored in â,   , and we obtain the following
double strand for ` Š êë.
-/% - (*()( % º
W Š  Š    Š I    âLã   â  
-/% -/% - ()(*( % % ìí
è ŠKé.Š è Š 郊 I èxâLãI é âFã èÞâLã é â

‡
After ]ÕO*/i1_cw&Q2i#_c:cX for the test tube, a single strand containing a string j j j j is separated into another test
% h º
tube G using OKZ6i1Q2i#_c:cX . (In the above generated single strands, only â   contains the string.) The other
single strands containing a memory strand is also separated in test tube G .

9
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 assignment and 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 so
primitive 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:1021–1024,
1994.
[2] P. Frisco. Parallel arithmetic with splicing. Romanian Journal of Information Science and Technology,
2(3):113–128, 2000.
[3] F. Guarnieri, M. Fliss, and C. Bancroft. Making DNA add. Science, 273:220–223, 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 212–220, 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 159–166, 2001.
[6] R. J. Liption. DNA solution of hard computational problems. Science, 268:542–545, 1995.
[7] R. B. Merrifield. Solid phase peptide synthesis. I. The synthesis of a tetrapeptide. Journal of the American
Chemical Society, 85:2149–2154, 1963.
[8] G. Pǎun, 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 481–486,
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
570–577, 2000.
[11] J. H. Reif. Parallel biomolecular computation: Models and simulations. Algorithmica, 25(2/3):142–175,
1999.

10

S-ar putea să vă placă și