13.12.2012 Views

Theoretical and Experimental DNA Computation (Natural ...

Theoretical and Experimental DNA Computation (Natural ...

Theoretical and Experimental DNA Computation (Natural ...

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.

54 3 Models of Molecular <strong>Computation</strong><br />

In surviving strings there is an edge of the graph for each consecutive pair<br />

of vertices in the string. Since the string is also a permutation of the vertex<br />

set it must also be a Hamiltonian path. Of course, U will contain every legal<br />

solution to the problem.<br />

The subgraph isomorphism problem<br />

Given two graphs G1 <strong>and</strong> G2 the following algorithm determines whether G2<br />

is a subgraph of G1.<br />

Problem: Subgraph isomorphism<br />

Is G2 =(V2,E2) a subgraph of G1 =(V1,E1)? By {v1,v2,...,vs} we denote<br />

the vertex set of G1; similarly the vertex set of G2 is {u1,u2,...,ut} where,<br />

without loss of generality, we take t ≤ s.<br />

Solution:<br />

• Input: The input set U is the set Ps of permutations output from the<br />

Permutations algorithm. For 1 ≤ j ≤ t an element p1i1p2i2 ...psis of<br />

Ps is interpreted as associating vertex pj ∈{u1,u2,...,ut} with vertex<br />

ij ∈ {v1,v2,...,vs}. The algorithm is designed to remove any element<br />

which maps vertices in V1 to vertices in V2 in a way which does not reflect<br />

the requirement that if (ps,pt) ∈ E1 then (is,it) ∈ E2.<br />

• Algorithm:<br />

for j =1tot− 1 do<br />

begin<br />

copy(U, {U1,U2,...,Ut})<br />

for all l, j < l ≤ t such that (pj,pl) ∈ E2 <strong>and</strong> (ij, il) /∈ E1<br />

in parallel do remove(Uj, {plil})<br />

union({U1,U2,...,Ut},U)<br />

end<br />

select(U)<br />

• Complexity: O(|Vs|) parallel time.<br />

For any remaining strings, the first t pairs plil represent a one-to-one association<br />

of the vertices of G1, with the vertices of G2 indicating the subgraph of<br />

G1 which is isomorphic to G2. If select(U) returns the value empty then G2<br />

is not a subgraph of G1.

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

Saved successfully!

Ooh no, something went wrong!