"Gra w życie" Conway'a
"Gra w życie" Conway'a
"Gra w życie" Conway'a jest jednym z najbardziej znanych automatów komórkowych. Jego działanie przebiega według następujących zasad:
-
każda komórka jest żywa lub martwa – czyli może występować w jednym z dwóch stanów,
-
sąsiedztwo Moore'a – tzn. 8 komórek dookoła,
-
żywa komórka pozostanie żywa w kolejnym kroku, jeżeli ma dokładnie 2 lub 3 sąsiadów,
-
martwa komórka ożyje w kolejnym kroku, jeżeli ma dokładnie 3 sąsiadów.
Regułę tę można zapisać jako 23/3
- przed ukośnikiem podajemy, przy ilu żywych sąsiadach żywe komórki przeżywają,
- po ukośniku podajemy, przy ilu żywych sąsiadach martwe komórki ożywają.
Interesujące formy życia
Dla tego automatu możemy wyróżnić kilka ciekawych form życia:
Glider (ang. szybowiec) jest tzw. oscylatorem – po skończonej liczbie kroków przyjmuje formę izomorficzną ze swoim stanem początkowym.
Blinker i clock są niezmiennikami – w każdej iteracji przyjmują formę izomorficzną ze swoimi stanami początkowymi.
A zatem: każdy niezmiennik jest oscylatorem, ale nie każdy oscylator jest niezmiennikiem.
Poniższy film pokazuje zachowanie glidera, blinkera i clocka w ciągu 50 cykli życia:
Miotacz, to taki rodzaj automatu komórkowego, który produkuje inne (mniejsze) wzory nieskończenie wiele razy. Glider gun (ang. miotacz szybowców) jest najmniejszym miotaczem odkrytym do tej pory – najmniejszym w sensie żywych komórek w stanie początkowym oraz swoich rozmiarów: wysokości i szerokości. Działa on nastepująco:
Bardzo widowiskowymi oscylatorami są też motyl i fontanna:
Zadanie (1)
Rozpakuj katalog graWZycie.zip i umieść jego zawartość w katalogu roboczym MATLABa . Przeczytaj dokładnie treść skryptu conway.m a także treści m-funkcji fPoliczSasiadow.m i fWczytajZycie.m.
a) prześledź nowe polecenia dotyczące wykonywania animacji:
- trzy linijki na początku pliku wybierają sterownik do wyświetlania grafiki (jeżeli pracujesz pod Linuxem, możesz je zakomentować lub wykasować),
- polecenie getframe zapisuje obraz z wykresu do klatki filmu,
- polecenie movie2avi zapisuje film z formatu matlabowego do formatu avi.
Możesz poczytać więcej o tych poleceniach w helpie.
b) Zauważ w jaki sposób załadowano na planszę początkowe formy życia: glider, blinker i clock. Zamiast nich załaduj stan początkowy z pliku gliderGun.txt – możesz go umieścić na planszy w punkcie o współrzędnych (3,3). Nakręcając film ustaw prędkość klatek na sekundę na 12, ustaw liczbę iteracji na 200 i podziwiaj efekty.
c) Zobacz, jaką zawartość mają pliki w katalogu formyZycia i utwórz plik fontanna.txt zawierający dane odpowiednie do narysowania fontanny. Przetestuj zachowanie automatu dla tej formy życia.
d) Zakomentuj linijki ładujące życie z pliku. Zamiast nich wpisz polecenia generujące losową planszę:
zycie = round(rand(rozmiar,rozmiar));
Linijka ta przyda się w innych przykładach.