Skip to content

Wolframo elementarios programėlės

2 pav. Elementaraus ląstelinio automato, kuris naudoja taisyklę 110 evoliucija stratuojant nuo pradinės atsitiktinai suformuotos eilutės.

Matematikoje ir skaičiavimų teorijoje elementariomis programėlėmis, o tiksliau elementariais ląsteliniais automatais, vadinami vienmačiai ląsteliniai automatai, kurių ląstelės gali būti vienoje iš dviejų būsenų – t.y. tik įjungtos arba išjungtos. Taip pat svarbu žinoti, kad elementarių ląstelinių automatų ląstelės būsena duotu laiko momentu, 90afc0042a7ec7cd4de37d5ab867481a T 000000 0 inline Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai , priklauso tik nuo pačios ląstelės ir jos artimiausių kaimynų būsenų ankstesniu laiko momentu, 71b7d8668646cda541167cb4c79bd510 T 000000 0 inline Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai . Dėl šių apribojimų tokie ląsteliniai automatai atrodo labai paprasti, tačiau jais galima imituoti gan sudėtingą ar net chaotinę elgseną.

Literatūroje šie ląsteliniai automatai dar vadinami Wolframo elementariomis programėlėmis, nes būtent S. Wolframas pirmą kartą susidomėjo šiuo ląstelinių automatų tipu. Grįsdamas savo susidomėjimą Wolframas knygoje „New Kind of Science“ pastebi, kad lygtys yra nepajėgios aprašyti iš sudėtingų reiškinių, kai pats pasaulis, gamta ar Visata, mėgsta elegantišką paprastumą. Tad natūraliausias problemos sprendimas būtų bandymas atrasti elementariausius pasaulio dėsnius pasinaudojant šių elementarių programėlių formalizmu. Iš tiesų Wolframas pasirodė esantis bent iš dalies teisus, nes kaip pamatysite toliau šie ląsteliniai automatai gali atkurti labai sudėtingas ir net chaotines struktūras.

Elementariojo ląstelinio automato taisyklės ir evoliucija

Taigi turime vienmatį ląstelinį automatą, kurio ląstelės gali būti tik įjungtos arba išjungtos. Taip žinome, kad kiekvienos ląstelės būseną sekančiu laiko momentu nusako trijų ląstelių būsenos dabartiniu laiko momentu. Vadinasi vienos ląstelės būseną galima bus nustatyti tuo atveju, jei žinosime aštuonias, nes 90adff218af5623facbf6f46d5e29aed T 000000 0 inline Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai , taisykles nusakančias visas galimas kaimynystės konfigūracijas, t.y. pačios ląstelės ir jos kaimynių konfigūracijas. Viena iš 256, nes 9ee7aec280ee49964e386e5791ad6a98 T 000000 0 inline Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai , galimų globalių taisyklių yra pavaizduota 1 paveiksle.

elementary ca rule110 Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai

1 pav. Elementariojo ląstelinio automato 110 taisyklė. Viršutinėje eilutėje yra aprašytos visos 8 galimos kaimynystės (t.y. sąlygos), o apatinėje eilutė pažymėtas evoliucijos rezultatas (vidurinės ląstelės būsena kitame žingsnyje). Jei ląstelė apatinėje eilutėje yra tuščia, tai ir ląstelė esant tokiai kaimynystės konfigūracijai kitame žingsnyje bus išjungta. O jei ląstelėje matomas juodas kvadratėlis, tai esant tokiai kaimynystės konfigūracijai vidurinė ląstelė kintame žingsnyje bus įjungta.

Pastebėkite, kad 1 pav. esančią taisyklę užkodavome dešimtainiu skaičiumi 110. Toks pažymėjimas yra gražesnis, kompaktiškesnis ir lengviau įsimenamas. O ir nustatyti taisyklės „numerį“ nėra labai sunku – tereikia apatinę, rezultato, 1 pav. eilutę įsivaizduoti kaip dvejetainį skaičių. Konkrečiu atveju tai būtų 01101110. Verčiame jį į dešimtainę sistemą:

f777742808db894875611cad42189564 T 000000 0 ordinary Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai

Žemiau esančiuose paveiksluose pastebėkite kokią globalią struktūrą nusako 110 taisyklė (žr. 2 pav.) ir kaip ši taisyklė yra taikoma skaičiuojant sekančią ląstelių kartą – keli pavyzdžiai paryškinti 3 paveiksle. Įdomumo dėlei galite palyginti ne tik paryškintas kaimynystės iš 3 pav. su taisyklėmis pavaizduotomis 1 pav., bet ir kitas – nesutapimų būti neturėtų.

elementary ca Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai

2 pav. Elementaraus ląstelinio automato, kuris naudoja taisyklę 110, evoliucija pradedant nuo pradinės atsitiktinai suformuotos eilutės. Evoliucija vyksta cilindrinėje erdvėje (eilučių galai tarpusavyje sujungti). Ordinačių (vertikali) ašis atitinka laiko ašį - viršuje pradiniai laiko momentai, o žemiau vėlesni.

elementary ca closeup Wolframo elementarios programėlės cellular automata interactive models  Wolfram seni modeliai

3 pav. Dvi 2 paveiksle pavaizduoto elementaraus ląstelinio automato ląstelių kartos. Raudonais stačiakampiais išskirtos trys kaimynystės, o raudonos rodyklės rodo iš ląstelių, kurios įtakoja ląstelės būseną, į ląstelę, kurios būsena yra įtakojama.

Kitos įdomesnės elementariojo ląstelinio automato taisyklės

Toli gražu ne visos elementariojo ląstelinio automato taisyklės generuoja įdomesnes struktūras. Dalis taisyklių yra trivialios – struktūra išnyksta arba su nedideliais svyravimais relaksuoja į tam tikrą fiksuotą konfigūraciją. Dalis yra įdomesnės – periodinės, iš pirmo žvilgsnio chaotinės arba turinčios ilgai gyvuojančias struktūras. Žemiau lentelėje pateikiame sąrašą įdomesnių taisyklių, kurias galima išbandyti naudojant interaktyvią programą esančią žemiau.

Taisyklė Struktūra, kai įvestis 1 langelis
18, 22, 26, 82, 90, 126, 146, 150, 154, 182, 210, 218 primena Sierpinskio trikampį
30, 50, 54, 58, 62, 86, 94, 114, 118, 122, 158,178, 186, 190, 214, 222, 242, 250, 254 primena lygiašonį trikampį
28, 60, 70, 78, 102, 110, 124, 156, 188, 198, 296, 220, 230, 238 primena statųjį trikampį

Interaktyvi programėlė

Programas valdymas yra elementarus – prieš pradedant skaičiavimą reiktų pasirinkti taisyklę ir įvesti pirmą, pradinę, ląstelių kartą. Taisyklė įvedama naudojant formą analogišką pavaizduotai 1 pav. – tiesiog spustelėkite pėle and šios formos antros eilutės langelių. O įvesti pradinę ląstelių kartą galima tiesiog pelyte „įjungiant“ ir „išjungiant“ pirmos gardelės eilutės ląsteles, paprasčiausiu atveju galima būtų pažymėti vieną vienintelę ląstelę. Jei nenorite to daryti rankiniu būdu, tai galite parinkti atsitiktinę įvestį – tam reikia nurodyti ląstelės „apgyvendinimo“ tikimybę ir spustelėti mygtuką „Apgyvendinti“.

Toliau ląstelinį automatą galima paleisti automatiškai užpildyti (suskaičiuoti) visas matomų kartų ląsteles, tai daroma mygtuko „Pradėk“ pagalba. O taip pat galima kiekvieną naują ląstelių kartą apskaičiuoti atskirai – kas kartą spustelėjant mygtuką „Iteracija“. „Iteracija“ mygtukas dar gali būti panaudotas tuo atvejui, jei norite suskaičiuoti tolesnes ląstelių kartas, kurios iš pradžių nėra matomos. Taip pvz. buvo suskaičiuotas 2 pav. – iš pradžių pasirinkome atsitiktinę įvesti (mygtukas „Apgyvendinti“). Toliau suskaičiavome visas matomas kartas (mygtukas „Pradėk“) ir pasidarėme gardelės nuotrauką. Po šių veiksmų spustelėję mygtuką „Iteracija“ atvėrėme galimybę pamatyti vėlesnes ląstelių kartas ir jas apskaičiavome (vėl mygtukas „Pradėk). Na, o galiausiai padarėme antrą gardelės nuotrauką ir grafikos redagavimo programų pagalba apjungėme jas į tai ką matome 2 pav..

Aukščiau šio užrašo Jūs turėtumėte matyti Java naršyklės programėlę. Jei jos nematote, patikrinkite ar turite įsidiegę JRE ir ar Jūsų naršyklėje Java yra įjungta. Taip pat įsitikinkite ar turite naujausią prieinamą JRE versiją. Naujausią JRE versiją galima parsisiųsti iš http://java.com/getjava.

Palikti atsiliepimą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

Galite naudoti šias HTML žymas ir atributus: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Paveikslėlis su užduotimi