Przejdź do zawartości

Automat komórkowy

Z Wikipedii, wolnej encyklopedii

Automat komórkowy – system składający się z pojedynczych komórek, sąsiadujących ze sobą według pewnego ustalonego wzorca. Każda z komórek może przyjąć jeden ze stanów, przy czym liczba stanów jest skończona, ale dowolnie duża. Stan komórki zmieniany jest synchronicznie zgodnie z regułami mówiącymi, w jaki sposób nowy stan komórki zależy od jej obecnego stanu i stanu jej sąsiadów[1].

Automaty komórkowe, których struktury opisane są przez siatkę komórek oraz ich stany, przejścia i reguły tych przejść, są modelami matematycznymi. Tworzą one środowisko dla większych dyskretnych klas modeli, ponieważ wszystkie opisujące je struktury przyjmują wartości dyskretne.

Każdy automat komórkowy składa się z -wymiarowej regularnej, dyskretnej siatki komórek, każda komórka jest taka sama (jest kopią poprzedniej), cała przestrzeń siatki musi być zajmowana w całości przez komórki ułożone obok siebie. Każda z nich posiada jeden stan ze skończonego zbioru stanów. Ewolucja każdej komórki przebiega według tych samych ściśle określonych reguł lokalnych (jednorodność), które zależą wyłącznie od poprzedniego stanu komórki oraz od stanów skończonej liczby komórek-sąsiadów. Ewolucja następuje w dyskretnych przedziałach czasowych, jednocześnie dla każdej komórki (równoległość). W automacie komórkowym komórka jest automatem.

Definicja formalna

[edytuj | edytuj kod]

Jeżeli przez oznaczymy regularną, uporządkowaną siatkę złożoną z jednakowych komórek o budowie zależnej od rozmiaru przestrzeni i od kształtu pojedynczej komórki,
natomiast przez – skończony zbiór stanów, jaki może przyjąć komórka
oraz przez – 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.

Podstawą jego definicji jest dwuwymiarowa, kwadratowa siatka, w której każda komórka jest opisana przez wektor pozycji: gdzie są indeksami kolumn i wierszy siatki. Stan każdej komórki w iteracji jest opisywany przez i może przyjmować wartości binarne 0 i 1. Na automat komórkowy składają się:

  1. regularna siatka o -wymiarowej przestrzeni;
  2. ustawienie początkowe:
zmiennych boolowskich w każdym miejscu siatki;
  1. Reguła która ustala stan w czasie, w następujący sposób:
w którym oznacza komórki należące do skończonego zbioru sąsiadów

Historia

[edytuj | edytuj kod]

Twórcą automatów komórkowych jest jeden z największych myślicieli ery komputerowej, który wprowadził koncepcję samoreprodukcjiJohn von Neumann[2]. Docelowo chciał stworzyć model maszyny samosterującej, tzn. takiej, iż powielałaby ona swoją budowę i przekazywała swoje cechy. Na przełomie lat 40. i 50. Neumann opracował swoją teorię, opierając się na maszynie Turinga[3]. Opracował on pięć modeli samoreplikujących się automatów, których jednak realizacja okazała się zbyt trudna, aż do momentu, gdy zainspirowany pomysłem Stanisława Ulama, wprowadził do swego modelu dyskretny czas i przestrzeń[4].

Konstrukcja

[edytuj | edytuj kod]

Każdy automat odpowiada wyżej wymienionym definicjom. Jego budowa musi się opierać na konkretnych danych. Nie mogą istnieć w jednym automacie dwie komórki, które nie mają wszystkich elementów takich samych (różnią się choćby liczbą sąsiadów). Budowa wszystkich komórek musi być identyczna (muszą mieć tyle samo sąsiadów, takie same zbiory stanów itp.). Budowa elementów automatu może również wpłynąć znacząco na jego jakość.

Siatka automatu komórkowego

[edytuj | edytuj kod]
Automat komórkowy na siatce heksagonalnej

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 jej położenie na siatce.

Istnieją trzy konstrukcyjne czynniki automatu komórkowego, które w zasadniczy sposób wpływają na strukturę siatki:

Sąsiedztwo komórek

[edytuj | edytuj kod]

Sąsiedztwo von Neumanna

[edytuj | edytuj kod]

Jeśli oznaczymy kierunki na zasadzie róży wiatrów: N, S, E, W oraz kierunki pośrednie NW, NE, SE, SW, to sąsiedztwem von Neumanna będzie zbiór czterech komórek: N, S, E, W


Sąsiedztwo von Neumanna


Sąsiedztwo Moore’a

[edytuj | edytuj kod]
 Osobny artykuł: Sąsiedztwo Moore’a.

Posługując się powyższymi oznaczeniami, sąsiedztwem Moore’a będzie zbiór wszystkich ośmiu komórek dookoła komórki centralnej


Sąsiedztwo Moore’a


Sąsiedztwo Moore’a-von Neumanna

[edytuj | edytuj kod]

Jest to połączenie dwóch poprzednich sąsiedztw w jedno.

Sąsiedztwo Margolusa

[edytuj | edytuj kod]

Stosuje się je w automatach do symulacji spadającego piasku, czy też interakcji cząsteczek gazu. Reguły przejścia opierają się na kwadratowych blokach tworzonych przez cztery sąsiadujące komórki. Stany tych sąsiednich komórek zmieniają się jednocześnie, przy czym komórki przyjmują wartości binarne 1 i 0. Tak dzieje się na całej siatce automatu. W następnym kroku reguły są obliczane podobnie, tylko że zmieniają się grupy komórek. Bloki tworzące owe grupy przesuwają się o jeden w prawo i w dół.



Otoczenie Margolusa. Krok pierwszy, drugi i trzeci. Widać zmianę bloków w poszczególnych krokach. Bloki w kroku pierwszym i trzecim obejmują te same komórki.


Warunki brzegowe

[edytuj | edytuj kod]

Periodyczne (przenikające)

[edytuj | edytuj kod]

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. Ten typ przejść bardzo dobrze opisuje nasze otoczenie – środowisko, w którym wszystko również odbywa się na periodycznej przestrzeni, jaką jest torus.

Zamknięte pochłaniające (o stałej wartości).

[edytuj | edytuj kod]

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.

Zamknięte odbijające (o stałej wartości).

[edytuj | edytuj kod]

Warunki brzegowe na krawędzi siatki tworzą barierę, od której symulowane cząstki się odbijają. Stosowane do symulacji zamkniętych przestrzeni doświadczalnych.

Przestrzeń stanów

[edytuj | edytuj kod]

Przestrzeń stanów określamy poprzez zdefiniowanie wartości wybranej ze skończonego zbioru 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ść

[edytuj | edytuj kod]

Reguły przejść określają ewolucję automatu komórkowego w dyskretnym czasie. Stany poszczególnych komórek aktualizuje się w każdej dyskretnej chwili 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 w chwili oznaczmy jako a stan sąsiedztwa jako Dla takich kryteriów stan komórki w kolejnym kroku iteracji można opisać wzorem:

gdzie 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ć.

Warunki początkowe

[edytuj | edytuj kod]

Ważnym elementem konstrukcyjnym automatów komórkowych są warunki początkowe, czyli stany poszczególnych komórek w zerowej iteracji, czyli na samym początku. To od ustawienia początkowego komórek 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. Weźmy pod uwagę Heavy triangles, układ ten zaczyna się od jednej komórki uaktywnionej umieszczonej w środku siatki 1D. Przykładowo w Game of Life, 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. Od ustawienia warunków początkowych może również zmienić się przynależność automatu komórkowego do różnych klas Stephena Wolframa – opisanych poniżej. Jednym słowem warunki początkowe danego automatu komórkowego zależą od jego charakteru i problemu – zadania przez niego symulowanego.

Ewolucja automatu komórkowego

[edytuj | edytuj kod]

Po ustaleniu i zdefiniowaniu wszystkich elementów składowych automatu komórkowego można przejść do nakładania reguł na siatkę, czyli aktualizowania jej.

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);
    4. Sprawdzenie liczby 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.
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”).

Zastosowanie

[edytuj | edytuj kod]

Technika automatów komórkowych jest używana do symulacji komputerowych w wielu problemach nauki i techniki. Automaty te dostarczają również wielu zagadnień teorii dynamiki nieliniowej.

Popularne automaty komórkowe

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. automat komórkowy, [w:] Encyklopedia PWN [online], Wydawnictwo Naukowe PWN [dostęp 2021-10-02].
  2. Margaret Ann Boden: Sztuczna inteligencja. Wydawnictwo Uniwersytetu Łódzkiego, 2020, s. 27. ISBN 83-8142-639-1. (pol.).
  3. John von Neumann, The Theory of Self-reproducing Automata, ed. Univ. of Illinois Press (1966), Urbana, IL.
  4. http://www.ftj.agh.edu.pl/~kulakowski/AC/ – Wstęp.

Linki zewnętrzne

[edytuj | edytuj kod]
Polskojęzyczne
Anglojęzyczne