maanantai 14. elokuuta 2017

Yksinkertaisen kauniit solut

Merikotilo, jonka kuoressa on kahden värin muodostamia erikokoisia kolmioita.

(Richard Ling/Wikimedia Commons. CC-BY-SA 3.0. Rajattu.)

Kirjoitin keväällä Game of Life -simulaatiosta, jossa "solut" syntyvät ja kuolevat yksinkertaisten sääntöjen mukaan. Siinä on kolme ulottuvuutta: kaksiulotteinen pelikenttä ja aika. Siitä pääsee vielä yksinkertaisempaankin päin. Tässä tekstissä esittelen muutaman kaksiulotteisen soluautomaatin eli sääntöjä noudattavan solujärjestelmän. Kiehtovaa on, että sääntöjen äärimmäisestä yksinkertaisuudesta huolimatta muodostuvat kuviot saattavat johdattaa hyvinkin syvällisiin löytöihin.

Soluille voi keksiä vaikka kuinka monta tilaa, mutta nyt tarkastelen vain kahta: elossa tai kuollut. Koska ulottuvuuksia on kaksi, on sovittu, että jokaisen solun tila riippuu sen kolmen yläpuolella olevan naapurin tilasta. (Toisin sanoen "aika" etenee pystysuunnassa alaspäin.) Tällöin säännöt voidaan esittää taulukkona, esimerkiksi tällaisena:

Kahdeksan kuviota, joissa kolme yläruutua määrittävät yhden alaruudun.

Stephen Wolfram tutki näitä sääntöjä 80-luvulla ja kehitti niille nimeämiskäytännön. Edellisen taulukon alarivit muodostavat binääriluvun $01100110_2$ eli tuttavallisemmin $102$, jonka mukaan sääntö tunnetaan. Sääntöjä on $2^8 = 256$ kappaletta, mutta osa niistä on toisten peilikuvia tai käänteisiä versioita.

Kuvioiden piirtämiseen on toki monenlaisia ohjelmia (ja sellainen on helpohko kirjoittaa itsekin), mutta opin aikanaan Julia Collinsin (@haggismaths Twitterissä) loistavalla yleisöluennolla paljon helpomman ja nörtimmän tempun: Excelin. Vanha kunnon taulukkolaskentasofta vääntää hienot kuvat, kunhan ruutujen koon valitsee sopivaksi, kirjoittaa sopivan (karmean) kaavan ja lisää hieman automaattisia muotoiluja. Nerokasta... tai miten sen nyt ottaa. Vilkaistaan muutamaa hauskaa sääntöä.

Sääntö 30

Säännöt eivät riitä juuri kolmiota monimutkaisempien kuvioiden luomiseen, mutta kolmioita sitten riittääkin. Säännöstä 30 syntyvä kuvio on niin kaoottinen, että Wolfram käytti sitä satunnaislukujen luomiseen yrityksensä Mathematica-laskentaohjelmistossa. (Johon Wolfram|Alpha perustuu — siksi nimi tuntuu niin tutulta.)

Tietyillä merikotiloilla, jotka kuuluvat lajiin Conus textile, on kuoressaan tätä sääntöä vahvasti muistuttava kuvio. Kuoren kasvaessa reunan pigmenttisolut menevät päälle ja pois naapurisolujen vaikutuksesta. Kasvavan kuoren eteneminen vastaa suoraan aika-akselia. Yllättävän todellinen ilmenemismuoto!

Koristeellinen kuvio on niin hieno, että saman säännön muunnelmaa sovelletaan myös Cambridgen uuden rautatieaseman seinässä. Ikävänä mokana seinää markkinoitiin Game of Lifeen perustuvana, sen kehittäjä kun on cambridgeläinen — mutta todellisuudessa kuvioon liittyvä Wolfram onkin opiskellut Oxfordissa!

(Ylimmällä rivillä on tasan yksi elävä solu.)

Sääntö 110

Tämä on omituinen sääntö. Sen tuottama kuvio ei ole niinkään kaunis, mutta sitäkin tehokkaampi. Se nimittäin on täydellinen tietokone. Ei siinä, että sillä voisi noin vain pelata Minecraftia, mutta teoriassa. Kuviot etenevät siinä tavalla, jolla on mahdollista suorittaa loogisia operaatioita. Mahdollista, ei käytännöllistä — mutta milloin käytännöllisyys olisi ollutkaan ainoa kiinnostava juttu?

Koko todistus asialle on ymmärrykseni yläpuolella, mutta pääpiirteissään se menee näin: On jo vuosikymmeniä tiedetty, että teoreettinen Turingin kone voi suorittaa minkä tahansa suoritettavan ohjelman. (Ks. Matematiikan epätäydellisyys.) Seuraavaksi osoitettiin, että Turingin konetta vastaa toisenlainen teoreettinen kone. Sitten osoitettiin, että tätä konetta vastaa kolmas teoreettinen kone ja lopuksi, että sitä puolestaan vastaa sääntö 110. Koska ketjun jokainen askel on loogisesti pätevä, sääntö 110 vastaa Turingin konetta ja voi siksi laskea kaikkea laskettavissa olevaa!

(Tässä kuvassa alkurivillä on useampi elävä solu, jotta kuviosta tulisi kiinnostavampi.)

Sääntö 90

Oma suosikkini on sääntö numero 90. Siinä solu elää, jos sen ylävasemmalla ja yläoikealla olevista soluista tasan tarkkaan toinen elää. Aseta yläriville yksi solu ja saat tuloksena loputtoman jonon kolmioita. Kyseessä on Sierpinskin kolmiona tunnettu fraktaali. (Ks. Kuinka pitkä on Suomen rannikko?) Tavallisesti se tehtäisiin ottamalla kolmio, jakamalla se neljäksi, poistamalla keskimmäinen ja toistamalla sama jäljellejääneille osille. Tässä puolestaan kolmio syntyy "ulospäin zoomaten".

(Jos havaitset tällä kuviolla varustetun penaalin, tule moikkaamaan!)

Eikä siinä kaikki! Saatat tuntea Pascalin kolmion, jolla on merkitystä monilla matematiikan aloilla. Sääntö 90 piirtää Pascalin kolmiosta muunnelman, jossa elävät solut ovat parittomia ja kuolleet parillisia (kun luetaan joka toinen solu). Näinkin yksinkertaiset säännöt pystyvät siis moneen — ja ovat visuaalisesti erittäin miellyttäviä. Aika hupaisaa.

Pascalin kolmio, jossa parittomat termit tummennettu.


Wolframin tutkimusfirma ylläpitää tietokantaa erilaisista soluautomaateista ja muista yksinkertaisista säännöistä: The Wolfram Atlas of Simple Programs.

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.