• Nem Talált Eredményt

animáció: Alakzat, ami ,,vízszintes vonalakat húz''

In document Párhuzamos algoritmusmodellek (Pldal 95-98)

Animation 3.2: The oscillating blinker pattern (periodlength: 2)

3.4. animáció: Alakzat, ami ,,vízszintes vonalakat húz''

Tehát kihaló, stabil, oszcilláló (periodikusan változó), vándorló, illetve korlátlanul növekedő mintázatok is előfordulnak. Sőt vannak olyan formációk is, amik a siklókat ,,el tudják nyelni''. A különböző irányba mozgó siklók ütközése ugyancsak érdekes formációkat hozhat létre. Ezek a különböző alakzatok adták az alapot arra, hogy az életjátékot Turing-gép szimulációra alkalmazzák, és így az életjátékról ugyancsak bizonyították, hogy Turing ekvivalens az elvégezhető számítások tekintetében.

Több olyan árvának nevezett (véges sok élősejtet tartalmazó) alakzat is van, amire nincs olyan alakzat, amiből létrejöhetne az életjátékban. Világos hogy az árvák egyben édenkert konfigurációt is jelentenek, másrészt viszont minden édenkert konfigurációra teljesül, hogy tartalmaz ilyen árva részt. A 3.13. ábrán egy ilyen árvára, illetve segítségével édenkert konfigurációra mutatunk példát.

3.13. ábra - Édenkert konfiguráció.

Az életjátékkal kapcsolatban az Interneten rengeteg minden megtalálható, több külön oldal is foglalkozik vele, szótára van a különbözőképpen viselkedő alakzatoknak stb. Az általunk ismertetett néhány példa inkább csak az érdeklődés felkeltésére elegendő az életjáték univerzumának méretéhez képest.

Végül megjegyezzük, hogy az életjátéknak a klasszikus Conway által leírt változaton kívül több más változata is létezik (a Conway-félét szokás B3S23-mal jelölni, ami azt rövidíti, hogy új élő sejt születéséhez 3 szomszédra van szükség, egy élő sejt túléléséhez pedig 2 vagy 3 szomszédra), ahol a rács szerkezetén, vagy a szabályokon változtatunk.

3.4.3.4.4. Egyéb változatok

A sejtautomatákat a gyakorlatban általában nem végtelen téren működőnek fogjuk fel, hanem csak egy véges térrészre korlátozódik működésük. Szokás vagy bezárni a teret (az egyik oldali szélső cellák szomszédjai a másik oldali szomszédos cellák), így továbbra is homogénnek tekinthető a sejttér. Másik lehetséges megoldás, ha egyszerűen a szélső cellák a nem létező szomszédtól állandó jelet kapnak (pl. mintha ott egy nyugalmi állapotban levő sejt lenne minden időpillanatban). Egyes alkalmazásoknál ezekkel szemben a szélső cellák tudják, hogy ők szélsők, speciális jelet kapnak.

A sejtautomaták szinkronizációjának a problémája tüzelő osztag szinkronizáció néven ismert, és több mint ötven éve foglalkoztatja a kutatókat. A feladat a következő: adott egy véges méretű, egydimenziós sejtautomata a legközelebbi szomszédsággal. A szélső cellákat kivéve minden cella azonos működésű. Kezdetben egy, a bal szélső kivételével minden sejt (katona) nyugalmi állapotban van. A bal oldali szélső cella, a parancsnok a kezdő konfigurációban ,,tüzelj, ha készen állsz'' állapotban van. Ez a jel adja ki a tűzparancsot a szakasznak, viszont mindenki csak a szomszédaival tud kommunikálni, a cél pedig, hogy egyszerre tüzeljenek. Tehát olyan sejtautomatát kell készítenünk, amiben van olyan időpont, hogy minden sejt egyszerre lép ,,tüzelés'' állapotba, és mind ekkor lép először ebbe az állapotba. Az állapothalmaz és az átmenetfüggvény nem függhet attól, hogy hány sejtből áll a rendszer. A kihívás az, hogy minél gyorsabban tüzelő, és minél kevesebb állapotot tartalmazó legyen a rendszer. A standard megoldás az, hogy egy jel elindul a szakasz végére, ahonnan visszapattan, és találkozik egy lassabban (3 lépés alatt egy szomszédnyit) terjedő, de az előzővel egyidejűleg ugyancsak a parancsnok által indított jellel, így megtalálva pl. a középső katonát. A középső katona ugyancsak jelet indít, ami találkozik a parancsnok által indított még lassabb jellel, illetve a jobb szélső katona által, az eredeti jel visszaverésekor indított lassabb jellel, így megtalálva a szakasz negyedénél és háromnegyedénél levő katonákat… Ennek a sortűz problémának többféle változata is ismert és aktívan kutatott.

A sejtautomatákat nyelvek elfogadására is használhatjuk. Ekkor pl. egy egydimenziós sejtautomata kezdő konfigurációja végtelen sok nyugalmi állapot közt tartalmazza az input szót (ahogy pl. a Turing-gépnél is úgy képzeljük a véges inputot el a végtelen szalagon, hogy üres jelek vannak mellette mindkét irányban a végtelenségig). Világos, hogy ilyenkor a sejtautomata állapothalmazának tartalmaznia kell az input ábécé betűit.

Speciálisan megjelölhetjük az input első betűjét tartalmazó cellát, és definiálhatjuk a szó elfogadását azzal, hogy ez a vizsgált cella véges sok lépés után ,,elfogadó állapotba'' kerül-e.

A helyhiány miatt csak röviden említjük meg, hogy vannak kettőnél több dimenziós rendszerek is, illetve általában kettőnél több állapottal rendelkező sejtekből áll a rendszer (ahogy az univerzalitásról szóló résznél is említettük).

A sejtautomaták nagyon jól használhatóak szimulációs alkalmazásokban, illetve a ,,mesterséges élet'' kutatási területhez is közel áll a témakör.

Végül megjegyezzük, hogy több más olyan rokon mechanizmus létezik, amelynek segítségével az úgynevezett képnyelveket, vagyis a 2 vagy magasabb dimenziós nyelveket lehet generálni/elfogadni, mint pl. a kollázs- és tömbnyelvtanok, illetve egyéb, a képfeldolgozáshoz köthető modellek. A modellek egy része ez esetben is párhuzamos.

3.4.5. Összefoglaló kérdések, gyakorlati feladatok

1. Mi a sejtautomata? Miben hasonlít és miben tér el a korábban tárgyalt automata modellektől?

2. Mit jelent az önreprodukció a sejtautomatáknál?

3. Mit lehet sejtautomatákkal kiszámítani?

4. Adja meg a Wolfram-szám fogalmát! Mely automaták leírására alkalmasak ezek?

5. Hogyan osztályozta Wolfram ezeket az automatákat?

6. Adja meg a Conway-féle élet játékot! Miért érdekes ez a sejtautomata modell?

7. Írjon programot, amely tetszőleges Wolfram-számmal adott automata futását szimulálja a képernyőn (tér-idő diagrammal)

- egy darab 1 állapotú sejtből kiindulva;

- véletlen kiindulásból kiindulva;

- a felhasználó által megadott kiindulásból!

8. Adjon meg Wolfram-számot és ehhez olyan kezdő konfigurációt, hogy a kezdő konfigurációt az adott számú automata nem változtatja meg!

9. Adjon meg olyan Wolfram-számot, és hozzá olyan konfigurációt, amely periodikus 2-nél nagyobb periódusidővel!

10. Ellenőrizze a 3.11. ábrát! Miért stabilak ezek az alakzatok?

11. Találjon egyéb stabil alakzatokat az életjátékban!

12. Adjon meg olyan konfigurációt az életjátékban, amely periodikus 2-nél nagyobb periódusidővel!

13. Ellenőrizze, hogy a 3.13. ábrán adott konfiguráció valóban édenkert (írjon programot)!

14. Készítsen sejtautomatát valamely nemhagyományos rács felhasználásával!

3.4.6. Irodalom

S. Bandini, G. Mauri, R. Serra: Cellular automata: From a theoretical parallel computational model to its application to complex systems, Parallel Computing 27 (2001), 539–553.

M. Delorme, J. Mazoyer: Cellular Automata: A Parallel Model, Springer, 1998, 2010.

Drommerné Takács V. (szerk.): Sejtautomaták, Gondolat Kiadó, 1978.

M. Gardner: The Game of Life, Parts I-III., in: Wheels, Life, and other Mathematical Amusements. New York:

W. H. Freeman, 1983.

K. Imai, T. Hori, K. Morita: Self-Reproduction in Three-Dimensional Reversible Cellular Space, Artificial Life 8 (2002), 155–174.

M. Kutrib: Non-deterministic cellular automata and languages, Int. J. General Systems (IJGS) 41 (2012), 555–

568.

K. Morita: Simple Universal One-Dimensional Reversible Cellular Automata, J. Cellular Automata 2 (2007), 159–166.

K. Morita: Computation in reversible cellular automata, Int. J. General Systems 41 (2012), 569–581.

B. Nagy: Generalized triangular grids in digital geometry, Acta Mathematica Academiae Paedagogicae Nyíregyháziensis 20 (2004), 63–78.

In document Párhuzamos algoritmusmodellek (Pldal 95-98)