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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A DNA Algorithm for the Hamiltonian Path Problem 293<br />

– Step 0: (t =0)(pre-loading). Put into each chamber Fj, enough copies <strong>of</strong> the<br />

strands associated with vertices vi for which there exists an edge (i, j) ∈ A.<br />

– Steps 1 to (n − 1): (from t =1tot =(n− 1)).<br />

• Computations: In each time unit, for all 1 ≤ i ≤ n, in parallel a filtering<br />

in all Fi and an append operation in all Ci is performed.<br />

• Movement (pumping) <strong>of</strong> strands from step t to step t+1. Input(Fj �<br />

)=<br />

(t+1)<br />

Output(Ci ) for all (i, j) ∈ A. The inlet <strong>of</strong> each chamber Fj in time<br />

(t)<br />

t + 1 is the union <strong>of</strong> the outlets <strong>of</strong> chambers Ci in time t such that<br />

(i, j) ∈ A.<br />

– Readout: After step (n−1) collects the strands in the output <strong>of</strong> chambers Ci.<br />

If there are no output strands, the graph has no Hamiltonian paths. If there<br />

are output strands in chamber Ci, there are Hamiltonian paths ending with<br />

vertex vi; we need yet to determine the initial vertex <strong>of</strong> the strands in the<br />

output <strong>of</strong> each chamber Ci. The initial vertex <strong>of</strong> each Hamiltonian path and<br />

the exact sequence <strong>of</strong> vertices could be determined with a DNA sequencing<br />

microchip.<br />

2.3 Example<br />

We show an example <strong>of</strong> the execution <strong>of</strong> the algorithm for a graph with four vertices.<br />

This graph has 3 Hamiltonian paths: 2143, 2134 and 1234. Figure 1 shows<br />

the graph and the associated micr<strong>of</strong>luidic device. Table 1 shows the contents <strong>of</strong><br />

each chamber in each step. Remember that Input(Fj )= (t+1) � Output(Ci )for<br />

(t)<br />

all (i, j) ∈ A. In step 3 (time t =3=n−1), we must check if there is any output<br />

in any chamber Ci. In this case, for this graph, there are outputs in chambers<br />

C3 and C4 so we know there are Hamiltonian paths ending at vertices v3 and v4<br />

respectively. To find out the first vertex and the exact order <strong>of</strong> the other vertices<br />

in each path, we need to sequence these strands: paths 2143, 2134, and 1234 are<br />

found.<br />

t =1 t =2 t =3 t =4<br />

F1 = {2} F1 = {12} F1 = {−} F1 = {−}<br />

C1 = {21} C1 = {−} C1 = {−} C1 = {−}<br />

F2 = {1} F2 = {21} F2 = {−} F2 = {−}<br />

C2 = {12} C2 = {−} C2 = {−} C2 = {−}<br />

F3 = {1, 2, 4} F3 = {21, 12} F3 = {214, 134, 234} F3 = {2134, 1234}<br />

C3 = {13, 23, 43} C3 = {213, 123} C3 = {2143} C3 = {−}<br />

F4 = {1, 3} F4 = {21, 13, 23, 43} F4 = {213, 123, 143} F4 = {2143}<br />

C4 = {14, 34} C4 = {214, 134, 234} C4 = {2134, 1234} C4 = {−}<br />

Table 1. Running <strong>of</strong> the algorithm. In time t = 3 we must readout the output<br />

<strong>of</strong> the chambers Ci. In bold, strands codifying Hamiltonian paths.

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

Saved successfully!

Ooh no, something went wrong!