Algorithm 2: Mating Selection

Input: P

Output: M P

1: P 1 , P 2 P

2: if P 1 P 2 or P 1 G r i d P 2 then

3: return P 1

4: else if P 2 P 1 or P 2 G r i d P 1 then

5: return P 2

6:else if G C D ( P 1 ) G C D ( P 2 ) then

7: return P 1

8: else if G C D ( P 2 ) G C D ( P 1 ) then

9: return P 2

10: else if r a n d o m ( 0 , 1 ) < 0.5 then

11: return P 1

12: else

13: return P 2

14: end if