Als één van de laatste stappen van genetische recombinatie kunnen twee homologe chromosomen tijdens de meiose genetisch materiaal uitwisselen in een proces dat synapsis genoemd wordt. Door deze chromosomale crossover ontstaan gerecombineerde chromosomen. Crossover komt meestal voor wanneer overeenkomstige regio's van overeenkomstige chromosomen breken en zich daarna terug aanhechten aan het andere chromosoom.

crossover
Fig. 64. Scheme to illustrate a method of crossing over of the chromosomes. Illustration made by Thomas Hunt Morgan (1916).
crossover
Fig. 65. Scheme to illustrate double crossing over of the chromosomes. Illustration made by Thomas Hunt Morgan (1916).

Een theoretische beschrijving van crossover werd geïntroduceerd door Thomas Hunt Morgan, die zich daarbij liet inspireren op het werk van de Belgische professor Frans Alfons Janssens van de Katholieke Universiteit Leuven. Deze laatste had het fenomeen reeds in 1909 beschreven en noemde het chiasmatypie.

Opgave

In deze opgave stellen we een chromosoom voor als een lijst of een tuple van strikt stijgende gehele getallen (elk getal is dus groter dan het voorgaande getal). De punten waar twee chromosomen kunnen openbreken — en waar zich dus crossover kan voordoen — worden aangegeven door de gemeenschappelijke getallen in de twee corresponderende lijsten of tuples. Dit wordt geïllustreerd in onderstaande afbeelding, waarbij crossover kan voorkomen waar de twee chromosomen elkaar raken.

crossover
Twee chromosomen [3, 5, 7, 9, 20, 25, 30, 40, 55, 56, 57, 60, 62] en [1, 4, 7, 11, 14, 25, 44, 47, 55, 57, 100], waarbij de crossoverpunten in het vet weergegeven worden. Bovenaan en onderaan worden de deelsommen voor, tussen en na de crossoverpunten weergegeven voor respectievelijk het eerste en het tweede chromosoom. De maximale deelsommen zijn hierbij in het vet weergegeven.

De chromosomen kunnen op de volgende manier doorlopen worden:

  1. Als startpunt kan het begin (de linkerkant) van één van beide chromosomen gekozen worden.

  2. Vanaf elk punt kan vooruit (naar rechts) gestapt worden.

  3. Bij een crossoverpunt heb je de keuze om verder te stappen op hetzelfde chromosoom, of over te schakelen op het andere chromosoom.

Gevraagd wordt:

Algoritme

Om de crossoverpunten te vinden, kan je gebruikmaken van het feit dat de getallen in de twee gegeven lijsten strikt stijgend zijn. Je kunt beide lijsten dan tegelijkertijd van links naar rechts doorlopen, waarbij je voor elke lijst afzonderlijk bijhoudt op welke positie je je momenteel bevindt. Ga telkens één stap vooruit in de lijst waar op de huidige positie het kleinste getal staat. Als je op de huidige positie in beide lijsten eenzelfde getal aantreft, dan heb je een crossoverpunt gevonden. Tijdens het doorlopen van beide lijsten kan je meteen ook al de deelsommen voor, tussen, en na de crossoverpunten bepalen.

Voorbeeld

>>> chromosoom1 = [3, 5, 7, 9, 20, 25, 30, 40, 55, 56, 57, 60, 62]
>>> chromosoom2 = [1, 4, 7, 11, 14, 25, 44, 47, 55, 57, 100]
>>> crossoverpunten(chromosoom1, chromosoom2)
4
>>> maximaleSom(chromosoom1, chromosoom2)
450

>>> chromosoom1 = [-5, 100, 1000, 1005]
>>> chromosoom2 = [-12, 1000, 1001]
>>> crossoverpunten(chromosoom1, chromosoom2)
1
>>> maximaleSom(chromosoom1, chromosoom2)
2100

Bronnen