510 likes | 738 Vues
AUTOMATY KOMÓRKOWE - GRA W ŻYCIE. Małgorzata Okrój Natalia Nadratowska MF gr.2. Automaty komórkowe – definicja formalna.
E N D
AUTOMATY KOMÓRKOWE - GRA W ŻYCIE Małgorzata Okrój Natalia Nadratowska MF gr.2
Automaty komórkowe – definicja formalna Jeżeli przez oznaczymy regularną, uporządkowaną siatkę złożoną z jednakowych komórek c o budowie zależnej od rozmiaru przestrzeni i od kształtu pojedynczej komórki, natomiast przez S – skończony zbiór stanów, jaki może przyjąć komórka c, oraz przez N – skończony zbiór sąsiadów, spełniający warunek: A funkcję przejścia definiującą reguły ewolucji automatu w kolejnych krokach oraz dynamikę tych przejść zapiszemy jako: to automat komórkowy definiujemy jako czwórkę: Aby opis automatu komórkowego był pełny, niezbędne jest określenie warunków brzegowych i początkowych.
Historia Twórcą automatów komórkowych jest jeden z największych myślicieli ery komputerowej, który wprowadził koncepcję samo-reprodukcji – John von Neuman. Docelowo chciał stworzyć model maszyny samosterującej, tzn. takiej, iż powielałaby ona swoją budowę i przekazywała swoje cechy. Na przełomie lat czterdziestych i pięćdziesiątych Neumann opracował swoją teorię opierając się na maszynie Turinga. Opracował on pięć modeli samo-replikujących się automatów, realizacja okazała się zbyt trudna jak na owe czasy. Pracami Neumanna zainteresował się dopiero Edgar-Frank Codd, który uczynił automaty możliwymi do wykorzystania. Codd zaprojektował automat komórkowy, który mógł obliczyć wszystkie możliwe funkcje i który mógł się rozmnażać. Jednak mimo, że ten projekt zawierał o wiele prostszą koncepcję od pomysłu von Neumanna, również nie został zrealizowany. Posłużył natomiast do skonstruowania powszechnie stosowanej Gry w życie. Mimo że w obu przypadkach brakowało realizacji projektów, prace obu teoretyków uważa się za fundamenty powstania automatów komórkowych.
Podział automatów komórkowych według Wolframa Klasa I: Automaty niezmienne – ewoluują do czasu, kiedy wszystkie komórki osiągną identyczny stan niezależnie od stanu początkowego (zbieżne). Klasa II: Automaty ewoluujące do stanu stabilnego lub okresowych wzorców(okresowe). Klasa III: Automaty wykazujące nieporządek zarówno lokalnie jak i globalnie, nie wykazujące żadnego wzorca (chaotyczne). Klasa IV: Automaty wykazujące bardziej złożone, długotrwałe zachowanie („żywe").
Siatka automatu komórkowego Każdy automat posiada przestrzeń, w której następuje jego ewolucja. Z definicji automatu taką przestrzeń tworzą jednakowe komórki, a nazywamy ją siatką α. Każda komórka przechowuje swój stan – zależny od przestrzeni stanów. Komórki różnią się, są niezależne oraz każdą komórkę można jednoznacznie zidentyfikować poprzez położenie na siatce. Istnieją trzy konstrukcyjne czynniki automatu komórkowego, które w zasadniczy sposób wpływają na strukturę siatki: • wymiar przestrzeni, zależny od wielkości badanego modelu (1D,2D,3D,nD); • warunek regularności, mówiący o całkowitym zapełnieniu siatki przez • jednakowe komórki (komórki trójkątne, kwadratowe, heksagonalne, • sześcienne itp. dla nD); - liczba sąsiadów
Warunki brzegowe Periodyczne (przenikające) Definiują one zamkniętą siatkę w taki sposób, że np. symulując poruszającą się cząstkę po dojściu do krawędzi pojawi się ona z drugiej strony. Komórka znajdująca się na brzegu siatki ma za sąsiada komórkę leżącą po drugiej stronie siatki. Zamknięte pochłaniające (o stałej wartości) Siatka jest zdefiniowana w taki sposób, że brzegi siatki wypełnione są z góry ustaloną wartością, która poprzez funkcję przejścia ustala wpływ na zachowanie automatu. W praktyce, symulując np. cząstkę gazu, po przekroczeniu krawędzi siatki przestaje ona istnieć. Najczęściej stosuje się je w automatach, w których generuje się automatycznie komórki i niezbędna jest ich redukcja, aby nie zagęścić liczby komórek w automacie.
Warunki brzegowe Zamknięte odbijające (o stałej wartości) Warunki brzegowe na krawędzi siatki tworzą barierę, od której symulowane cząstki się odbijają. Stosowane do symulacji zamkniętych przestrzeni doświadczalnych.
Warunki początkowe Ważnym elementem konstrukcyjnym automatów komórkowych są warunki początkowe, czyli stany poszczególnych komórek w zerowej iteracji. To od ustawienia początkowego zależy dalsza ewolucja automatu, jego zachowanie, stan końcowy, tym samym powodzenie całej symulacji. Niektóre automaty komórkowe z założenia muszą mieć w odpowiedni sposób ustalone warunki początkowe. Przykładowo w Grze w życie, to od warunków początkowych zależy czy w efekcie końcowym otrzymamy wszystkie komórki martwe, czy też komórki, które będą żyły w cyklicznych formach, czy też będą do samego końca powstawały chaotycznie. Ustawienie warunków początkowych może również wpływać na przynależność automatu komórkowego do różnych klas Stephena Wolframa. Zatem warunki początkowe danego automatu komórkowego zależą od jego charakteru i problemu, który ma symulować.
Przestrzeń stanów Przestrzeń stanów określamy poprzez zdefiniowanie wartości wybranej ze skończonego zbioru Q, który może być podzbiorem zbiorów podstawowych (np. liczb, liter) lub złożonych (struktury, obiekty). Poprzez przestrzeń stanów opisane zostają wszystkie możliwe stany komórki. Stan komórki zależy od aktualnych stanów komórek z otoczenia, jak i komórka swoim stanem wpływa bezpośrednio na stany swoich sąsiadów. Od dobrego określenia przestrzeni stanów zależy szybkość automatu komórkowego, jak i jego podstawowe cechy charakterystyczne.
Reguły przejść Reguły przejść określają ewolucją automatu komórkowego w dyskretnym czasie. Stany poszczególnych komórek aktualizuje się w każdej dyskretnej chwili t=1,2,3,... Tym samym każdy automat komórkowy jest obiektem dynamicznym w czasie. Jak już wcześniej wspomniano, stan każdej komórki można określić na podstawie aktualnych stanów komórek sąsiednich. Stan komórki z w chwili t oznaczamy jako xt , a stan sąsiedztwa jako u(xt). Dla takich kryteriów stan komórki x w kolejnym kroku iteracji można opisać wzorem: Gdzie f określa funkcję przejścia, która może być opisana różnego rodzaju zależnościami, np. jako tabela przejść, w postaci algorytmicznej lub jako zbiór reguł. Reguły przejść muszą być zdefiniowane obok przestrzeni stanów oraz zdefiniowanego sąsiedztwa, ponieważ w innym przypadku automat nie mógłby ewoluować.
Ewolucja automatu komórkowego Cały proces ewolucji automatu można podzielić na kilka części: 1. Stan początkowy – jest to, wspomniane już, ustalenie warunków początkowych. Zwykle są to stany neutralne nie powodujące konfliktów w automacie. 2. Aktualizacja siatki automatu – w każdej iteracji każda z komórek automatu przechodzi przez poniższą sekwencję instrukcji: 1. Sprawdzenie reguł przejść – w tym kroku sprawdzany jest aktualny stan komórki, stany komórek sąsiednich jak i inne parametry automatu; 2. Sprawdzanie sąsiedztwa – bada się, czy któraś z komórek sąsiednich nie wchodzi w stan konfliktu. Jeżeli takie konflikty zaczynają występować, to należy wyeliminować wszystkie istniejące konflikty, według ustalonych wcześniej reguł dla takich przypadków; 3. Sprawdzanie warunków brzegowych – sprawdzane tu są komórki które są na krawędziach siatki. Usuwa się je gdy są zbędne (sąsiedztwo zamknięte pochłaniające) lub tworzy nowe (sąsiedztwo periodyczne);
Ewolucja automatu komórkowego 4. Sprawdzenie ilości iteracji – jeśli jest to automat o skończonym, z góry określonym cyklu życiowym, to w tym kroku sprawdzamy czy może nastąpić koniec ewolucji. Czasami sprawdza się również w tym miejscu czy automat zmienił swój stan i czy przeszedł do stanu stabilnego i nic w nim się już nie zmieni w kolejnych krokach iteracji. 5. Zwiększenie licznika iteracji i przejście do kroku 2.1.
Automaty dwuwymiarowe – Gra w życie Stworzono wiele reguł przejścia definiujących ewolucję dwuwymiarowego automatu komórkowego, jednak najbardziej rozpowszechnione są reguły stworzone przez Conwaya. Gra toczy się na nieskończonej planszy podzielonej na kwadratowe komórki. Każda komórka ma ośmiu sąsiadów. Komórka może znajdować się w jednym z dwóch stanów: 0 ( komórka jest martwa) lub 1 (komórka jest żywa). Stany komórek zmieniają się co jedną iterację. Stan wszystkich komórek w pewnej iteracji jest używany do obliczenia stanu wszystkich komórek w następnej iteracji. Wszystkie komórki zmieniają swój stan w tym samym momencie. Stan komórki w kolejnej iteracji zależy tylko od stanów jej sąsiadów.
Automaty dwuwymiarowe – Gra w życie Reguły ewolucji: • Martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu (rodzi się) • Żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera
Podział struktur • Niezmienne • Statki - Spaceships - Glider ( szybowce ) - Inne statki • Oscylatory - Działa ( guns ) - Dymiące pociągi ( inaczej zwane puffery; puffer train ) - Breedery ( z ang. Rozpłodnik, hodowca ) • Ogrody Edenu
Niezmienne Struktury niezmienne, inaczej stabilne lub statyczne, pozostają identyczne bez względu na krok czasowy (dla każdej żywej komórki spełniony jest warunek przetrwania i dla żadnej spośród martwych nie jest spełniony); najprostsza taka struktura (Block) składa się z 4 żywych komórek. Pojawiają się bardzo często jako produkty końcowe ewolucji struktur. Tworzy się je stosunkowo prosto, istnieją schematy według których można wymyślać nowe tego typu struktury.
Statki - Spaceships Statki zwykle zmieniają się okresowo – choć okresy nie przekraczają najczęściej kilkunastu kroków czasowych, wraz z każdym cyklem przesuwają się o stałą liczbę pól po planszy w określonym kierunku. Najbardziej znanym przykładem takiej struktury, będącym jednocześnie symbolem gry w życie, jest glider (szybowiec)
Glider - szybowiec Glider jest oscylatorem, o okresie długości 4. Może przesuwać się wyłącznie na ukos, pod kątem 45 stopni. Nie istnieją jego modyfikacje, to znaczy, że nie istnieje taki algorytm, który pozwala na dodawanie nowych komórek tak, aby powstające struktury dalej były statkami. Glider często powstaje samoczynnie, jako produkt reakcji, w których olbrzymia liczba komórek ewoluuje w chaotyczny sposób.
Glider - szybowiec Glider jest najważniejszą strukturą gry w życie, ze względu na: - wielkie możliwości tworzenia nowych struktur, nawet bardzo złożonych, poprzez zderzanie ich odpowiedniej ilości w odpowiednim względnym położeniu. - olbrzymią ilość struktur (tzw. dział) będących w stanie produkować glidery (z różnymi częstotliwościami); - kluczowy udział w niemal każdej strukturze obrazującej pewien algorytm, np. poszukiwaniu liczb pierwszych czy generowaniu liczb pseudolosowych oraz tworzonych tylko dla samego efektu.
Inne statki Poza tym znane są także inne statki. Różnią się one od glidera kierunkiem poruszania się (pion lub poziom, zamiast po ukosie) oraz możliwością modyfikacji - poprzez dodawanie komórek w odpowiedni sposób będziemy uzyskiwać kolejne statki. Stosuje się też do nich nazwę Dakota z liczbą określającą ich rozmiar. Bardzo duże Dakoty nie mogą latać samodzielnie, ale mogą w towarzystwie mniejszychstatków.
Oscylatory Oscylatory zmieniają się okresowo, co pewien czas powracają do swojego stanu pierwotnego; najprostsza taka struktura składa się z trzech żywych komórek położonych w jednym rzędzie. Najprostsze z nich dość często pojawiają się jako produkty końcowe ewolucji struktur. Okresy oscylatorów najczęściej przyjmują wartości 2,3,4,6 lub 8, choć w grze w życie znaleziono i takie, których okres wynosi prawie 150000 (!). Większość liczb naturalnych może być długościami okresu oscylatora. Wyjątkami są jednak liczby 19, 23, 31, 37, 38, 41, 43, oraz 53. Nie wiadomo, czy oscylatory dla takich długości okresów istnieją, ale jest bardzo prawdopodobne, że tak jest.
Oscylatory Żabka Krokodyl Blinker (światła uliczne)
Oscylatory - Działa Działa to oscylatory, które co jeden okres "wyrzucają" z siebie jeden statek, który odłącza się i egzystuje samodzielnie. Najwięcej dział generuje glidery, poza tym część jest zdolna do wytwarzania statków kosmicznych. Długość okresu tych struktur waha się od 30 (najprostszy Gosper Glider Gun) aż do kilkudziesięciu tysięcy kroków czasowych.
Oscylatory – Dymiące pociągi Puffery, inaczej puffer trainy – dymiące pociągi są najbardziej efektownymi strukturami gry w życie. Oscylują (o okresie zwykle w okolicach kilkunastu kroków) oraz poruszają się po planszy, a przy tym pozostawiają za sobą cyklicznie inne struktury, które odłączają się i egzystują samodzielnie.
Oscylatory - Breedery Breedery to puffery o bardzo złożonym zachowaniu. Breedery pozostawiają za sobą działa lub nawet inne puffery, jednak jedynym warunkiem określającym czy dany puffer jest breederem, jest kwadratowy przyrost w czasie populacji jego żywych komórek.
Ogrody Edenu Ogrody Edenu formalnie są strukturami plasującymi się w kategorii niestałych, ale zostały wyróżnione ze względu na swoją szczególną właściwość. Są to bowiem układy, które nie mogą powstać w wyniku ewolucji jakiejkolwiek struktury. Jest ich bardzo niewiele, najmniejszy spośród nich składa się z około 100 komórek. Zostały nazwane biblijnymi Ogrodami Edenu, ponieważ nie mają one żadnych poprzedników, z których można do nich trafić. Są poprawnym stanem automatu komórkowego jednak nie są następnikiem żadnego poprawnego stanu.
Ogrody Edenu Wzór mniejszy od dotychczasowego o jedną komórkę (szare zostały usunięte, granatowe – dodane) Do niedawna najmniejszy znany Ogród Edenu.
Modyfikacje reguł Reguły, jakim podlega automat opisywane są często skrótowo w następujący sposób: • przed ukośnikiem umieszcza się te liczby komórek w sąsiedztwie, dla których żywe komórki przeżywają (dla reguły Conwaya będzie to 23); • następnie umieszcza się ukośnik: /; • po ukośniku umieszcza się te liczby komórek w sąsiedztwie, dla których martwe komórki ożywają (dla reguły Conwaya będzie to 3);
Przykłady: Następujące reguły można więc zapisać: • Reguły Conwaya 23/3 • Reguły Trzy Cztery : 34/34. • Chaotyczne diamenty – Diamoeba (5678/35678)
Modyfikacji gry w życie jest zbyt wiele (2^18 = 262144).Tabela zawiera przykładowe reguły wspomniane przez Wolframa oraz kilka innych.
Modyfikacje kształtu komórek Oprócz powszechnie przyjętego podziału płaszczyzny na kwadraty można zastosować także sześciokąt (siatka heksagonalna). Najczęściej stosowaną regułą jest 3/24, jednak nie znaleziono struktur tak interesujących jak w oryginale.
Modyfikacje kolorystyczne • Nie zmieniając reguł automatu, możemy zabarwić część komórek, co da ciekawszy efekt, nie wpłynie jednak na kształt generowanych struktur.
Immigration Żabka w Immigration • Dla żywych komórek dostępne są dwa kolory – zwykle czerwony i żółty. Dla martwych sytuacja się nie zmienia względem oryginału. • Definiując warunki początkowe każdej z komórek przypisujemy jeden kolor. Na każdy z kolorów powinna być zabarwiona przynajmniej jedna komórka, w przeciwnym razie uzyskamy zwykłą grę w życie. • Nowo powstające komórki przyjmują taki kolor, jaki ma większość z ich 3 żywych sąsiadów. • Kolory żywych komórek nie zmieniają się w trakcie gry.
QuadLife Glider gun w QuadLife • Dla żywych komórek dostępne są aż cztery kolory – zwykle czerwony, żółty, zielony i niebieski. Dla martwych sytuacja się nie zmienia względem oryginału. • Definiując warunki początkowe każdej z komórek przypisujemy jeden kolor. Na przynajmniej dwa spośród kolorów powinna być zabarwiona przynajmniej jedna komórka, przeciwnym razie uzyskamy zwykłą grę w życie. • Nowo powstające komórki przyjmują taki kolor, jaki ma większość z ich 3 żywych sąsiadów; jeżeli ma po jednym sąsiedzie z każdego koloru przyjmuje pozostały kolor. • Kolory żywych komórek nie zmieniają się w trakcie gry.
Darwinia Gra w życie pojawiła się jako jedno z intr do gry komputerowej Darwinia • Każda komórka może pozostać żywa najwyżej przez 50 cykli, później umiera. • Poza tym stosowane są klasyczne zasady Conwaya 23/3. • Każda symulacja kończy się śmiercią wszystkich komórek.
Źródła • http://www.wikipedia.pl • http://robert.nowotniak.com/GameOfLife/ • http://home.interserv.com/~mniemiec/lifeterm.htm • http://www.gamedev.pl • http://psoup.math.wisc.edu/mcell/index.html - program do symulacji gry w życie (mcell)