Game of Life – artikkeli MikroBitissä vuodelta 1987

Kirjoitin artikkelin Elävää elämää vuonna 1987. Muistini mukaan olin sitä ennen kirjoittanut artikkelisarjan Logo-ohjelmoinnista, mutta se julkaistiin vasta tämän artikkelin jälkeen. Niinpä tämä on ensimmäinen julkaistu lehtijuttuni. Lehden toimittajan mukaan en syyllisty copyright-rikkomukseen, kun julkaisen sen täällä. Mikrobitin vanhat lehdet löytyvät osoitteesta https://www.mikrobitti.fi/retrobitti

Otin Retrobitistä löytyneestä lehdestä kuvankaappauksia ja avasin ne Macin Esikatselu-ohjelmassa. Se hallitsee OCR:ää melkoisen hyvin, niinpä sain kaapattua suurimman osan tekstistä Google Docsiin. Toki aika paljon piti korjata viallisia ja kadonneita sanoja.

En muokannut/korjannut tekstiä juuri ollenkaan. Lisäsin olioiden englanninkieliset nimet ja korjasin virheen missä viitattiin yksiulotteiseen soluautomaattiin kaksiulotteisena.

MikroBitti 6-7/87 kansi ja artikkelin ensimmäinen sivu

ELÄVÄÄ ELÄMÄÄ

Voiko tietokone luoda elollisen olennon? 

Alussa J. H. Conway ajatteli ruutupaperia, ja paperi oli autio ja tyhjä. Sitten hän loi elämän säännöt ja havaitsi, että ne olivat hyvät. Sitten hän erotteli elävät ruudut kuolleista ja alkoi pelata.

Vuonna 1970 julkaistiin amerikkalaisessa Scientific American -lehdessä artikkeli pelistä nimeltä Life (Elämä). Pelin oli kehittänyt englantilainen matemaatikko John Horton Conway. Lifen tietokoneharrastajien piirissa osakseen saamaa huomiota kuvaa hyvin se, että 1970-luvun alkuvuosina arvioitiin noin neljasosan maailman tietokoneista pelanneen Lifeä.

Elämää tietokoneessa

Ajatus tietokoneohjelmasta, joka luo elämää, tuntuu ensi alkuun järjettömältä. Mutta mitä elämä oikeastaan on; säännöstö, jonka perusteella jokin olio pystyy tekemään itsestään kopioita ja parhaassa tapauksessa muuttamaan muotoaan ja kehittymään.

Elävässä elämässä kyse on solujen lisääntymisestä. Tämä tapahtuu jakautumisen kautta ja lisääntymisen säännöt on sijoitettu solujen sisältämään DNA:han eräänlaisena kemiallisena ohjelmana. Jopa ihmisten lisääntymisen periaate voidaan johtaa yhden solun ensimmäiseen jakautumiseen. Vastaavasti on mahdollista luoda tietokoneohjelma, joka luo keinotekoisen maailman ja säännöstön sille, miten tuossa maailmassa olevat olennot käyttäytyvät ja lisääntyvät.

Elämän säännöt

Lifeä pelataan äärettömällä ruutupaperilla. Koska sellaista on vaikea löytää, pienempikin riittää. Äärettömyyttä voidaan matkia yhdistämällä paperin vasen ja oikea laita sekä ylä- ja alalaita. Oikeanreunimmaisen ruudun oikealla puolella oleva ruutu on siis paperin vasemmassa reunassa päinvastoin. Tästä seuraa tosin ongelmia isojen pelien vasemman ja oikean reunan sotkiessa toisiaan.

Aluksi osa paperin ruuduista täytetään esimerkiksi rasteilla. Syntynyttä kuviota kutsutaan ensimmäiseksi sukupolveksi. Täytettyjä ruutuja kutsutaan eläviksi ja tyhjiä kuolleiksi. Seuraava sukupolvi syntyy aina edellisen pohjalta sääntöjen pohjalta.

Syntymä: Kuollut ruutu muuttuu seuraavassa sukupolvessa eläväksi, jos tasan kolme sen ympärillä olevista kahdeksasta ruudusta on eläviä.

Kuolema ylikansoituksen johdosta: Elävä ruutu muuttuu seuraavassa sukupolvessa kuolleeksi, jos neljä tai useampia sen naapureista on eläviä.

Kuolema yksinäisyyden johdosta: Jos elävällä ruudulla on vähemmän kuin kaksi (yksi tai ei yhtään), elävää naapuria, niin ruutu kuolee.

On tärkeää huomata, että jokaisen ruudun tila riippuu vain edellisen sukupolven ruutujen tilasta, ja että syntymät ja kuolemat tapahtuvat samanaikaisesti.

Oliot

Lifen kaksiulotteiselle maailmankaikkeudelle muodostuu sukupolvien vaihtuessa erilaisia olentoja, jotka käyttäytyvät omalla ominaisella tavallaan. Näitä öttimönkiaisia kutsutaan olioiksi.

Oliolla voidaan tarkoittaa joko koko ruudukkoa tai sitten vain yhtä sillä olevista olennoista. Olioista yksinkertaisimmat ovat vakaita. Ne eivät muutu mihinkään, kuten kuvan 1 Laatikko (Box).

ja kuvan 2 Hunajakenno (honey comb). 

Kuviin on myös merkitty kunkin ruudun naapurien määrä. Kuten näistä luvuista käy ilmi, ei millään elävällä solulla ole alle kahta tai yli kolmea elävää naapuria. Vastaavasti ei löydy tyhjää ruutua, jolla olisi kolme naapuria

Vakaat tilat eivät kuitenkaan ole kovin kiintoisia. Seuraavaksi monimutkaisemmat oliot ovat jaksollisia. Ne palaavat alkutilaan aina tietyn sukupolvimäärän jälkeen. Näistä on hyvä esimerkki kuvassa 3 esitetty Vilkku (Blinker). Vilkku palaa alkutilaansa aina kahden jakson jälkeen, eli sen niin kutsuttu jakson pituus on kaksi. 

Kuvissa 4, 5 ja 6 on mielenkiintoisia alkutiloja, kirjoilta jokin tässä lehdessä esitetyistä Lifen versioista tietokoneeseesi ja kokeile niitä.

Kuva 6 esittää erittäin mielenkiintoista ötökkää, jota kutsutaan nimellä Kulkuri (Glider). Se on periaatteessa jaksollinen olio, jonka jakson pituus on neljä, mutta se palaa alkutilaansa ruudun verran väärässä paikassa. Olio siis liikkuu kuvan 7 osoittamalla tavalla.

Kehitystä

Pelkkä jaksollisuus tai liikkumiskyky ei anna oikeutta kutsua jotakin olentoa eläväksi. Sen tulee kyetä muuttumaan ja lisääntymään. Monistumisen ongelma saatiin ratkaistua 1971, kun Massachusetts Institute of Technologyn tekoälyn tutkimusryhmä keksi kuvassa 8 esitetyn kulkuritykin. 

Valitettavasti vain tykki ei oikein mahdu toimimaan 25x 40 ruudun pelilaudalla. Se kannattaa sijoittaa keskelle ja lähelle alalaitaa.

Tykki on muilta osin täysin jaksollinen olio, mutta se ampuu kulkurin joka 30. sukupolvi. Myöhemmin on myös havaittu, että kolmetoista oikealla tavalle yhteen osuvaa kulkuria muodostaa kulkuritykin. Näin ollen voidaan kuvitella kulkurien ja kulkuritykkien olevan yhden lajin kaksi lajin eri kehitysvaihetta; aivan kuten perhoset ja toukat. Kulkuritykki munii kulkureita, jotka sitten äärettömässä kaksiulotteisessa avaruudessa törmäilevät toisiinsa muodostaen otollisten olosuhteiden vallitessa uusia kulkuritykkejä.

Kulkuritykki toiminnassa 2022, kuvaruutukaappaus nykyaikaisesta ohjelmasta

Edellä esitetyn lisäksi elämän kehitys vaatii vielä muita osatekijöitä. Mukaan täytyy satunnainen muutoselementti eli mutaatio. Sääntöjä täytyy muuttaa siten, että epämääräisin välein jokin kuollut ruutu saattaa muuttua itsestään eläväksi tai päinvastoin. Suurin osa näin syntyvistä muutoksista on tietenkin itsensä tuhoavia. Yksinäinen elävä ruutu tuhoutuu heti, mutta oikeassa paikassa mutaatio saattaa räjäyttää kulkuritykin tai sitten luoda jotakin aivan uutta ja arvaamatonta. Yritykseen ja erehdykseen luottavat mutaatiot ovat olleet ihmisenkin kehityksen perusta

Tietokone tietokoneessa

Life on myös siitä mielenkiintoinen peli, että sen avulla voidaan itse asiassa rakentaa tietokone. Kulkurien ja muiden olioiden avulla voidaan siirtää tietoa ruudukon eri osien välillä. Lisäksi voidaan luoda loogisia ja (AND), ei (NOT) sekä tai (OR) -portteja, joiden avulla tietoa voidaan muokata. Lifen kehittäjä Conway on osoittanut, että on mahdollista tehdä (suuri) alkutila, joka toimii kuin tietokone. Tämä alkutila  koostuu Life-tietokoneesta ja ruudukolle elävien solujen avulla luodusta ohjelmasta. Tällainen tietokone pystyisi ratkaise maan matemaattisla ongelma aivan yhtä hyvin kuin mikä tahansa binaarilukujen siirtelyyn ja muokkaamiseen perustuva laite.

Elämää ja elämää

Life ei ole suinkaan ainoa säännöstö tai tietokoneohjelma, jonka voidaan väittää matkivan elämän peruslakeja. Itse asiassa se on vain eräs yksinkertaisimmista.

Ensinnäkään ruutujen eli solujen ei välttämättä tarvitse olla joko eläviä tai kuolleita. Elämää vol olla monta eri lajia, ja sitä voidaan kuvata joko eri väreillä tai numeroilla. Säännöt, joilla solut vaihtavat väriä vaihtelevat mutta tärkeintä on se, että aina on kyse vain solun lähinaapurin ja kenties sen omasta tilasta, kun sen tulevaa tilaa lasketaan.

Elämä ei ole myöskään puristettu pelkästään kahteen ulottuvuuteen. Kolmiulotteisessa maailmankaikkeudessa ei ole muuta eroa kuin enemmän naapureita (kaksikymmentäkuusi). Vastaavasti kaksiulotteisessa [edit. tuossa on vikaa, pitää olla yksiulotteinen avaruus, tässä naapureiksi lasketaan kaksi naapuria molemmilta puolilta] vain neljä. Kuva 9 kuvaa kaksiyksiulotteisen mallin kehitystä ensimmäisten sukupolvien aikana.

Säännöstö on sellainen, että ensin lasketaan edellisestä sukupolvesta taulukossa molemmilla puolilla olevat luvut sekä samassa paikassa ollut luku yhteen ja sitten katsotaan oheisesta taulukosta mikä luku seuraavaan sukupolveen tulee.

summa:    0 1 2 3 4 5 6 7 8 9

seuraava: 0 2 0 0 1 0 0 0 0 0

Elämä on arvaamatonta

Pienen Life-ohjelmalla näpertelyn jälkeen, jokainen on valmis allekirjoittamaan viisaiden matemaatikkojen esittämän teoreeman, että on olemassa sellaisia alkutiloja, joista on mahdotonta päätellä laajenevatko ne ikuisesti, kuolevatko joskus vai muuttuvatko ne aikanaan jaksollisiksi. Voidaan siis olettaa, että kenen tahansa on mahdollista luoda alkutila, josta riittävän monen sukupolven aikana kehittyy älyllinen kaksiulotteinen olento. Kuka tietää, ettemme me vain pyöri jonkun suunnattoman tietokoneen sisuksissa, tai kuten Isaac Asimov totesi novellissaan The Final Question: ”Ja Multivac sanoi, tulkoon valkeus,  ja valkeus tuli”.


Artikkelin lopussa oli ohjelmia eri mikrotietokoneille, Pekka Niemen koodi MSX:lle, Vesa Ylitolvanan koodi Spectrumille ja Henrik Peschin koodi C-64:lle. Itse pelasin Lifeä Hyllin Apple II:lla. 

Nykypäivänä Game of Lifestä löytyy useita eri versioita tietokoneille ja mobiililaitteille. Minä itse käytän Macissäni App Storesta löytyvää Game of Life -ohjelmaa, se pitää sisällään noin 800 erilaista oliota. https://xs-labs.com/en/apps/game-of-life/overview/

Ehkä kuuluisin ohjelma (Windows/Mac/Linux ja mobiiliversiot) on Golly http://golly.sourceforge.net Gollyssä voi myös käyttää eri sääntöjä soluautomaattien luomisessa.

Kirjassa Berlekamp, Conway, Guy: Winning Ways Volume 2 luvussa 25 on esitetty todistus sille, että Lifellä voi luoda “Universaalin Turingin tietokoneen”. Tämä tarkoittaa sitä, teoriassa Game of Lifella luotu tietokone on laskennallisesti yhtä vahva kuin nykyajan tietokoneet.

John Horton Conway kuoli 2020.

https://en.wikipedia.org/wiki/John_Horton_Conway

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: