08.01.2013 Views

LNCS 2950 - Aspects of Molecular Computing (Frontmatter Pages)

LNCS 2950 - Aspects of Molecular Computing (Frontmatter Pages)

LNCS 2950 - Aspects of Molecular Computing (Frontmatter Pages)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Transducers with Programmable Input by DNA Self-assembly 233<br />

4 Recursive Functions as Composition <strong>of</strong> Transducers<br />

Recursive functions are defined through the so called minimization operator.<br />

Given a function g(x1,...,xn,y)=g(x,y) the minimization f(x) =µyg(x,y)is<br />

defined as:<br />

⎧<br />

⎨ y if y is the least natural number such that<br />

f(x) =µyg(x,y)=<br />

g(x,y)=0<br />

⎩<br />

undefined if g(x,y) �= 0forally<br />

A function f(x) is called total if it is defined for all x. Theclass<strong>of</strong>recursive<br />

or computable functions is the class <strong>of</strong> total functions that can be obtained<br />

from the initial functions z(x),s(x),Ui n (x) with a finite number <strong>of</strong> applications<br />

<strong>of</strong> composition, recursion and minimization. The Kleene normal form theorem<br />

shows that every recursive function can be obtained with only one application<br />

<strong>of</strong> minimization (see for example [5]).<br />

In order to show that all recursive (computable) functions can be obtained<br />

as a composition <strong>of</strong> transducers we are left to observe that the minimization<br />

operation can be obtained in this same way. As in the case <strong>of</strong> recursion we<br />

adjust the prototiles for function g into prototiles ¯P (g) which contain pairs as<br />

symbols, but the computation <strong>of</strong> g is performed on the first coordinate i.e.,<br />

every prototile <strong>of</strong> the form [q, a, a ′ ,q ′ ] in the set <strong>of</strong> prototiles for g is substituted<br />

with [q, (a, a2), (a ′ ,a2),q ′ ]wherea2are in {0, 1}. Second coordinates are kept to<br />

“remember” the input for g. Now the minimization is obtained in the following<br />

way (all representations <strong>of</strong> x are in unary).<br />

– Fix the input x into (x, 0) by the transducer T n add(0) .<br />

– Translate input (x, 0) into (¯x, ¯0) using the translation transducer T2 as presented<br />

in Figure 6. Now each symbol a in the input portion (x, 0) is translated<br />

into a pair (a, a).<br />

– Apply ¯ P (g), hence the result g(x) can be read from the first coordinates <strong>of</strong><br />

the input symbols. The second coordinates read (x, 0).<br />

– Until the first coordinate reads 0 continue:<br />

• (*) Check whether g(x) = 0 in the first coordinate. This can be done<br />

with a transducer which “reads” only the first coordinate <strong>of</strong> the input<br />

pair and accepts strings <strong>of</strong> the form 0 + 10 + and rejects 0 + 11 + 0 + .<br />

• If the transducer is in “accept” form, then<br />

∗ Change 1 from the first coordinate in the input into 0.<br />

∗ Translate back from pairs <strong>of</strong> symbols into a single symbol with TR.<br />

∗ Apply U n+1<br />

n+1 ,stop.<br />

• If the transducer is in “reject” form,<br />

∗ Change all 1’s from the first coordinate with 0’s. (I.e., apply z(x) on<br />

the first coordinate.)<br />

∗ Apply T n+1<br />

add(0) to the second coordinate. Hence an input that reads<br />

from the second coordinate (x,y) is changed into (x,y+1).<br />

∗ Copy the second coordinates to the first with transitions: (s, (a1,a2))<br />

↦→ ((a2,a2),s).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!