Research Article

Fast Parallel Molecular Algorithms for DNA-Based Computation: Solving the Elliptic Curve Discrete Logarithm Problem over 𝐺𝐹(2𝑛)

Algorithm 7

Procedure AddTwoNode 𝑇 0 .
(1) Picking01 ( 𝑇 0 , 𝑛 , π‘₯ 1 , 𝑦 1 , π‘₯ 2 , 𝑦 2 , π‘Ÿ )
(2) Picking02 ( 𝑇 0 , 𝑛 , π‘₯ 1 , 𝑦 1 , π‘₯ 2 , 𝑦 2 , 𝑇 1 1 )
(3) PickingInverse ( 𝑇 0 , 𝑛 , π‘₯ 1 , 𝑦 1 , π‘₯ 2 , 𝑦 2 , 𝑇 1 2 )
(4) PickingEqual ( 𝑇 0 , 𝑛 , π‘₯ 1 , 𝑦 1 , π‘₯ 2 , 𝑦 2 , π‘Ÿ , 𝑇 2 )
(5) For ( 𝑇 0 , 𝑛 , π‘₯ 1 , 𝑦 1 , π‘₯ 2 , 𝑦 2 , 𝑇 3 ) to 𝑗 = 0
 (5a) Append 𝑀 βˆ’ 1
EndFor
(6) ParallelAdder ( 𝑇 0 , π‘₯ 0 π‘Ÿ + 𝑛 + 𝑗 )
(7) ParallelAdder ( 𝑇 0 , 𝑛 , 𝑦 1 , 𝑦 2 , π‘Ÿ + 𝑛 + 𝑀 )
(8) ParallelDivision ( 𝑇 0 , 𝑛 , π‘₯ 1 , π‘₯ 2 , π‘Ÿ + 𝑛 + 𝑀 + 𝑛 )
(9) For ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + 𝑀 + 𝑛 , π‘Ÿ + 𝑛 + 𝑀 , π‘Ÿ + 𝑛 + 𝑀 + 2 𝑛 ) to 𝑗 = 0
 (9a) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 3 , π‘₯ 1 π‘₯ 1 + 𝑗 )
 (9b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 3 , π‘₯ 1 π‘₯ 1 + 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑛 + 𝑗 )
 (9c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑛 + 𝑗 )
EndFor
(10) ParallelMultiplier 𝑇 3 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 )
(11) ParallelShifter ( 𝑇 3 , 𝑛 , π‘Ÿ + 𝑛 , π‘Ÿ + 𝑛 )
(12) ParallelAdder ( 𝑇 3 , 𝑛 , π‘Ÿ + 𝑛 + 𝑛 + 𝑛 Γ— 𝑛 )
(13) ParallelDivision ( 𝑇 3 , 𝑛 , 𝑦 1 , π‘Ÿ + 𝑛 + 𝑛 + 𝑀 βˆ’ 𝑛 , π‘Ÿ + 𝑛 + 𝑛 + 𝑀 )
(14) ( 𝑇 3 , 𝑛 , π‘₯ 1 , π‘Ÿ + 𝑛 + 𝑛 + 𝑀 , π‘Ÿ + 𝑛 + 𝑛 + 𝑀 + 𝑛 )
SUPPOSE 𝑇 0 = βˆͺ ( 𝑇 0 , 𝑇 3 )
(15) ParallelMultiplier π‘ˆ = 𝑛 + 𝑀 + 𝑛 + 𝐷
(16) ParallelShifter ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ βˆ’ 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ βˆ’ 𝑛 )
(17) ParallelAdder ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑛 Γ— 𝑛 )
(18) ParallelAdder ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ βˆ’ 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 βˆ’ 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 )
(19) ParallelAdder ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 , π‘₯ 1 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 𝑛 )
(20) For ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 𝑛 , π‘₯ 2 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 𝑛 + 𝑛 ) to 𝑗 = 0
 (20a) Append 𝑛 βˆ’ 1
EndFor
(21) ParallelAdder ( 𝑇 0 , π‘₯ π‘Ž , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 3 𝑛 + 𝑗 )
SUPPOSE ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 2 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 3 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ + 𝑀 + 4 𝑛 )
(22) ParallelAdder 𝑋 = π‘ˆ + 𝑀 + 5 𝑛
(23) ParallelMultiplier ( 𝑇 0 , 𝑛 , π‘₯ 1 , π‘Ÿ + 𝑛 + 𝑋 βˆ’ 𝑛 , π‘Ÿ + 𝑛 + 𝑋 )
(24) ParallelShifter ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + π‘ˆ βˆ’ 𝑛 , π‘Ÿ + 𝑛 + 𝑋 )
(25) ParallelAdder ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + 𝑋 + 𝑛 + 𝑛 Γ— 𝑛 )
(26) ParallelAdder ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + 𝑋 + 𝑛 + 𝑀 βˆ’ 𝑛 , π‘Ÿ + 𝑛 + 𝑋 βˆ’ 𝑛 , π‘Ÿ + 𝑛 + 𝑋 + 𝑛 + 𝑀 )
SUPPOSE ( 𝑇 0 , 𝑛 , π‘Ÿ + 𝑛 + 𝑋 + 𝑛 + 𝑀 , 𝑦 1 , π‘Ÿ + 𝑛 + 𝑋 + 𝑛 + 𝑀 + 𝑛 )
(27) For π‘Œ = 𝑛 + 𝑀 + 𝑛 + 𝑛 to 𝑗 = 0
 (27a) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑋 + 𝑗 )
 (27b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑋 + 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ + 𝑗 )
 (27c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ + 𝑗 )
EndFor
(28) For 𝑇 0 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 ) to 𝑗 = 0
 (28a) 𝑛 βˆ’ 1 and 𝑇 π‘š = + ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ βˆ’ 𝑛 + 𝑗 )
 (28b) Append 𝑇 𝑠 = βˆ’ ( 𝑇 0 , π‘₯ 1 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ βˆ’ 𝑛 + 𝑗 ) and Append ( 𝑇 π‘š , π‘₯ 1 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ + 𝑛 + 𝑗 )
 (28c) ( 𝑇 𝑠 , π‘₯ 0 π‘Ÿ + 𝑛 + 𝑋 + π‘Œ + 𝑛 + 𝑗 )
EndFor
(29) Append 𝑇 0 = βˆͺ ( 𝑇 π‘š , 𝑇 𝑠 ) bits 0 to each strand in 𝑛 + 𝑋 + π‘Œ and 𝑇 1 1 . Then, append values of 𝑇 1 2 and π‘₯ 2 of each strand to
   the end in 𝑦 2 , and append values of 𝑇 1 1 and π‘₯ 1 of each strand to the end in 𝑦 1
(30) Append 𝑇 1 2 bits 0 to every strand in 𝑋 + π‘Œ + 2 𝑛
(31) 𝑇 2
EndProcedure