Solujen erilaistuminen on yleinen ilmiö monisoluisen organismin kehityksessä. Vaikka soluilla onkin samanlaiset perimät, silti ne erikoistuvat erilaisiin tehtäviin monisoluisen organismin kehittyessä. Biologinen solun kehittyminen riippuu paitsi solun omasta geneettisestä ohjauksesta myvs ympäristötekijöistä: naapurisolujen ja soluväliaineen tilasta ja viesteistä [NiKoVi90]. Mitä vähemmän erilaistunut solu on, sitä pystyvämpi se on jakautumaan. Monisoluiset organismit kykenevät erikoistuneiden solujensa ja elintensä avulla tehokkaasti mukautumaan ympäristöönsä, vieläpä muokkaamaan olosuhteita itselleen edullisemmiksi.
Kolmannessa kappaleessa käsitellään abstraktia mallia solujen erilaistumisesta, missä solut ovat vuorovaikutuksessa keskenään ympäristön kautta [FuKa97]. Vaikka Furusawan ja Kanekon malliin ei löydy luonnosta täysin vastaavaa biokemiallista tapahtumaa, antaa se kuitenkin oikeansuuntaisen kuvan biologisesta ilmiöstä.
Neljännessä kappaleessa kuvataan Thearlingin ja Rayn suorittamia kokeita, joissa käsitellään monisoluisten, digitaalisten organismien evoluutiota keinoelämässä [ThRa94]. Rinnakkaiset ohjelmat virtuaalisen tietokoneen jaetussa muistissa kuvastavat yksittäisiä organismeja.
Solujen sisäiset reaktiot kuvataan tietynlaisena matriisiverkkona, johon vaikuttaa 16 erilaista kemikaalia. Matriisista voidaan päätellä solun reaktio, kun tietyt kemikaalit ovat yhteydessä keskenään. Reaktioiden ehtona on katalyytin olemassaolo. Tiettyjen kemikaalien reaktion tulos voi toimia myvs toisen reaktion entsyyminä.
Solut kommunikoivat ympäristön kanssa kuljettamalla kemikaaleja sisään ja ulos. Kemikaalien siirtyminen solusta toiseen riippuu diffuusiosta eli soluseinän ulko- ja sisäpuolisen nesteen väkevyyseroista. Furusawa ja Kaneko jakavat kemikaalit kahteen osaan, toiset pystyvät läpäisemään solukalvon ja toiset eivät. Läpäisykykyisten kemikaalien virtaamisnopeus määräytyy matemaattisesta kaavasta, jossa otetaan huomioon soluyhteisvn solujen kokonaismäärä, solun kasvuvauhti ja diffuusiovakio.
Solut "imevät" läpäisykykyisiä kemikaaleja ympäristöstä. Reagoidessaan solun sisällä muiden kemikaalien kanssa niistd syntyy läpäisykyvyttömiä kemikaaleja, esimerkiksi solukalvoa tai DNA:ta. Solu jakautuu kahtia, kun sen koko on kaksinkertaistunut. Jakaantuneen solun tyttäret ovat kemialliselta rakenteeltaan melkein identtiset, mutta pieniä eroja voi esiintyä.
Joissakin Furusawan ja Kanekon suorittamissa kokeissa erilaistumisprosessi pysähtyi edellä kuvattuun tilanteeseen (solut tyyppiä 0, 1 tai 2), mutta useimmissa tapauksissa erilaistumisprosessi kuitenkin jatkui. Tällöin tapahtui siis hierarkista erikoistumista. 1-tyypin solut voivat edelleen erilaistua joko 3-, 4- tai 5-tyypin soluiksi. Solutyyppien 3, 4 ja 5 esiintyminen riippuu alkuperäisen solun kemiallisesta koostumuksesta.
Kuva 1. Sääntökaavio(Tässä pitäisi siis olla kuva)
Furusawan ja Kanekon kokeissa solun erilaistuminen toisen tyyppiseksi soluksi riippui tietyistä säännöistä. Näitä sääntöjä esittää kuvan 1 tila-automaattimainen kaavio. Tyyppi 5 on muista tyypeistä poikkeava, sillä tyyppiä 5 olevan solun esiintyminen soluyhteisössä aiheutti lopulta kaikkien soluyhteisön solujen erilaistumisen tyypiksi 5.
Tyyppimuunnos ei tapahtunut samaan aikaan solun jakautumisen kanssa, vaan tytärsolu pystyi muuttumaan toisentyyppiseksi soluksi vasta päästessään ympäristön vaikutuksen alaiseksi. Tytärsolujen pienet eroavuudet kasvoivat suuriksi eroiksi koko järjestelmässä vallitsevan epävakaisuuden ansiosta. Eri tyyppisten solujen olemassaolo puolestaan tasapainotti järjestelmää.
Monisoluisuus digitaalisessa maailmassa tarkoittaa sitä, että ohjelma muodostaa genotyypin ja prosessori vastaa solua. Jokaisella digitaalisella solulla on siis oma muistialueensa, jossa sijaitsee solun kopio ohjelmasta (=genotyyppi). Jos käytetään jaettua muistia, on genotyypin kopioiminen jokaiselle solulle muistin ja prosessointiajan tuhlausta. Siksi onkin käytetty yhtä muistialuetta useammalle prosessorille. Monisoluisuus voi kehittyä yhdestä solusta solun jakautumisten avulla. Alkuperäinen solu (prosessori) suorittaa käskyn, joka luo toisen solun (rinnakkainen prosessori). Erilaistumista tapahtuu silloin, kun eri prosessorit suorittavat eri osaa jaetusta ohjelmasta.
Ohjelmia kutsutaan "olioiksi" tai "organismeiksi", ja niiden käyttämää äärellistä määrää muistia "liemeksi" (soup). Virtuaalikoneen käyttöjärjestelmä tarjoaa "jakaja"-palvelua jakamaan prosessointiaikaa kasvavalle yhteisölle. Kun oliot täyttävät muistialueen, käyttöjärjestelmä kutsuu "leikkaaja"-palvelua, joka tappaa joitakin olioita niin, että muistialueelle jää vapaata tilaa vastasyntyneille olioille. Käyttöjärjestelmä luo myös virheitä, jotka vastaavat mutaatioita. Itseään kopioivat ohjelmat (oliot), joita suoritetaan virtuaalisessa tietokoneessa (Tierra) yhdessä käyttöjärjestelmän luomien virheiden (mutaatiot) kanssa vastaavat Darwinin evoluutioteoriaa luonnon valinnasta.
Toinen lisätty konekäsky oli nimeltään join. Kun tietty prosessori oliossa on päässyt join-käskyn suorittamiskohtaan, jää se odottamaan muiden prosessoreiden pääsyä samaan kohtaan. Tällöin kaikkien paitsi alkuperäisen solun (prosessori) toiminta lakkautetaan. Konekäsky luotiin välttämään Tierrassa esiintyvää rajoitusta, joka sallii vain yhden solun jakautumisen oliossa.
Monisoluinen organismi on paljon monimutkaisempi kuin yksisoluinen organismi, joten käskyjoukkoa jouduttiin muutaman kokeen jälkeen vielä laajentamaan. Lisätyt käskyt yksinkertaistivat monisoluisen organismin rakennetta. Ensimmäinen käsky (zeroD) nollasi DX-rekisterin sisällön. Toinen käsky (shr) puolestaan teki CX-rekisterille bittisiirron oikealle. Koska CX- rekisteri tyypillisesti sisälsi olion koon, jakoi shr-operaatio tehokkaasti olion koon kahdella. Kaksi muuta käskyä perustuivat yleiseen hajautettujen, rinnakkaisten prosessien tekniikkaan. Käskyt suorittavat operaation, joka kertoi koon (joka tavallisesti ensin on jaettu prosessorien määrällä) prosessorin osoitteella. Tämä arvo on vastine, joka jakaa muistin tasaisesti rinnakkaisten prosessorien kesken. Kun tämä arvo lisätään perusosoitteeseen, saadaan selville jokaisen rinnakkaisen prosessin yksilökohtainen aloituskohta. Käskystä luotiin kaksi versiota: offAACD ja offBBCD.
Kokeet tehtiin rinnakkaisella supertietokoneella, jotta voitaisiin tarkastella suurempaa ja nopeampaa evoluution simulaatiota. 200 miljoonan konekäskyn jälkeen huomattiin asteittaista lisääntymisen nopeutumista. Tämä johtui siitä, että prosessorien lukumäärä organismeissa kasvoi hiljalleen kahdesta neljään. Lisäksi dominoivien organismien koko kasvoi alkuperäisestä 44:stä 52:een. 44:n kokoisissa organismeissa oli vain kaksi solua (prosessoria), kun taas 52:n kokoisissa niitä oli neljä. Yksi huomattava ominaisuus oli, että koon pienentäminen tapahtui kahden prosessorin tapauksessa poistamalla kaksi käskyä, ja neljän prosessorin tapauksessa poistamalla neljä käskyä. Työtaakka jaetaan siis tasan eri prosessorien kesken, eikä siten voida käsitellä tilannetta, jossa käskyjen määrä ei ole jaollinen prosessorien määrällä.
Ensimmäisten neljän prosessorin olioiden ilmestyttyä, 15 käskyä 52:sta eivät olleet enää merkitseviä. Ne olivat eräänlaisia introneita, jotka olivat jäänteitä kuolleista esi-isistä. Samanlaisia introneita voidaan myvs löytää ihmisistä, esimerkkinä tästä häntäluu. Evoluution vaikutuksesta neljän prosessorin olioiden pituus väheni ensin 48:aan (268 miljoonaa kellosykliä), sitten 44:ään (346 miljoonaa kellosykliä) ja lopulta 40:een (biljoona kellosykliä). Jokaisessa näissä kehityksen vaiheissa evoluutio poisti joitakin introneita pituuden kuitenkin aina ollessa jaollinen neljällä. Evoluutio toisin sanoen optimoi perusalgoritmin.
Nop0 ; beginning template
adrb ; find beginning + template size
nop1 ;
subAC ; sub template size from beginning
movAB ; put beginning in BX
adrf ; find end
nop0 ;
nop0 ;
subCAB ; calculate size
mal ; allocate space for daughter
incC ; intron (since CX no longer used)
split ; 2 CPUs
ifz ; intron (since CX cant be zero
movCD ; intron (since ifz not true)
shr ; size = size / 2
offAACD ; split genome into 2 halves &
offBBCD ; adjust AX and BX accordingly
zeroD ; zero out DX before second split
pushB ; save beginning on stack
shr ; size = size / 2
split ; 4 CPUs
offAACD ; re-partition genome into 4 and
offBBCD ; adjust AX and BX accordingly
nop1 ; copy loop starts here
nop0 ;
movii ; copy instr from mother to daughter
decC ; decrement number of instr to copy
ifz ; if number of instr to copy == 0
jmp ; jump back to just before join
nop0 ;
nop1 ;
join ; join up multiple CPUs
divide ; divide mother and daughter
ret ; return to beginning of creature
nop1 ; ending template
nop1 ; ending template
Kuva 2. Olion 0040aba genotyyppi
Kuvassa 2 näkyy olion 0040aba genotyyppi. Kyseinen nelisoluinen olio, jonka koko oli 40 kehittyi kahden solun esi-isästä, jonka koko oli 80. Käskyjoukossa on vielä kolme intronia jäljellä, mutta näiden poistaminen on mahdotonta, sillä käskyjen määrä ei silloin enää olisi jaollinen neljällä. Aluksi tämä olio tutkii itsensä saadakseen selville alku- ja loppupäänsä muistissa. Alku- ja loppupäästä olio päättelee kokonsa. Tämän jälkeen olio varaa tilaa tyttärelleen ja jakaantuu kahtia. Koko jaetaan kahdella ennen muistialueen jakamista kahden solun kesken. Rinnakkaiset prosessorit tekevät yhteistyötä kopioidessaan tytärsolulle genotyypin. Toinen prosessori kopioi ensimmäisen puolikkaan ja toinen prosessori toisen puolikkaan koodista. Ennen seuraavaa jakautumista olio nollaa DX-rekisterin. Juuri ennen toista jakaantumista olio laittaa BX-rekisterin sisällön pinoon. Rekisterin sisältöä tullaan tarvitsemaan monistamisprosessin jälkeen.
Toisen jakaantumisen jälkeen koko jaetaan jälleen kahtia, mikä aiheuttaa alkuperäisen koon pienenemisen neljännekseen. Edellisellä kerralla prosessorit jakoivat genotyypin puoliksi, kun nyt taas jokaiselle prosessorille jää vain neljäsosa koodista. Genotyypin kopiointi tapahtuu jokaisen prosessorin suorittaessa kopiointisilmukkaa, joka päättyy join-käskyyn. Divide-käsky aiheuttaa sen, että äitisolu menettää oikeutensa kirjoittaa tyttären muistiin. Tällöin tytär saa myös käskynosoittimen pinosta. Kun aloitusosoite (BX- rekisterin sisältö) otetaan pois pinosta, ryhtyy olio jälleen suorittamaan koodia alusta.
Lähitulevaisuudessa on tarkoituksena luoda laaja, moninainen alue globaaliin verkkoon digitaalisille organismeille. Kokeeseen osallistuvat solmut suorittavat Tierraa taustaprosessina luoden virtuaalisen aliverkon olemassaolevaan verkkoon. Digitaaliset organismit ovat vapaita liikkumaan ympäri virtuaalista verkkoa. Energian saanti (prosessointiaika) vaikuttaa organismien toimintaan. Organismeille kehittyy kyky ennakoida energian saatavuus ja navigoida pitkin verkkoa dynaamisesti vaihtuvan topologian vaikutuksesta.
[Aik92] Annukka Aikio, Uusi sivistyssanakirja, Otava, 11. painos, 1992
[FuKa97] Chikara Furusawa, Kunihiko Kaneko, Emergence of Differentiation Rules leading to Hierarchy and Diversity, European Conference on Artificial Life 1997, 172-181
[NiKoVi90] Mikko Niemi, L. Kalevi Korhonen, Ismo Virtanen, Solu- ja molekyylibiologia, Weilin+Gvvs, 2. painos, Tampere, 1990
[ThRa94] Kurt Thearling, Thomas S. Ray, Evolving Multi-cellular Artificial Life, 1994 Artificial Life IV, Proceedings of the Fourth International Workshop on the Synthesis and Simulations of Living Systems, 283-288