Projekt 3 (Automaty komórkowe)

Transkrypt

Projekt 3 (Automaty komórkowe)
Dr Mirek Łątka
Programowanie w C
Wiosna 2011
Projekt 3 (Automaty komórkowe)
Rozważmy jednowymiarową tablicę, której elementy mogą być zerami lub jedynkami, oraz jej
interptetację graficzną.
O jedynkach będziemy mówili jako o żywych komórkach. Powyższa tablica to stan początkowy
populacji komórek. Naszym zadaniem będzie generowanie kolejnych pokoleń komórek. O tym czy w
następnym pokoleniu dany element tablicy będzie jedynką lub zerem (komórka będzie żywa lub nie)
decyduje tylko stan samej komórki oraz jej najbliższych sąsiadów w poprzednim pokoleniu. Po
krótkiej analizie przekonasz się, że komórka oraz jej najbliżsi sąsiedzi mogą znajdować się w jednym z
8 stanów:
111 110 101 100 011 010 001 000
Stany te możemy interpretować jako liczby zapisane w notacji binarnej.
Na przykład 111 to 1• 22+ 1• 21+ 1• 20=7, 110 to 1• 22+ 1• 21+ 0• 20=6, 101 to 1• 22+ 0• 21+ 1• 20=5.
Tak więc możliwe stany to liczby dziesiętne od 7 do zera.
Ewolucja początkowej populacji komórek zależy od wyboru reguły ewolucji. Oto przykład jednej z
256 takich reguł (udowodnij, że rzeczywiście jest tylko 256 takich możliwości):
Obecny stan komórki 111 110 101 100 011 010 001 000
i jej otoczenia
Nowy stan komórki
i jej graficzna ilustracja
0
0
0
1
1
1
1
0
Jeżeli tą regułę znowu potraktujemy jako liczbę w systemie dwójkowym to:
000111102= 0• 27+ 0• 26+ 0• 25+ 1• 24+ 1• 23+ 1• 22+ 1• 21+ 0• 20= 3010
dlatego nazywamy ją często regułą 30.
Napisz program, który w oknie graficznym biblioteki Allegro wyświetla ewolucję jednowymiarowego
opisanego automatu komórkowego. Obliczenia rozpocznij od reguły 30. Niech rozmiar tablicy będzie
N=31. Stan początkowy to jedna żywa komórka umieszczona w środku tablicy.
Na poniższym rysunku pokazano najbliższych sąsiadów (kolor czerwony) komórek znajdujących się na
początku lub końcu tablicy (kolor zielony).
W fizyce ciała stałego taki schemat nazywamy periodycznymi warunkami brzegowymi.